X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fadapters%2FSetterConfigurationTest.java;h=1d7ec75e3648d35b15842da61f216e07e482a3f4;hb=db8ff5916d378aae57038356dbf2a3d2fbf9deff;hp=2b7bd9187477d85981057caa10d8580edce682e9;hpb=d3f458acc63a8754f4104d0623f8b4af6b708168;p=utils diff --git a/system/general/src/test/java/org/wamblee/system/adapters/SetterConfigurationTest.java b/system/general/src/test/java/org/wamblee/system/adapters/SetterConfigurationTest.java index 2b7bd918..1d7ec75e 100644 --- a/system/general/src/test/java/org/wamblee/system/adapters/SetterConfigurationTest.java +++ b/system/general/src/test/java/org/wamblee/system/adapters/SetterConfigurationTest.java @@ -15,11 +15,14 @@ */ package org.wamblee.system.adapters; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import javax.sql.DataSource; + import org.wamblee.system.core.DefaultProvidedInterface; import org.wamblee.system.core.ProvidedInterface; import org.wamblee.system.core.RequiredInterface; @@ -30,6 +33,7 @@ public class SetterConfigurationTest extends AdapterTestCase { public void testOneSetter() { SetterConfiguration config = new SetterConfiguration(X5.class); + config.initAllSetters(); List required = config.getRequiredInterfaces(); assertEquals(1, required.size()); assertEquals("value", required.get(0).getName()); @@ -37,7 +41,7 @@ public class SetterConfigurationTest extends AdapterTestCase { ProvidedInterface provided = new DefaultProvidedInterface("janse", String.class); required.get(0).setProvider(provided); - provided.publish("hello", _scope); + _scope.publishInterface(provided, "hello"); X5 obj = new X5(); assertNull(obj.getValue()); @@ -48,6 +52,7 @@ public class SetterConfigurationTest extends AdapterTestCase { public void testPrivateSetter() { SetterConfiguration config = new SetterConfiguration(X5.class); config.setNonPublic(true); + config.initAllSetters(); List required = new ArrayList( config.getRequiredInterfaces()); Collections.sort(required, new Comparator() { @@ -64,13 +69,13 @@ public class SetterConfigurationTest extends AdapterTestCase { "janse", String.class); assertTrue(required.get(0).implementedBy(providedString)); required.get(0).setProvider(providedString); - providedString.publish("hello", _scope); + _scope.publishInterface(providedString, "hello"); ProvidedInterface providedInt = new DefaultProvidedInterface("xxx", Integer.class); assertTrue(required.get(1).implementedBy(providedInt)); required.get(1).setProvider(providedInt); - providedInt.publish(100, _scope); + _scope.publishInterface(providedInt, 100); X5 obj = new X5(); assertNull(obj.getValue()); @@ -83,6 +88,7 @@ public class SetterConfigurationTest extends AdapterTestCase { public void testInheritance() { SetterConfiguration config = new SetterConfiguration(X9.class); config.setNonPublic(true); + config.initAllSetters(); List required = new ArrayList( config.getRequiredInterfaces()); Collections.sort(required, new Comparator() { @@ -100,19 +106,19 @@ public class SetterConfigurationTest extends AdapterTestCase { "janse", Boolean.class); assertTrue(required.get(0).implementedBy(providedBoolean)); required.get(0).setProvider(providedBoolean); - providedBoolean.publish(true, _scope); + _scope.publishInterface(providedBoolean, true); ProvidedInterface providedString = new DefaultProvidedInterface( "janse", String.class); assertTrue(required.get(1).implementedBy(providedString)); required.get(1).setProvider(providedString); - providedString.publish("hello", _scope); + _scope.publishInterface(providedString, "hello"); ProvidedInterface providedInt = new DefaultProvidedInterface("xxx", Integer.class); assertTrue(required.get(2).implementedBy(providedInt)); required.get(2).setProvider(providedInt); - providedInt.publish(100, _scope); + _scope.publishInterface(providedInt, 100); X9 obj = new X9(); assertNull(obj.getValue()); @@ -125,7 +131,7 @@ public class SetterConfigurationTest extends AdapterTestCase { } public void testMultipleSetters() { - SetterConfiguration config = new SetterConfiguration(X6.class); + SetterConfiguration config = new SetterConfiguration(X6.class).initAllSetters(); List required = config.getRequiredInterfaces(); Collections.sort(required, new RequiredInterfaceComparator()); assertEquals(2, required.size()); @@ -135,12 +141,12 @@ public class SetterConfigurationTest extends AdapterTestCase { ProvidedInterface provided0 = new DefaultProvidedInterface("janse", String.class); required.get(0).setProvider(provided0); - provided0.publish("hello", _scope); + _scope.publishInterface(provided0, "hello"); ProvidedInterface provided1 = new DefaultProvidedInterface("port", Integer.class); required.get(1).setProvider(provided1); - provided1.publish(10, _scope); + _scope.publishInterface(provided1, 10); X6 obj = new X6(); assertNull(obj.getHost()); @@ -152,7 +158,7 @@ public class SetterConfigurationTest extends AdapterTestCase { } public void testInvokeWrongType() { - final SetterConfiguration config = new SetterConfiguration(X5.class); + final SetterConfiguration config = new SetterConfiguration(X5.class).initAllSetters(); List required = config.getRequiredInterfaces(); assertEquals(1, required.size()); assertEquals("value", required.get(0).getName()); @@ -160,7 +166,7 @@ public class SetterConfigurationTest extends AdapterTestCase { ProvidedInterface provided = new DefaultProvidedInterface("janse", String.class); required.get(0).setProvider(provided); - provided.publish("hello", _scope); + _scope.publishInterface(provided, "hello"); final X6 obj = new X6(); AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { @@ -172,7 +178,7 @@ public class SetterConfigurationTest extends AdapterTestCase { } public void testSetExplicitValue() { - SetterConfiguration config = new SetterConfiguration(X5.class); + SetterConfiguration config = new SetterConfiguration(X5.class).initAllSetters(); config.values("value").setValue(0, "bladibla"); List required = config.getRequiredInterfaces(); @@ -201,7 +207,7 @@ public class SetterConfigurationTest extends AdapterTestCase { assertNull(obj.getPort()); } - public void testAdd() { + public void testAddByName() { SetterConfiguration config = new SetterConfiguration(X6.class); config.clear().add("host"); List required = config.getRequiredInterfaces(); @@ -212,7 +218,7 @@ public class SetterConfigurationTest extends AdapterTestCase { ProvidedInterface provided0 = new DefaultProvidedInterface("janse", String.class); required.get(0).setProvider(provided0); - provided0.publish("hello", _scope); + _scope.publishInterface(provided0, "hello"); X6 obj = new X6(); assertNull(obj.getHost()); @@ -222,6 +228,44 @@ public class SetterConfigurationTest extends AdapterTestCase { assertEquals("hello", obj.getHost()); assertNull(obj.getPort()); } + + public void testAddByType() { + SetterConfiguration config = new SetterConfiguration(X6.class); + config.clear().add(String.class); + List required = config.getRequiredInterfaces(); + Collections.sort(required, new RequiredInterfaceComparator()); + assertEquals(1, required.size()); + assertEquals("host", required.get(0).getName()); + + ProvidedInterface provided0 = new DefaultProvidedInterface("janse", + String.class); + required.get(0).setProvider(provided0); + _scope.publishInterface(provided0, "hello"); + + X6 obj = new X6(); + assertNull(obj.getHost()); + assertNull(obj.getPort()); + + config.inject(_scope, obj); + assertEquals("hello", obj.getHost()); + assertNull(obj.getPort()); + } + + public void testAddPrivate() { + X5 obj = new X5(); + final SetterConfiguration config = new SetterConfiguration(X5.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.add("xyz"); + } + }, IllegalArgumentException.class); + + config.setNonPublic(true); + config.clear(); + config.add("xyz"); + assertEquals(1, config.getRequiredInterfaces().size()); + } public void testAddNonExisting() { final SetterConfiguration config = new SetterConfiguration(X6.class); @@ -233,10 +277,27 @@ public class SetterConfigurationTest extends AdapterTestCase { config.add("bladibla"); } }, IllegalArgumentException.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.add(DataSource.class); + } + }, IllegalArgumentException.class); + } + + public void testAddByTypeNonUnique() { + final SetterConfiguration config = new SetterConfiguration(X11.class); + config.clear(); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.add(String.class); + } + }, IllegalArgumentException.class); } public void testRemove() { - SetterConfiguration config = new SetterConfiguration(X6.class); + SetterConfiguration config = new SetterConfiguration(X6.class).initAllSetters(); config.remove("port"); List required = config.getRequiredInterfaces(); Collections.sort(required, new RequiredInterfaceComparator()); @@ -246,7 +307,7 @@ public class SetterConfigurationTest extends AdapterTestCase { ProvidedInterface provided0 = new DefaultProvidedInterface("janse", String.class); required.get(0).setProvider(provided0); - provided0.publish("hello", _scope); + _scope.publishInterface(provided0, "hello"); X6 obj = new X6(); assertNull(obj.getHost()); @@ -267,4 +328,15 @@ public class SetterConfigurationTest extends AdapterTestCase { } }, IllegalArgumentException.class); } + + public void testOverridingSetters() { + SetterConfiguration config = new SetterConfiguration(X10.class).initAllSetters(); + assertEquals(2, config.getRequiredInterfaces().size()); + List methods = config.getSetters(); + assertEquals(2, methods.size()); + for (Method method: methods) { + assertEquals(X10.class, method.getDeclaringClass()); + } + + } }