package oving5.named; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class NamedComparatorTest { private NamedComparator comparator; private Person1 p1; private Person2 p2; @BeforeEach public void setUp() { comparator = new NamedComparator(); p1 = new Person1("Aleksander", "Vestlund"); p2 = new Person2("Dan Vestlund"); } @Test @DisplayName("Check that people with the same name are equivalent") public void testSameFullName() { assertEquals(0, comparator.compare(p1, p1)); assertEquals(0, comparator.compare(p2, p2)); } @Test @DisplayName("Check that given names are compared when the family names are the same") public void testSameFamilyName() { // Return negative since first givenName is before second assertTrue(comparator.compare(p1, p2) < 0, "Aleksander should come before Dan"); // Return positive since first givenName is after second assertTrue(comparator.compare(p2, p1) > 0, "Dan should come after Aleksander"); } @Test @DisplayName("Check that family names are compared correctly") public void testDifferentFamilyName() { p2.setFamilyName("Bertelsen"); // Return negative since first familyName is before second assertTrue(comparator.compare(p2, p1) < 0, "Bertelsen should come before Vestlund"); // Return positive since first familyName is after second assertTrue(comparator.compare(p1, p2) > 0, "Vestlund should come after Bertelsen"); } }