/** * {@inheritDoc} */ @Override public int compare(final Object obj1, final Object obj2) { Comparable<?> comparable1 = getComparable(obj1); Comparable<?> comparable2 = getComparable(obj2); return Util.compareAllowNull(comparable1, comparable2); } }
@Test public void testCompare() { // A trivial AbstractComparator implementation AbstractComparator comparator = new AbstractComparator() { @Override protected Comparable getComparable(final Object obj) { return (Comparable) obj; } }; Assert.assertEquals("Nulls should be equal", 0, comparator.compare(null, null)); Assert.assertTrue("Null should be less than non-null", comparator.compare(null, "x") < 0); Assert.assertTrue("Null should be less than non-null", comparator.compare("x", null) > 0); Assert.assertTrue("x is less than y", comparator.compare("x", "y") < 0); Assert.assertTrue("x is less than y", comparator.compare("y", "x") > 0); Assert.assertEquals("Equal objects should be equal", 0, comparator.compare("x", "x")); } }