File size: 2,434 Bytes
486ed05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# tests/test_name_assembler.py
# Run with: pytest tests/ -v

import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from spacyNER.name_assembler import assemble_name, split_full_name


# ── assemble_name tests ────────────────────────────────────

def test_assemble_full_name():
    result = assemble_name("Juan", "dela Cruz", "Santos")
    assert result == "Juan dela Cruz Santos"

def test_assemble_no_middle():
    result = assemble_name("Maria", None, "Reyes")
    assert result == "Maria Reyes"

def test_assemble_empty_middle():
    result = assemble_name("Carlos", "", "Mendoza")
    assert result == "Carlos Mendoza"

def test_assemble_all_none():
    result = assemble_name(None, None, None)
    assert result == ""

def test_assemble_strips_whitespace():
    result = assemble_name("  Juan  ", "  dela Cruz  ", "  Santos  ")
    assert result == "Juan dela Cruz Santos"

def test_assemble_first_only():
    result = assemble_name("Jose", None, None)
    assert result == "Jose"

def test_assemble_last_only():
    result = assemble_name(None, None, "Ramos")
    assert result == "Ramos"


# ── split_full_name tests ──────────────────────────────────

def test_split_three_words():
    first, middle, last = split_full_name("Juan dela Santos")
    assert first == "Juan"
    assert middle == "dela"
    assert last == "Santos"

def test_split_four_words():
    first, middle, last = split_full_name("Juan dela Cruz Santos")
    assert first == "Juan"
    assert middle == "dela Cruz"
    assert last == "Santos"

def test_split_two_words():
    first, middle, last = split_full_name("Maria Reyes")
    assert first == "Maria"
    assert middle is None
    assert last == "Reyes"

def test_split_one_word():
    first, middle, last = split_full_name("Carlos")
    assert first == "Carlos"
    assert middle is None
    assert last is None

def test_split_empty():
    first, middle, last = split_full_name("")
    assert first is None
    assert middle is None
    assert last is None

def test_roundtrip():
    """Splitting then assembling should give back the original name."""
    name = "Juan dela Cruz Santos"
    first, middle, last = split_full_name(name)
    result = assemble_name(first, middle, last)
    assert result == name