package no.priv.garshol.duke.comparators;
import org.junit.Before;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
public class PersonNameComparatorTest {
private PersonNameComparator comp;
@Before
public void setUp() {
comp = new PersonNameComparator();
}
@Test
public void testEmpty() {
assertEquals(1.0, comp.compare("", ""));
}
@Test
public void testEqual() {
assertEquals(1.0, comp.compare("lars marius garshol", "lars marius garshol"));
}
@Test
public void testNotAtAllEqual() {
assertEquals(0.0, comp.compare("abcde fghij", "lars marius"));
assertEquals(0.0, comp.compare("lars marius", "abcde fghij"));
}
@Test
public void testInitial() {
assertEquals(0.9, comp.compare("lars marius garshol", "lars m. garshol"));
assertEquals(0.9, comp.compare("lars m. garshol", "lars marius garshol"));
}
@Test
public void testInitialWithoutPeriod() {
assertEquals(0.9, comp.compare("lars marius garshol", "lars m garshol"));
assertEquals(0.9, comp.compare("lars m garshol", "lars marius garshol"));
}
@Test
public void testMissingMiddleName() {
assertEquals(0.8, comp.compare("lars marius garshol", "lars garshol"));
assertEquals(0.8, comp.compare("lars garshol", "lars marius garshol"));
}
@Test
public void testMissingInitial() {
assertEquals(0.8, comp.compare("lars garshol", "lars m. garshol"));
assertEquals(0.8, comp.compare("lars m. garshol", "lars garshol"));
}
@Test
public void testMissingLeadingInitial() {
assertEquals(0.8, comp.compare("j. william murdoch", "william murdoch"));
assertEquals(0.8, comp.compare("william murdoch", "j. william murdoch"));
}
@Test
public void testEditDistance() {
assertEquals(0.95, comp.compare("lars marius garshol", "lars marus garshol"));
assertEquals(0.95, comp.compare("lars marus garshol", "lars marius garshol"));
}
@Test
public void testSingleWordDiff() {
assertEquals(0.0, comp.compare("abcde", "lars"));
}
@Test
public void testReversedOrder() {
assertEquals(0.9, comp.compare("zhu bin", "bin zhu"));
}
@Test
public void testOneCharDifference() {
assertEquals(0.95, comp.compare("bernardo cuencagrau",
"bernardo cuenca grau"));
}
@Test
public void testOneCharDifference2() {
assertEquals(0.6, comp.compare("liang du", "liang xu"));
}
@Test
public void testOneCharDifference3() {
assertEquals(0.8, comp.compare("liang gang", "liang wang"));
}
@Test
public void testShortenedGivenName() {
assertEquals(0.9, comp.compare("chris welty", "christopher welty"));
}
}