]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/TestName.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / tests / org / cacert / gigi / TestName.java
1 package org.cacert.gigi;
2
3 import static org.junit.Assert.*;
4
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;
11
12 public class TestName extends ClientBusinessTest {
13
14     @Before
15     public void setUp() throws Exception {}
16
17     @Test
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"));
22     }
23
24     /**
25      * Tests fitness for {@link NamePart#equals(Object)}.
26      */
27     @Test
28     public void testNamePartEquals() {
29         NamePart name = new NamePart(NamePartType.FIRST_NAME, "fn");
30         assertFalse(name.equals(null));
31         assertFalse(name.equals("blargh"));
32
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));
39
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));
45
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));
51
52         assertFalse(name.equals("BLA"));
53     }
54
55     @Test
56     public void testNamePartConstructorCheck() {
57         try {
58             new NamePart(null, "a");
59             fail("Exception expected");
60         } catch (IllegalArgumentException e) {
61
62         }
63         try {
64             new NamePart(NamePartType.FIRST_NAME, null);
65             fail("Exception expected");
66         } catch (IllegalArgumentException e) {
67
68         }
69         try {
70             new NamePart(NamePartType.FIRST_NAME, "");
71             fail("Exception expected");
72         } catch (IllegalArgumentException e) {
73
74         }
75     }
76
77     /**
78      * Testing {@link Name#matches(String)}. For multiple first names.
79      */
80     @Test
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"));
83
84         // Having the name "Fir Fir2 Last".
85         // This name requires the Last name to be present and at least one of
86         // the first names.
87
88         // Simple tests...
89         assertTrue(n0.matches("Fir Last"));
90         assertFalse(n0.matches("Fir  Last"));
91         assertFalse(n0.matches("Fir Last "));
92         assertFalse(n0.matches(" Fir Last"));
93
94         // full name
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"));
108
109         assertFalse(n0.matches("Bast"));
110
111         // test the abbreviated name (for e.g in find-RA-Agent-system)
112         assertEquals("Fir L.", n0.toAbbreviatedString());
113     }
114
115     /**
116      * Testing {@link Name#matches(String)} for multiple last-names and a
117      * suffix.
118      */
119     @Test
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"));
122
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"));
128
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"));
134
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"));
141     }
142
143     /**
144      * Testing {@link Name#matches(String)} for multiple last-names and a
145      * suffix.
146      */
147     @Test
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"));
152
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"));
159
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"));
165
166     }
167 }