Config no longer implements Identifiable because this was in violation of the contrac...
[xmlrouter] / impl / src / test / java / org / wamblee / xmlrouter / impl / RobustIdentifiableTest.java
index f8fcd5cbbfb7d28e955481ca2f83fa4150fde3cc..511f583196175a564b5ab64b418818b59469995d 100644 (file)
@@ -21,7 +21,6 @@ import static org.mockito.Mockito.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.wamblee.xmlrouter.common.Id;
-import org.wamblee.xmlrouter.config.ConfigException;
 import org.wamblee.xmlrouter.config.Identifiable;
 
 public class RobustIdentifiableTest {
@@ -37,25 +36,50 @@ public class RobustIdentifiableTest {
     public void testIdIsNull() {
         when(ident.getId()).thenReturn(null);
         RobustIdentifiable<Integer> robust = new RobustIdentifiable<Integer>(
-            "prefix", ident);
+            ident);
     }
 
     @Test(expected = ConfigException.class)
     public void testIdThrowsException() {
         doThrow(new RuntimeException("xxx")).when(ident).getId();
         RobustIdentifiable<Integer> robust = new RobustIdentifiable<Integer>(
-            "prefix", ident);
+            ident);
     }
 
     @Test
     public void testNormalCase() {
         when(ident.getId()).thenReturn(new Id<Integer>("myid"));
         RobustIdentifiable<Integer> robust = new RobustIdentifiable<Integer>(
-            "prefix.", ident);
-        assertEquals("prefix.myid", robust.getId().toString());
+            ident);
+        assertEquals("myid", robust.getId().toString());
 
         // changes later do not have any effect, the id should be immutable.
         when(ident.getId()).thenReturn(new Id<Integer>("myid2"));
-        assertEquals("prefix.myid", robust.getId().toString());
+        assertEquals("myid", robust.getId().toString());
+    }
+
+    @Test
+    public void testEqualsHashCode() {
+        Identifiable<Integer> ident1 = mock(Identifiable.class);
+        Identifiable<Integer> ident2 = mock(Identifiable.class);
+        Identifiable<Integer> ident3 = mock(Identifiable.class);
+
+        when(ident1.getId()).thenReturn(new Id<Integer>("x"));
+        when(ident2.getId()).thenReturn(new Id<Integer>("y"));
+        when(ident3.getId()).thenReturn(new Id<Integer>("x"));
+
+        RobustIdentifiable<Integer> robust1 = new RobustIdentifiable<Integer>(
+            ident1);
+        RobustIdentifiable<Integer> robust2 = new RobustIdentifiable<Integer>(
+            ident2);
+        RobustIdentifiable<Integer> robust3 = new RobustIdentifiable<Integer>(
+            ident3);
+
+        assertEquals(robust1, robust1);
+        assertEquals(robust1, robust3);
+        assertFalse(robust1.equals(robust2));
+        assertFalse(robust1.equals("x"));
+
+        assertEquals(robust1.hashCode(), robust3.hashCode());
     }
 }