X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=tests%2Forg%2Fcacert%2Fgigi%2FTestName.java;h=ba901a8a2a01cb23aa4cdee5f1fed5c4fd108c94;hb=485345c765f3c66751d4aad8d5c935e3cbf58cf1;hp=b431166017913ea6688a99033764b7a79ce1be56;hpb=a676f8e4b3fce945db22a3af195e2e63b434c453;p=gigi.git diff --git a/tests/org/cacert/gigi/TestName.java b/tests/org/cacert/gigi/TestName.java index b4311660..ba901a8a 100644 --- a/tests/org/cacert/gigi/TestName.java +++ b/tests/org/cacert/gigi/TestName.java @@ -3,42 +3,165 @@ package org.cacert.gigi; import static org.junit.Assert.*; import org.cacert.gigi.dbObjects.Name; +import org.cacert.gigi.dbObjects.NamePart; +import org.cacert.gigi.dbObjects.NamePart.NamePartType; +import org.cacert.gigi.testUtils.ClientBusinessTest; import org.junit.Before; import org.junit.Test; -public class TestName { - - Name n = new Name("fn", "ln", "mn", "sf"); +public class TestName extends ClientBusinessTest { @Before public void setUp() throws Exception {} @Test - public void testHashCode() { - assertEquals(new Name("fname", "lname", null, null).hashCode(), new Name("fname", "lname", null, null).hashCode()); - assertNotEquals(new Name("fname", "lname", null, null).hashCode(), new Name("fname", "lname", null, "b").hashCode()); - assertNotEquals(new Name("fname", "lname", null, null).hashCode(), new Name("fname", "lname", "b", null).hashCode()); - assertNotEquals(new Name("fname", "lname", null, null).hashCode(), new Name("fname", "name", null, null).hashCode()); - assertNotEquals(new Name("fname", "lname", null, null).hashCode(), new Name("name", "lname", null, null).hashCode()); + public void testNamePartHash() { + assertEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f")); + assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.FIRST_NAME, "f2")); + assertNotEquals(new NamePart(NamePartType.FIRST_NAME, "f"), new NamePart(NamePartType.LAST_NAME, "f")); } + /** + * Tests fitness for {@link NamePart#equals(Object)}. + */ @Test - public void testEqualsObject() { - assertFalse(n.equals(null)); - assertFalse(n.equals("blargh")); - Name nullname = new Name(null, null, null, null); - assertFalse(n.equals(nullname)); - assertFalse(nullname.equals(n)); - assertTrue(nullname.equals(nullname)); - assertTrue(n.equals(n)); + public void testNamePartEquals() { + NamePart name = new NamePart(NamePartType.FIRST_NAME, "fn"); + assertFalse(name.equals(null)); + assertFalse(name.equals("blargh")); + + // namePart that differs in content + NamePart diffContent = new NamePart(NamePartType.FIRST_NAME, "f"); + assertFalse(name.equals(diffContent)); + assertFalse(diffContent.equals(name)); + assertTrue(diffContent.equals(diffContent)); + assertTrue(name.equals(name)); + + // name part that is equal + NamePart same = new NamePart(NamePartType.FIRST_NAME, "fn"); + assertTrue(same.equals(name)); + assertTrue(name.equals(same)); + assertTrue(same.equals(same)); + + // name part that differs in type + NamePart diffType = new NamePart(NamePartType.LAST_NAME, "fn"); + assertFalse(diffType.equals(name)); + assertFalse(name.equals(diffType)); + assertTrue(diffType.equals(diffType)); + + assertFalse(name.equals("BLA")); } @Test - public void testMatches() { - assertTrue(n.matches("fn ln")); - assertTrue(n.matches("fn ln sf")); - assertTrue(n.matches("fn mn ln sf")); - assertFalse(n.matches("blargh")); + public void testNamePartConstructorCheck() { + try { + new NamePart(null, "a"); + fail("Exception expected"); + } catch (IllegalArgumentException e) { + + } + try { + new NamePart(NamePartType.FIRST_NAME, null); + fail("Exception expected"); + } catch (IllegalArgumentException e) { + + } + try { + new NamePart(NamePartType.FIRST_NAME, ""); + fail("Exception expected"); + } catch (IllegalArgumentException e) { + + } } + /** + * Testing {@link Name#matches(String)}. For multiple first names. + */ + @Test + public void testMatches() throws GigiApiException { + Name n0 = new Name(u, new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "Fir2"), new NamePart(NamePartType.LAST_NAME, "Last")); + + // Having the name "Fir Fir2 Last". + // This name requires the Last name to be present and at least one of + // the first names. + + // Simple tests... + assertTrue(n0.matches("Fir Last")); + assertFalse(n0.matches("Fir Last")); + assertFalse(n0.matches("Fir Last ")); + assertFalse(n0.matches(" Fir Last")); + + // full name + assertTrue(n0.matches("Fir Fir2 Last")); + // removing and changing parts + assertTrue(n0.matches("Fir2 Last")); + assertFalse(n0.matches("Fir Bast")); + assertFalse(n0.matches("Fir2 Bast")); + assertFalse(n0.matches("Fir Fir2 Bast")); + // only last-name fails + assertFalse(n0.matches("Last")); + // one-character first-name is not enough + assertFalse(n0.matches("F. Last")); + assertFalse(n0.matches("E. Last")); + assertFalse(n0.matches("E Last")); + assertFalse(n0.matches("F Last")); + + assertFalse(n0.matches("Bast")); + + // test the abbreviated name (for e.g in find-RA-Agent-system) + assertEquals("Fir L.", n0.toAbbreviatedString()); + } + + /** + * Testing {@link Name#matches(String)} for multiple last-names and a + * suffix. + */ + @Test + public void testMatchesLNSuf() throws GigiApiException { + 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")); + + // leaving stuff out in order + assertTrue(n0.matches("Fir Last")); + assertTrue(n0.matches("Fir Last Last2")); + assertTrue(n0.matches("Fir Last Last2 Suff")); + assertTrue(n0.matches("Fir Last Suff")); + + // omitting primary last name + assertFalse(n0.matches("Fir")); + assertFalse(n0.matches("Fir Last2")); + assertFalse(n0.matches("Fir Last2 Suff")); + assertFalse(n0.matches("Fir Suff")); + + // bringing things out of order + assertFalse(n0.matches("Fir Last Suff Last2")); + assertFalse(n0.matches("Fir Suff Last Last2")); + assertFalse(n0.matches("Fir Suff Last")); + assertFalse(n0.matches("Fir Last2 Last")); + assertFalse(n0.matches("Fir Last2 Last Suff")); + } + + /** + * Testing {@link Name#matches(String)} for multiple last-names and a + * suffix. + */ + @Test + public void testMatchesDoubleNameParts() throws GigiApiException { + Name name = new Name(u, // + new NamePart(NamePartType.FIRST_NAME, "A"), new NamePart(NamePartType.FIRST_NAME, "Fir"), new NamePart(NamePartType.FIRST_NAME, "A"),// + new NamePart(NamePartType.LAST_NAME, "A"), new NamePart(NamePartType.LAST_NAME, "Last"), new NamePart(NamePartType.LAST_NAME, "A")); + + assertTrue(name.matches("A A")); + assertTrue(name.matches("Fir A")); + assertTrue(name.matches("A A Last")); + assertTrue(name.matches("A A A")); + assertTrue(name.matches("Fir A A A")); + assertTrue(name.matches("Fir A A A A")); + + assertFalse(name.matches("A Last")); + assertFalse(name.matches("Last A")); + assertFalse(name.matches("Last A Last")); + assertFalse(name.matches("Fir Last")); + assertFalse(name.matches("Fir A A A A A")); + + } }