]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/TestName.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / tests / club / wpia / gigi / TestName.java
1 package club.wpia.gigi;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Before;
6 import org.junit.Test;
7
8 import club.wpia.gigi.dbObjects.Name;
9 import club.wpia.gigi.dbObjects.NamePart;
10 import club.wpia.gigi.dbObjects.NamePart.NamePartType;
11 import club.wpia.gigi.testUtils.ClientBusinessTest;
12
13 public class TestName extends ClientBusinessTest {
14
15     @Before
16     public void setUp() throws Exception {}
17
18     @Test
19     public void testNamePartHash() {
20         assertEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f"));
21         assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f2"));
22         assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.LAST_NAME, "f"));
23     }
24
25     /**
26      * Tests fitness for {@link NamePart#equals(Object)}.
27      */
28     @Test
29     public void testNamePartEquals() {
30         NamePart name = new NamePart(NamePartType.FIRST_NAME, "fn");
31         assertFalse(name.equals(null));
32         assertFalse(name.equals("blargh"));
33
34         // namePart that differs in content
35         NamePart diffContent = new NamePart(NamePartType.FIRST_NAME, "f");
36         assertFalse(name.equals(diffContent));
37         assertFalse(diffContent.equals(name));
38         assertTrue(diffContent.equals(diffContent));
39         assertTrue(name.equals(name));
40
41         // name part that is equal
42         NamePart same = new NamePart(NamePartType.FIRST_NAME, "fn");
43         assertTrue(same.equals(name));
44         assertTrue(name.equals(same));
45         assertTrue(same.equals(same));
46
47         // name part that differs in type
48         NamePart diffType = new NamePart(NamePartType.LAST_NAME, "fn");
49         assertFalse(diffType.equals(name));
50         assertFalse(name.equals(diffType));
51         assertTrue(diffType.equals(diffType));
52
53         assertFalse(name.equals("BLA"));
54     }
55
56     @Test
57     public void testNamePartConstructorCheck() {
58         try {
59             new NamePart(null, "a");
60             fail("Exception expected");
61         } catch (IllegalArgumentException e) {
62
63         }
64         try {
65             new NamePart(NamePartType.FIRST_NAME, null);
66             fail("Exception expected");
67         } catch (IllegalArgumentException e) {
68
69         }
70         try {
71             new NamePart(NamePartType.FIRST_NAME, "");
72             fail("Exception expected");
73         } catch (IllegalArgumentException e) {
74
75         }
76     }
77
78     /**
79      * Testing {@link Name#matches(String)}. For multiple first names.
80      */
81     @Test
82     public void testMatches() throws GigiApiException {
83         Name n0 = new Name(u, new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "Fir2"), new NamePart(NamePartType.LAST_NAME, "Last"));
84
85         // Having the name "Fir Fir2 Last".
86         // This name requires the Last name to be present and at least one of
87         // the first names.
88
89         // Simple tests...
90         assertTrue(n0.matches("Fir Last"));
91         assertFalse(n0.matches("Fir  Last"));
92         assertFalse(n0.matches("Fir Last "));
93         assertFalse(n0.matches(" Fir Last"));
94
95         // full name
96         assertTrue(n0.matches("Fir Fir2 Last"));
97         // removing and changing parts
98         assertTrue(n0.matches("Fir2 Last"));
99         assertFalse(n0.matches("Fir Bast"));
100         assertFalse(n0.matches("Fir2 Bast"));
101         assertFalse(n0.matches("Fir Fir2 Bast"));
102         // only last-name fails
103         assertFalse(n0.matches("Last"));
104         // one-character first-name is not enough
105         assertFalse(n0.matches("F. Last"));
106         assertFalse(n0.matches("E. Last"));
107         assertFalse(n0.matches("E Last"));
108         assertFalse(n0.matches("F Last"));
109
110         assertFalse(n0.matches("Bast"));
111
112         // test the abbreviated name (for e.g in find-RA-Agent-system)
113         assertEquals("Fir L.", n0.toAbbreviatedString());
114     }
115
116     /**
117      * Testing {@link Name#matches(String)} for multiple last-names and a
118      * suffix.
119      */
120     @Test
121     public void testMatchesLNSuf() throws GigiApiException {
122         Name n0 = new Name(u, new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.LAST_NAME, "Last"), new NamePart(NamePartType.LAST_NAME, "Last2"), new NamePart(NamePartType.SUFFIX, "Suff"));
123
124         // leaving stuff out in order
125         assertTrue(n0.matches("Fir Last"));
126         assertTrue(n0.matches("Fir Last Last2"));
127         assertTrue(n0.matches("Fir Last Last2 Suff"));
128         assertTrue(n0.matches("Fir Last Suff"));
129
130         // omitting primary last name
131         assertFalse(n0.matches("Fir"));
132         assertFalse(n0.matches("Fir Last2"));
133         assertFalse(n0.matches("Fir Last2 Suff"));
134         assertFalse(n0.matches("Fir Suff"));
135
136         // bringing things out of order
137         assertFalse(n0.matches("Fir Last Suff Last2"));
138         assertFalse(n0.matches("Fir Suff Last Last2"));
139         assertFalse(n0.matches("Fir Suff Last"));
140         assertFalse(n0.matches("Fir Last2 Last"));
141         assertFalse(n0.matches("Fir Last2 Last Suff"));
142     }
143
144     /**
145      * Testing {@link Name#matches(String)} for multiple last-names and a
146      * suffix.
147      */
148     @Test
149     public void testMatchesDoubleNameParts() throws GigiApiException {
150         Name name = new Name(u, //
151                 new NamePart(NamePartType.FIRST_NAME, "A"), new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "A"),//
152                 new NamePart(NamePartType.LAST_NAME, "A"), new NamePart(NamePartType.LAST_NAME, "Last"), new NamePart(NamePartType.LAST_NAME, "A"));
153
154         assertTrue(name.matches("A A"));
155         assertTrue(name.matches("Fir A"));
156         assertTrue(name.matches("A A Last"));
157         assertTrue(name.matches("A A A"));
158         assertTrue(name.matches("Fir A A A"));
159         assertTrue(name.matches("Fir A A A A"));
160
161         assertFalse(name.matches("A Last"));
162         assertFalse(name.matches("Last A"));
163         assertFalse(name.matches("Last A Last"));
164         assertFalse(name.matches("Fir Last"));
165         assertFalse(name.matches("Fir A A A A A"));
166
167     }
168 }