Filling out ReverseComparator testing

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1160015 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java b/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java
index ad417d6..b946b92 100644
--- a/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java
+++ b/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java
@@ -49,4 +49,39 @@
         assertTrue("Comparison wasn't reversed", rc.compare( "aardvark", "baa" ) > 0 );
     }
 
+    @Test
+    public void testTwoCallsCancel() {
+        ReverseComparator rc = new ReverseComparator(new ReverseComparator());
+
+        // back to front tests
+        assertTrue("Reversal wasn't cancelled out", rc.compare( 1, 2 ) < 0 );
+        assertTrue("Reversal wasn't cancelled out", rc.compare( 2, 1 ) > 0 );
+        assertTrue("Reversal wasn't cancelled out", rc.compare( "aardvark", "baa" ) < 0 );
+        assertTrue("Reversal wasn't cancelled out", rc.compare( "baa", "aardvark" ) > 0 );
+    }
+
+    @Test
+    public void testEquality() {
+        ReverseComparator rc1 = new ReverseComparator();
+        ReverseComparator rc2 = new ReverseComparator(rc1);
+        ReverseComparator rc3 = new ReverseComparator(rc1);
+
+        // test same instance
+        assertTrue("Same instance wasn't equal", rc1.equals(rc1));
+        assertEquals("Equal instance has different hash code", rc1.hashCode(), rc1.hashCode());
+
+        // test null not equal
+        assertFalse("Null was equal", rc1.equals(null));
+
+        // test diff subcomparator not equal
+        assertFalse("Was equal despite different nested comparators", rc1.equals(rc2));
+
+        // test same subcomparator equal
+        assertTrue("Wasn't equal despite same nested comparator", rc2.equals(rc3));
+        assertEquals("Same subcomparator had different hash code", rc2.hashCode(), rc3.hashCode());
+
+        // test different type not equal
+        assertFalse("Was equal despite not being same class", rc1.equals(this));
+    }
+
 }