1 package club.wpia.gigi;
3 import static org.junit.Assert.*;
5 import org.junit.Before;
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;
13 public class TestName extends ClientBusinessTest {
16 public void setUp() throws Exception {}
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"));
26 * Tests fitness for {@link NamePart#equals(Object)}.
29 public void testNamePartEquals() {
30 NamePart name = new NamePart(NamePartType.FIRST_NAME, "fn");
31 assertFalse(name.equals(null));
32 assertFalse(name.equals("blargh"));
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));
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));
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));
53 assertFalse(name.equals("BLA"));
57 public void testNamePartConstructorCheck() {
59 new NamePart(null, "a");
60 fail("Exception expected");
61 } catch (IllegalArgumentException e) {
65 new NamePart(NamePartType.FIRST_NAME, null);
66 fail("Exception expected");
67 } catch (IllegalArgumentException e) {
71 new NamePart(NamePartType.FIRST_NAME, "");
72 fail("Exception expected");
73 } catch (IllegalArgumentException e) {
79 * Testing {@link Name#matches(String)}. For multiple first names.
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"));
85 // Having the name "Fir Fir2 Last".
86 // This name requires the Last name to be present and at least one of
90 assertTrue(n0.matches("Fir Last"));
91 assertFalse(n0.matches("Fir Last"));
92 assertFalse(n0.matches("Fir Last "));
93 assertFalse(n0.matches(" Fir Last"));
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"));
110 assertFalse(n0.matches("Bast"));
112 // test the abbreviated name (for e.g in find-RA-Agent-system)
113 assertEquals("Fir L.", n0.toAbbreviatedString());
117 * Testing {@link Name#matches(String)} for multiple last-names and a
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"));
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"));
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"));
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"));
145 * Testing {@link Name#matches(String)} for multiple last-names and a
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"));
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"));
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"));