//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.testing; import static org.junit.Assert.*; /** * Helper for testing comparators. * * * */ public class ComparatorTestUtils { private ComparatorTestUtils() { } /** Assert that the two parameters are equal (in hashcode, equals and compareTo). * @param a * @param b */ public static <T extends Comparable<T>> void comparedEqual(T a, T b) { if(a == null && b == null){ return; }else if(a == null || b == null) { fail("Not both null"); }else{ boolean equals = a.equals(b); boolean hashCode = a.hashCode() == b.hashCode(); boolean compareTo = a.compareTo(b) == 0; assertTrue(equals && hashCode && compareTo); } } /** Assert that the two parameters are different (in hashcode, equals and compareTo). * @param a * @param b */ public static <T extends Comparable<T>> void comparedNotEqual(T a, T b) { if(a == null && b == null) { fail("Both null"); }else if(a == null || b == null){ return; //If one is null and the other isn't, they must be not equal }else{ boolean equals = a.equals(b); boolean hashCode = a.hashCode() == b.hashCode(); boolean compareTo = a.compareTo(b) == 0; assertTrue(!equals && !hashCode && !compareTo); } } /** Asserts that lower is less than higher (and that they are not equal, or hashcode). * @param lower * @param higher */ public static <T extends Comparable<T>> void compareOrder(T lower, T higher) { assertFalse(lower.equals(higher)); assertFalse(lower.hashCode() == higher.hashCode()); int l = lower.compareTo(higher); assertTrue(l < 0); int h = higher.compareTo(lower); assertTrue(h > 0); } }