1 package org.cacert.gigi;
3 import static org.junit.Assert.*;
5 import org.cacert.gigi.dbObjects.Name;
6 import org.cacert.gigi.dbObjects.NamePart;
7 import org.cacert.gigi.dbObjects.NamePart.NamePartType;
8 import org.cacert.gigi.testUtils.ClientBusinessTest;
9 import org.junit.Before;
10 import org.junit.Test;
12 public class TestName extends ClientBusinessTest {
15 public void setUp() throws Exception {}
18 public void testNamePartHash() {
19 assertEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f"));
20 assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f2"));
21 assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.LAST_NAME, "f"));
25 * Tests fitness for {@link NamePart#equals(Object)}.
28 public void testNamePartEquals() {
29 NamePart name = new NamePart(NamePartType.FIRST_NAME, "fn");
30 assertFalse(name.equals(null));
31 assertFalse(name.equals("blargh"));
33 // namePart that differs in content
34 NamePart diffContent = new NamePart(NamePartType.FIRST_NAME, "f");
35 assertFalse(name.equals(diffContent));
36 assertFalse(diffContent.equals(name));
37 assertTrue(diffContent.equals(diffContent));
38 assertTrue(name.equals(name));
40 // name part that is equal
41 NamePart same = new NamePart(NamePartType.FIRST_NAME, "fn");
42 assertTrue(same.equals(name));
43 assertTrue(name.equals(same));
44 assertTrue(same.equals(same));
46 // name part that differs in type
47 NamePart diffType = new NamePart(NamePartType.LAST_NAME, "fn");
48 assertFalse(diffType.equals(name));
49 assertFalse(name.equals(diffType));
50 assertTrue(diffType.equals(diffType));
52 assertFalse(name.equals("BLA"));
56 public void testNamePartConstructorCheck() {
58 new NamePart(null, "a");
59 fail("Exception expected");
60 } catch (IllegalArgumentException e) {
64 new NamePart(NamePartType.FIRST_NAME, null);
65 fail("Exception expected");
66 } catch (IllegalArgumentException e) {
70 new NamePart(NamePartType.FIRST_NAME, "");
71 fail("Exception expected");
72 } catch (IllegalArgumentException e) {
78 * Testing {@link Name#matches(String)}. For multiple first names.
81 public void testMatches() throws GigiApiException {
82 Name n0 = new Name(u, new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "Fir2"), new NamePart(NamePartType.LAST_NAME, "Last"));
84 // Having the name "Fir Fir2 Last".
85 // This name requires the Last name to be present and at least one of
89 assertTrue(n0.matches("Fir Last"));
90 assertFalse(n0.matches("Fir Last"));
91 assertFalse(n0.matches("Fir Last "));
92 assertFalse(n0.matches(" Fir Last"));
95 assertTrue(n0.matches("Fir Fir2 Last"));
96 // removing and changing parts
97 assertTrue(n0.matches("Fir2 Last"));
98 assertFalse(n0.matches("Fir Bast"));
99 assertFalse(n0.matches("Fir2 Bast"));
100 assertFalse(n0.matches("Fir Fir2 Bast"));
101 // only last-name fails
102 assertFalse(n0.matches("Last"));
103 // one-character first-name is not enough
104 assertFalse(n0.matches("F. Last"));
105 assertFalse(n0.matches("E. Last"));
106 assertFalse(n0.matches("E Last"));
107 assertFalse(n0.matches("F Last"));
109 assertFalse(n0.matches("Bast"));
111 // test the abbreviated name (for e.g in find-RA-Agent-system)
112 assertEquals("Fir L.", n0.toAbbreviatedString());
116 * Testing {@link Name#matches(String)} for multiple last-names and a
120 public void testMatchesLNSuf() throws GigiApiException {
121 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 // leaving stuff out in order
124 assertTrue(n0.matches("Fir Last"));
125 assertTrue(n0.matches("Fir Last Last2"));
126 assertTrue(n0.matches("Fir Last Last2 Suff"));
127 assertTrue(n0.matches("Fir Last Suff"));
129 // omitting primary last name
130 assertFalse(n0.matches("Fir"));
131 assertFalse(n0.matches("Fir Last2"));
132 assertFalse(n0.matches("Fir Last2 Suff"));
133 assertFalse(n0.matches("Fir Suff"));
135 // bringing things out of order
136 assertFalse(n0.matches("Fir Last Suff Last2"));
137 assertFalse(n0.matches("Fir Suff Last Last2"));
138 assertFalse(n0.matches("Fir Suff Last"));
139 assertFalse(n0.matches("Fir Last2 Last"));
140 assertFalse(n0.matches("Fir Last2 Last Suff"));
144 * Testing {@link Name#matches(String)} for multiple last-names and a
148 public void testMatchesDoubleNameParts() throws GigiApiException {
149 Name name = new Name(u, //
150 new NamePart(NamePartType.FIRST_NAME, "A"), new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "A"),//
151 new NamePart(NamePartType.LAST_NAME, "A"), new NamePart(NamePartType.LAST_NAME, "Last"), new NamePart(NamePartType.LAST_NAME, "A"));
153 assertTrue(name.matches("A A"));
154 assertTrue(name.matches("Fir A"));
155 assertTrue(name.matches("A A Last"));
156 assertTrue(name.matches("A A A"));
157 assertTrue(name.matches("Fir A A A"));
158 assertTrue(name.matches("Fir A A A A"));
160 assertFalse(name.matches("A Last"));
161 assertFalse(name.matches("Last A"));
162 assertFalse(name.matches("Last A Last"));
163 assertFalse(name.matches("Fir Last"));
164 assertFalse(name.matches("Fir A A A A A"));