package edu.stanford.nlp.util; import junit.framework.TestCase; import java.util.Arrays; import java.util.Comparator; import java.util.List; /** * @author Christopher Manning */ public class ComparatorsTest extends TestCase { public void testNullSafeComparator() { Comparator<Integer> comp = Comparators.nullSafeNaturalComparator(); assertEquals(0, comp.compare(null, null)); assertEquals(-1, comp.compare(null, Integer.valueOf(42))); assertEquals(1, comp.compare(Integer.valueOf(42), null)); assertEquals(-1, comp.compare(11, 18)); assertEquals(0, comp.compare(11, 11)); } public void testListComparator() { Comparator<List<String>> lc = Comparators.getListComparator(); String[] one = {"hello", "foo"}; String[] two = {"hi", "foo"}; String[] three = {"hi", "foo", "bar" }; assertTrue(lc.compare(Arrays.asList(one), Arrays.asList(one)) == 0); assertTrue(lc.compare(Arrays.asList(one), Arrays.asList(two)) < 0); assertTrue(lc.compare(Arrays.asList(one), Arrays.asList(three)) < 0); assertTrue(lc.compare(Arrays.asList(three), Arrays.asList(two)) > 0); } private static <C extends Comparable> void compare(C[] a1, C[] a2) { System.out.printf("compare(%s, %s) = %d%n", Arrays.toString(a1), Arrays.toString(a2), ArrayUtils.compareArrays(a1, a2)); } public void testArrayComparator() { Comparator<Boolean[]> ac = Comparators.getArrayComparator(); assertTrue(ac.compare(new Boolean[]{true, false, true,}, new Boolean[]{true, false, true,}) == 0); assertTrue(ac.compare(new Boolean[]{true, false, true,}, new Boolean[]{true, false,}) > 0); assertTrue(ac.compare(new Boolean[]{true, false, true,}, new Boolean[]{true, false, true, false}) < 0); assertTrue(ac.compare(new Boolean[]{false, false, true,}, new Boolean[]{true, false, true,}) < 0); } }