equality based on the ids of the contents of SingleRouterConfig.
[xmlrouter] / impl / src / test / java / org / wamblee / xmlrouter / impl / SingleRouterConfigTest.java
index 6ec16b1b8d5857f7c7eaf9f48eb1a02a0422e586..3df429315aeed8c33bf39eb6ab35078013126807 100644 (file)
@@ -47,7 +47,9 @@ public class SingleRouterConfigTest {
         config.documentTypeConfig().add(type2);
 
         assertEquals(2, config.documentTypeConfig().values().size());
-        assertTrue(config.documentTypeConfig().values().get(0) instanceof RobustDocumentType);
+        Object firstValue = config.documentTypeConfig().values().iterator()
+            .next();
+        assertTrue(firstValue instanceof RobustDocumentType);
     }
 
     @Test
@@ -62,7 +64,9 @@ public class SingleRouterConfigTest {
         config.transformationConfig().add(transformation2);
 
         assertEquals(2, config.transformationConfig().values().size());
-        assertTrue(config.transformationConfig().values().get(0) instanceof RobustTransformation);
+        Object firstValue = config.transformationConfig().values().iterator()
+            .next();
+        assertTrue(firstValue instanceof RobustTransformation);
     }
 
     @Test
@@ -77,6 +81,59 @@ public class SingleRouterConfigTest {
         config.filterConfig().add(filter2);
 
         assertEquals(2, config.filterConfig().values().size());
-        assertTrue(config.filterConfig().values().get(0) instanceof RobustFilter);
+        Object firstValue = config.filterConfig().values().iterator().next();
+        assertTrue(firstValue instanceof RobustFilter);
+    }
+
+    @Test
+    public void testEqualityEmptyConfig() {
+        RouterConfig config1 = new SingleRouterConfig(new Id<RouterConfig>(
+            "routerconfig"));
+        RouterConfig config2 = new SingleRouterConfig(new Id<RouterConfig>(
+            "routerconfig"));
+        assertEquals(config1, config2);
+    }
+
+    @Test
+    public void testEqualsNonEmpty() {
+        RouterConfig config1 = new SingleRouterConfig(new Id<RouterConfig>(
+            "routerconfig"));
+
+        assertFalse(config1.equals(null));
+        assertFalse(config.equals("hello"));
+
+        RouterConfig config2 = new SingleRouterConfig(new Id<RouterConfig>(
+            "routerconfig"));
+        DocumentType type1 = mock(DocumentType.class);
+        when(type1.getId()).thenReturn(new Id<DocumentType>("type1"));
+        DocumentType type2 = mock(DocumentType.class);
+        when(type2.getId()).thenReturn(new Id<DocumentType>("type1"));
+        Filter filter1 = mock(Filter.class);
+        when(filter1.getId()).thenReturn(new Id<Filter>("f1"));
+        Filter filter2 = mock(Filter.class);
+        when(filter2.getId()).thenReturn(new Id<Filter>("f1"));
+        Transformation transformation1 = mock(Transformation.class);
+        when(transformation1.getId()).thenReturn(new Id<Transformation>("t1"));
+        Transformation transformation2 = mock(Transformation.class);
+        when(transformation2.getId()).thenReturn(new Id<Transformation>("t1"));
+
+        config1.documentTypeConfig().add(type1);
+        assertFalse(config1.equals(config2));
+
+        config2.documentTypeConfig().add(type2);
+        assertEquals(config1, config2);
+        assertEquals(config1.hashCode(), config2.hashCode());
+
+        config1.transformationConfig().add(transformation1);
+        config2.transformationConfig().add(transformation2);
+
+        assertEquals(config1, config2);
+        assertEquals(config1.hashCode(), config2.hashCode());
+
+        config1.filterConfig().add(filter1);
+        config2.filterConfig().add(filter2);
+
+        assertEquals(config1, config2);
+        assertEquals(config1.hashCode(), config2.hashCode());
     }
 }