Skip to content

Commit 07b3a81

Browse files
nicoletorresnicoletorres
authored andcommitted
Re-added PersonNameParserCommandTest.
1 parent 43d9d5d commit 07b3a81

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
package org.nameapi.client.services.nameparser.personnameparser;
2+
3+
import com.optimaize.command4j.CommandExecutor;
4+
import com.optimaize.command4j.Mode;
5+
import org.nameapi.client.lib.NameApiRemoteExecutors;
6+
import org.nameapi.client.services.AbstractTest;
7+
import org.nameapi.client.services.FunctionalTestsNameApiModeFactory;
8+
import org.nameapi.client.services.parser.personnameparser.PersonNameParserCommand;
9+
import org.nameapi.ontology5.input.entities.person.LegalInputPerson;
10+
import org.nameapi.ontology5.input.entities.person.LegalInputPersonBuilder;
11+
import org.nameapi.ontology5.input.entities.person.NaturalInputPerson;
12+
import org.nameapi.ontology5.input.entities.person.NaturalInputPersonBuilder;
13+
import org.nameapi.ontology5.input.entities.person.gender.ComputedPersonGender;
14+
import org.nameapi.ontology5.input.entities.person.gender.StoragePersonGender;
15+
import org.nameapi.ontology5.input.entities.person.name.builder.AmericanInputPersonNameBuilder;
16+
import org.nameapi.ontology5.input.entities.person.name.builder.NameBuilders;
17+
import org.nameapi.ontology5.input.entities.person.name.builder.WesternInputPersonNameBuilder;
18+
import org.nameapi.ontology5.output.entities.person.name.OutputPersonName;
19+
import org.nameapi.ontology5.output.entities.person.name.TermType;
20+
import org.nameapi.ontology5.services.parser.personnameparser.DisputeType;
21+
import org.nameapi.ontology5.services.parser.personnameparser.ParsedPerson;
22+
import org.nameapi.ontology5.services.parser.personnameparser.ParsedPersonMatch;
23+
import org.nameapi.ontology5.services.parser.personnameparser.PersonNameParserResult;
24+
import org.testng.annotations.DataProvider;
25+
import org.testng.annotations.Test;
26+
27+
import static org.testng.Assert.assertEquals;
28+
29+
/**
30+
*/
31+
public class PersonNameParserCommandTest extends AbstractTest {
32+
33+
private final CommandExecutor executor = NameApiRemoteExecutors.get();
34+
35+
@Test(dataProvider = "testNaturalPerson_1")
36+
public void testNaturalPerson_1(NaturalInputPerson inputPerson) throws Exception {
37+
PersonNameParserCommand command = new PersonNameParserCommand();
38+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
39+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
40+
ParsedPerson parsedPerson = result.getBestMatch().getParsedPerson();
41+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
42+
assertEquals("Petra", firstName.getFirst(TermType.GIVENNAME).get().getString());
43+
assertEquals("Müller", firstName.getFirst(TermType.SURNAME).get().getString());
44+
assertEquals(parsedPerson.getGender().getGender(), ComputedPersonGender.FEMALE);
45+
}
46+
@DataProvider
47+
protected Object[][] testNaturalPerson_1() {
48+
return new Object[][]{
49+
{new NaturalInputPersonBuilder().name(new WesternInputPersonNameBuilder().fullname("Petra Müller").build()).build()},
50+
{new NaturalInputPersonBuilder().name(new WesternInputPersonNameBuilder().givenName("Petra").surname("Müller").build()).build()}
51+
};
52+
}
53+
54+
@Test
55+
public void testAmericanStyle_1() throws Exception {
56+
NaturalInputPerson inputPerson = new NaturalInputPersonBuilder().name(new AmericanInputPersonNameBuilder()
57+
.prefix("Dr.")
58+
.givenName("Peter")
59+
.middleName("T.")
60+
.surname("Johnson")
61+
.suffix("jr")
62+
.build()).build();
63+
PersonNameParserCommand command = new PersonNameParserCommand();
64+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
65+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
66+
ParsedPerson parsedPerson = result.getBestMatch().getParsedPerson();
67+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
68+
assertEquals("Dr.", firstName.getFirst(TermType.TITLE).get().getString());
69+
assertEquals("Peter", firstName.getFirst(TermType.GIVENNAME).get().getString());
70+
assertEquals("T.", firstName.getFirst(TermType.MIDDLENAME).get().getString()); //TODO will be MIDDLENAMEINITIAL
71+
assertEquals("Johnson", firstName.getFirst(TermType.SURNAME).get().getString());
72+
assertEquals("jr", firstName.getFirst(TermType.QUALIFIER).get().getString());
73+
assertEquals(parsedPerson.getGender().getGender(), ComputedPersonGender.MALE);
74+
}
75+
@Test
76+
public void testAmericanStyle_2() throws Exception {
77+
NaturalInputPerson inputPerson = new NaturalInputPersonBuilder().name(new AmericanInputPersonNameBuilder()
78+
.fullname("Dr. Peter T. Johnson jr")
79+
.build()).build();
80+
PersonNameParserCommand command = new PersonNameParserCommand();
81+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
82+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
83+
ParsedPerson parsedPerson = result.getBestMatch().getParsedPerson();
84+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
85+
assertEquals("Dr.", firstName.getFirst(TermType.TITLE).get().getString());
86+
assertEquals("Peter", firstName.getFirst(TermType.GIVENNAME).get().getString());
87+
//assertEquals("T.", firstName.getFirst(TermType.MIDDLENAME).get().getString()); //currenty GIVENNAMEINITIAL because the client has to send a flag saying he prefers American style names. TODO will be MIDDLENAMEINITIAL
88+
assertEquals("Johnson", firstName.getFirst(TermType.SURNAME).get().getString());
89+
assertEquals("jr", firstName.getFirst(TermType.QUALIFIER).get().getString());
90+
assertEquals(parsedPerson.getGender().getGender(), ComputedPersonGender.MALE);
91+
}
92+
93+
94+
@Test(dataProvider = "testLegalPerson_1")
95+
public void testLegalPerson_1(LegalInputPerson inputPerson) throws Exception {
96+
PersonNameParserCommand command = new PersonNameParserCommand();
97+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
98+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
99+
ParsedPerson parsedPerson = result.getBestMatch().getParsedPerson();
100+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
101+
assertEquals("Google", firstName.getFirst(TermType.BUSINESSNAME).get().getString());
102+
assertEquals("Inc.", firstName.getFirst(TermType.BUSINESSLEGALFORM).get().getString());
103+
}
104+
@DataProvider
105+
protected Object[][] testLegalPerson_1() {
106+
return new Object[][]{
107+
{new LegalInputPersonBuilder().name(NameBuilders.legal().name("Google Inc.").build()).build()},
108+
{new LegalInputPersonBuilder().name(NameBuilders.legal().name("Google").legalForm("Inc.").build()).build()}
109+
};
110+
}
111+
112+
113+
@Test
114+
public void genderDispute() throws Exception {
115+
NaturalInputPerson inputPerson = new NaturalInputPersonBuilder()
116+
.name(new WesternInputPersonNameBuilder().fullname("Petra Müller").build())
117+
.gender(StoragePersonGender.MALE)
118+
.build();
119+
PersonNameParserCommand command = new PersonNameParserCommand();
120+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
121+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
122+
ParsedPersonMatch bestMatch = result.getBestMatch();
123+
124+
ParsedPerson parsedPerson = bestMatch.getParsedPerson();
125+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
126+
assertEquals("Petra", firstName.getFirst(TermType.GIVENNAME).get().getString());
127+
assertEquals("Müller", firstName.getFirst(TermType.SURNAME).get().getString());
128+
129+
assertEquals(parsedPerson.getGender().getGender(), ComputedPersonGender.FEMALE);
130+
assertEquals(bestMatch.getParserDisputes().size(), 1);
131+
assertEquals(bestMatch.getParserDisputes().get(0).getDisputeType(), DisputeType.GENDER);
132+
}
133+
134+
135+
136+
@Test
137+
public void testParseSingleGivenName() throws Exception {
138+
NaturalInputPerson inputPerson = new NaturalInputPersonBuilder().name(new WesternInputPersonNameBuilder().fullname("John").build()).build();
139+
PersonNameParserCommand command = new PersonNameParserCommand();
140+
Mode mode = FunctionalTestsNameApiModeFactory.functionalTest();
141+
PersonNameParserResult result = executor.execute(command, mode, inputPerson).get();
142+
ParsedPerson parsedPerson = result.getBestMatch().getParsedPerson();
143+
OutputPersonName firstName = parsedPerson.getOutputPersonName();
144+
assertEquals("John", firstName.getFirst(TermType.GIVENNAME).get().getString());
145+
assertEquals(parsedPerson.getGender().getGender(), ComputedPersonGender.MALE);
146+
}
147+
148+
}

0 commit comments

Comments
 (0)