equality based on the ids of the contents of SingleRouterConfig.
[xmlrouter] / impl / src / test / java / org / wamblee / xmlrouter / impl / SingleRouterConfigTest.java
index 280e6dac420fb78b05b89a8c2f0ce6c1051bd0c3..3df429315aeed8c33bf39eb6ab35078013126807 100644 (file)
@@ -33,6 +33,7 @@ public class SingleRouterConfigTest {
     @Before
     public void setUp() {
         config = new SingleRouterConfig(new Id<RouterConfig>("routerconfig"));
+        assertEquals("routerconfig", config.getId().getId());
     }
 
     @Test
@@ -40,13 +41,15 @@ public class SingleRouterConfigTest {
         DocumentType type1 = mock(DocumentType.class);
         when(type1.getId()).thenReturn(new Id<DocumentType>("type1"));
         DocumentType type2 = mock(DocumentType.class);
-        when(type1.getId()).thenReturn(new Id<DocumentType>("type2"));
+        when(type2.getId()).thenReturn(new Id<DocumentType>("type2"));
 
         config.documentTypeConfig().add(type1);
         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
@@ -54,14 +57,16 @@ public class SingleRouterConfigTest {
         Transformation transformation1 = mock(Transformation.class);
         when(transformation1.getId()).thenReturn(new Id<Transformation>("t1"));
         Transformation transformation2 = mock(Transformation.class);
-        when(transformation1.getId()).thenReturn(new Id<Transformation>("t2"));
+        when(transformation2.getId()).thenReturn(new Id<Transformation>("t2"));
 
         config.transformationConfig().add(transformation1);
 
         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
@@ -69,13 +74,66 @@ public class SingleRouterConfigTest {
         Filter filter1 = mock(Filter.class);
         when(filter1.getId()).thenReturn(new Id<Filter>("f1"));
         Filter filter2 = mock(Filter.class);
-        when(filter1.getId()).thenReturn(new Id<Filter>("f2"));
+        when(filter2.getId()).thenReturn(new Id<Filter>("f2"));
 
         config.filterConfig().add(filter1);
 
         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());
     }
 }