X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FConfigImplTest.java;h=85860122b71c75bcac18fb61a6b469e000ffb780;hb=5582d07a1ba9821cc789ea63b71f246e89d13cae;hp=5e3ad92059625e3b4b5e1a5152da4ed0e9feefd1;hpb=e52385618670b54a5c6a4f2fbfab381bef43a905;p=xmlrouter diff --git a/impl/src/test/java/org/wamblee/xmlrouter/impl/ConfigImplTest.java b/impl/src/test/java/org/wamblee/xmlrouter/impl/ConfigImplTest.java index 5e3ad92..8586012 100644 --- a/impl/src/test/java/org/wamblee/xmlrouter/impl/ConfigImplTest.java +++ b/impl/src/test/java/org/wamblee/xmlrouter/impl/ConfigImplTest.java @@ -28,14 +28,18 @@ import org.wamblee.xmlrouter.config.Identifiable; public class ConfigImplTest { - private static interface MyType extends Identifiable { + private static final String CONFIG_TYPE = "transformation"; + + private static interface MyType extends Identifiable { } private static class MyTypeWrapper implements MyType { + private String prefix; private MyType type; - public MyTypeWrapper(MyType aType) { + public MyTypeWrapper(String aPrefix, MyType aType) { + prefix = aPrefix; type = aType; } @@ -45,22 +49,32 @@ public class ConfigImplTest { @Override public Id getId() { - return type.getId(); + return new Id(prefix + type.getId().getId()); + } + } + + public static final class MyTypeConfig extends ConfigImpl { + public MyTypeConfig(Id aId) { + super(MyType.class, aId); + } + + public MyTypeConfig(MyTypeConfig aConfig) { + super(aConfig); + } + + @Override + public MyType wrap(String aPrefix, MyType aT) { + return new MyTypeWrapper(aPrefix, aT); } } private AtomicLong sequence; - private ExtendedConfig config; + private MyTypeConfig config; @Before public void setUp() { sequence = new AtomicLong(1L); - config = new ConfigImpl(new Id("mytype")) { - @Override - public MyType wrap(MyType aT) { - return new MyTypeWrapper(aT); - } - }; + config = new MyTypeConfig(new Id(CONFIG_TYPE)); } @Test @@ -71,8 +85,12 @@ public class ConfigImplTest { config.add(type1); assertEquals(1, config.values().size()); - assertTrue(config.values().get(0) instanceof MyTypeWrapper); - assertSame(type1, ((MyTypeWrapper) config.values().get(0)).getType()); + MyType firstValue = config.values().iterator().next(); + + assertTrue(firstValue instanceof MyTypeWrapper); + assertSame(type1, ((MyTypeWrapper) firstValue).getType()); + assertEquals(CONFIG_TYPE + "." + type1.getId().getId(), firstValue + .getId().getId()); // add another one. MyType type2 = mock(MyType.class); @@ -99,4 +117,46 @@ public class ConfigImplTest { public void testUnmodifiable() { config.values().add(mock(MyType.class)); } + + @Test + public void testEquals() { + + Config config1 = new MyTypeConfig(new Id(CONFIG_TYPE)); + assertFalse(config1.equals(null)); + assertFalse(config1.equals("hello")); + Config config2 = new MyTypeConfig(new Id(CONFIG_TYPE)); + + assertEquals(config1, config2); + assertEquals(config1.hashCode(), config2.hashCode()); + + MyType type1 = mock(MyType.class); + when(type1.getId()).thenReturn(new Id("type1")); + + config1.add(type1); + assertFalse(config1.equals(config2)); + + MyType type2 = mock(MyType.class); + when(type2.getId()).thenReturn(new Id("type1")); + + config2.add(type2); + assertEquals(config1, config2); + assertEquals(config1.hashCode(), config2.hashCode()); + + assertTrue(config2.remove(type2.getId())); + assertFalse(config1.equals(config2)); + } + + @Test + public void testCopy() { + testAdd(); + assertEquals(2, config.values().size()); + MyTypeConfig copy = new MyTypeConfig(config); + assertEquals(config.getId(), config.getId()); + assertEquals(config, copy); + + // verify the copy is not shallow + assertTrue(config.remove(new Id("type1"))); + assertEquals(1, config.values().size()); + assertFalse(config.equals(copy)); + } }