equality based on the ids of the contents of SingleRouterConfig.
[xmlrouter] / impl / src / test / java / org / wamblee / xmlrouter / impl / SingleRouterConfigTest.java
index af347372a4fdfdc79fec1bbf38dd543dc53cbe89..3df429315aeed8c33bf39eb6ab35078013126807 100644 (file)
@@ -18,68 +18,122 @@ package org.wamblee.xmlrouter.impl;
 import static junit.framework.Assert.*;
 import static org.mockito.Mockito.*;
 
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.wamblee.xmlrouter.common.Id;
 import org.wamblee.xmlrouter.config.DocumentType;
 import org.wamblee.xmlrouter.config.Filter;
+import org.wamblee.xmlrouter.config.RouterConfig;
 import org.wamblee.xmlrouter.config.Transformation;
 
 public class SingleRouterConfigTest {
 
-    private AtomicLong sequence;
     private ExtendedRouterConfig config;
 
     @Before
     public void setUp() {
-        sequence = new AtomicLong(1L);
-        config = new SingleRouterConfig(sequence);
+        config = new SingleRouterConfig(new Id<RouterConfig>("routerconfig"));
+        assertEquals("routerconfig", config.getId().getId());
     }
 
     @Test
     public void testDocumentType() {
         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>("type2"));
 
-        Id<DocumentType> id1 = config.documentTypeConfig().add(type1);
-
-        Id<DocumentType> id2 = config.documentTypeConfig().add(type2);
-        assertFalse(id1.equals(id2));
-
-        assertEquals(2, config.documentTypeConfig().map().size());
-        assertTrue(config.documentTypeConfig().map().get(id1) instanceof RobustDocumentType);
+        config.documentTypeConfig().add(type1);
+        config.documentTypeConfig().add(type2);
 
+        assertEquals(2, config.documentTypeConfig().values().size());
+        Object firstValue = config.documentTypeConfig().values().iterator()
+            .next();
+        assertTrue(firstValue instanceof RobustDocumentType);
     }
 
     @Test
     public void testTransformation() {
         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>("t2"));
 
-        Id<Transformation> id1 = config.transformationConfig().add(
-            transformation1);
+        config.transformationConfig().add(transformation1);
 
-        Id<Transformation> id2 = config.transformationConfig().add(
-            transformation2);
-        assertFalse(id1.equals(id2));
+        config.transformationConfig().add(transformation2);
 
-        assertEquals(2, config.transformationConfig().map().size());
-        assertTrue(config.transformationConfig().map().get(id1) instanceof RobustTransformation);
+        assertEquals(2, config.transformationConfig().values().size());
+        Object firstValue = config.transformationConfig().values().iterator()
+            .next();
+        assertTrue(firstValue instanceof RobustTransformation);
     }
 
     @Test
     public void testFilter() {
         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>("f2"));
+
+        config.filterConfig().add(filter1);
+
+        config.filterConfig().add(filter2);
+
+        assertEquals(2, config.filterConfig().values().size());
+        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);
 
-        Id<Filter> id1 = config.filterConfig().add(filter1);
+        assertEquals(config1, config2);
+        assertEquals(config1.hashCode(), config2.hashCode());
 
-        Id<Filter> id2 = config.filterConfig().add(filter2);
-        assertFalse(id1.equals(id2));
+        config1.filterConfig().add(filter1);
+        config2.filterConfig().add(filter2);
 
-        assertEquals(2, config.filterConfig().map().size());
-        assertTrue(config.filterConfig().map().get(id1) instanceof RobustFilter);
+        assertEquals(config1, config2);
+        assertEquals(config1.hashCode(), config2.hashCode());
     }
 }