X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fadapters%2FSetterConfigurationTest.java;h=2b7bd9187477d85981057caa10d8580edce682e9;hb=d3f458acc63a8754f4104d0623f8b4af6b708168;hp=ba01f19110fa43e0e57fb9542eb7281b09cc9ea0;hpb=48ade0b677efdb22a4964154c6ab365f1124a483;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 ba01f191..2b7bd918 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 @@ -12,10 +12,12 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.system.adapters; +import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.wamblee.system.core.DefaultProvidedInterface; @@ -26,158 +28,243 @@ import org.wamblee.test.AssertionUtils; public class SetterConfigurationTest extends AdapterTestCase { - public void testOneSetter() { - SetterConfiguration config = new SetterConfiguration(X5.class); - List required = config.getRequiredInterfaces(); - assertEquals(1, required.size()); - assertEquals("value", required.get(0).getName()); - - ProvidedInterface provided = new DefaultProvidedInterface("janse", String.class); - required.get(0).setProvider(provided); - provided.publish("hello", _scope); - - X5 obj = new X5(); - assertNull(obj.getValue()); - config.inject(_scope, obj); - assertEquals("hello", obj.getValue()); - } - - public void testMultipleSetters() { - SetterConfiguration config = new SetterConfiguration(X6.class); - List required = config.getRequiredInterfaces(); - Collections.sort(required, new RequiredInterfaceComparator()); - assertEquals(2, required.size()); - assertEquals("host", required.get(0).getName()); - assertEquals("port", required.get(1).getName()); - - ProvidedInterface provided0 = new DefaultProvidedInterface("janse", String.class); - required.get(0).setProvider(provided0); - provided0.publish("hello", _scope); - - ProvidedInterface provided1 = new DefaultProvidedInterface("port", Integer.class); - required.get(1).setProvider(provided1); - provided1.publish(10, _scope); - - X6 obj = new X6(); - assertNull(obj.getHost()); - assertNull(obj.getPort()); - - config.inject(_scope, obj); - assertEquals("hello", obj.getHost()); - assertEquals(10, obj.getPort().intValue()); - } - - public void testInvokeWrongType() { - final SetterConfiguration config = new SetterConfiguration(X5.class); - List required = config.getRequiredInterfaces(); - assertEquals(1, required.size()); - assertEquals("value", required.get(0).getName()); - - ProvidedInterface provided = new DefaultProvidedInterface("janse", String.class); - required.get(0).setProvider(provided); - provided.publish("hello", _scope); - - final X6 obj = new X6(); - AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { - @Override - public void run() throws Exception { - config.inject(_scope, obj); - } - }, IllegalArgumentException.class); - } - - public void testSetExplicitValue() { - SetterConfiguration config = new SetterConfiguration(X5.class); - config.values("value").setValue(0, "bladibla"); - - List required = config.getRequiredInterfaces(); - assertEquals(0, required.size()); - - X5 obj = new X5(); - assertNull(obj.getValue()); - config.inject(_scope, obj); - assertEquals("bladibla", obj.getValue()); - } - - public void testClear() { - SetterConfiguration config = new SetterConfiguration(X6.class); - config.clear(); - List required = config.getRequiredInterfaces(); - Collections.sort(required, new RequiredInterfaceComparator()); - assertEquals(0, required.size()); - - X6 obj = new X6(); - assertNull(obj.getHost()); - assertNull(obj.getPort()); - - config.inject(_scope, obj); - - assertNull(obj.getHost()); - assertNull(obj.getPort()); - } - - public void testAdd() { - SetterConfiguration config = new SetterConfiguration(X6.class); - config.clear().add("host"); - 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); - provided0.publish("hello", _scope); - - X6 obj = new X6(); - assertNull(obj.getHost()); - assertNull(obj.getPort()); - - config.inject(_scope, obj); - assertEquals("hello", obj.getHost()); - assertNull(obj.getPort()); - } - - public void testAddNonExisting() { - final SetterConfiguration config = new SetterConfiguration(X6.class); - config.clear(); - - AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { - @Override - public void run() throws Exception { - config.add("bladibla"); - } - }, IllegalArgumentException.class); - } - - public void testRemove() { - SetterConfiguration config = new SetterConfiguration(X6.class); - config.remove("port"); - 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); - provided0.publish("hello", _scope); - - X6 obj = new X6(); - assertNull(obj.getHost()); - assertNull(obj.getPort()); - - config.inject(_scope, obj); - assertEquals("hello", obj.getHost()); - assertNull(obj.getPort()); - } - - public void testRemoveNonExisting() { - final SetterConfiguration config = new SetterConfiguration(X6.class); - - AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { - @Override - public void run() throws Exception { - config.remove("bladibla"); - } - }, IllegalArgumentException.class); - } + public void testOneSetter() { + SetterConfiguration config = new SetterConfiguration(X5.class); + List required = config.getRequiredInterfaces(); + assertEquals(1, required.size()); + assertEquals("value", required.get(0).getName()); + + ProvidedInterface provided = new DefaultProvidedInterface("janse", + String.class); + required.get(0).setProvider(provided); + provided.publish("hello", _scope); + + X5 obj = new X5(); + assertNull(obj.getValue()); + config.inject(_scope, obj); + assertEquals("hello", obj.getValue()); + } + + public void testPrivateSetter() { + SetterConfiguration config = new SetterConfiguration(X5.class); + config.setNonPublic(true); + List required = new ArrayList( + config.getRequiredInterfaces()); + Collections.sort(required, new Comparator() { + @Override + public int compare(RequiredInterface aO1, RequiredInterface aO2) { + return aO1.getName().compareTo(aO2.getName()); + } + }); + assertEquals(2, required.size()); + assertEquals("value", required.get(0).getName()); + assertEquals("xyz", required.get(1).getName()); + + ProvidedInterface providedString = new DefaultProvidedInterface( + "janse", String.class); + assertTrue(required.get(0).implementedBy(providedString)); + required.get(0).setProvider(providedString); + providedString.publish("hello", _scope); + + ProvidedInterface providedInt = new DefaultProvidedInterface("xxx", + Integer.class); + assertTrue(required.get(1).implementedBy(providedInt)); + required.get(1).setProvider(providedInt); + providedInt.publish(100, _scope); + + X5 obj = new X5(); + assertNull(obj.getValue()); + assertNull(obj.getXyz()); + config.inject(_scope, obj); + assertEquals("hello", obj.getValue()); + assertEquals(100, obj.getXyz().intValue()); + } + + public void testInheritance() { + SetterConfiguration config = new SetterConfiguration(X9.class); + config.setNonPublic(true); + List required = new ArrayList( + config.getRequiredInterfaces()); + Collections.sort(required, new Comparator() { + @Override + public int compare(RequiredInterface aO1, RequiredInterface aO2) { + return aO1.getName().compareTo(aO2.getName()); + } + }); + assertEquals(3, required.size()); + assertEquals("flag", required.get(0).getName()); + assertEquals("value", required.get(1).getName()); + assertEquals("xyz", required.get(2).getName()); + + ProvidedInterface providedBoolean = new DefaultProvidedInterface( + "janse", Boolean.class); + assertTrue(required.get(0).implementedBy(providedBoolean)); + required.get(0).setProvider(providedBoolean); + providedBoolean.publish(true, _scope); + + ProvidedInterface providedString = new DefaultProvidedInterface( + "janse", String.class); + assertTrue(required.get(1).implementedBy(providedString)); + required.get(1).setProvider(providedString); + providedString.publish("hello", _scope); + + ProvidedInterface providedInt = new DefaultProvidedInterface("xxx", + Integer.class); + assertTrue(required.get(2).implementedBy(providedInt)); + required.get(2).setProvider(providedInt); + providedInt.publish(100, _scope); + + X9 obj = new X9(); + assertNull(obj.getValue()); + assertNull(obj.getXyz()); + assertFalse(obj.isFlag()); + config.inject(_scope, obj); + assertEquals("hello", obj.getValue()); + assertEquals(100, obj.getXyz().intValue()); + assertTrue(obj.isFlag()); + } + + public void testMultipleSetters() { + SetterConfiguration config = new SetterConfiguration(X6.class); + List required = config.getRequiredInterfaces(); + Collections.sort(required, new RequiredInterfaceComparator()); + assertEquals(2, required.size()); + assertEquals("host", required.get(0).getName()); + assertEquals("port", required.get(1).getName()); + + ProvidedInterface provided0 = new DefaultProvidedInterface("janse", + String.class); + required.get(0).setProvider(provided0); + provided0.publish("hello", _scope); + + ProvidedInterface provided1 = new DefaultProvidedInterface("port", + Integer.class); + required.get(1).setProvider(provided1); + provided1.publish(10, _scope); + + X6 obj = new X6(); + assertNull(obj.getHost()); + assertNull(obj.getPort()); + + config.inject(_scope, obj); + assertEquals("hello", obj.getHost()); + assertEquals(10, obj.getPort().intValue()); + } + + public void testInvokeWrongType() { + final SetterConfiguration config = new SetterConfiguration(X5.class); + List required = config.getRequiredInterfaces(); + assertEquals(1, required.size()); + assertEquals("value", required.get(0).getName()); + + ProvidedInterface provided = new DefaultProvidedInterface("janse", + String.class); + required.get(0).setProvider(provided); + provided.publish("hello", _scope); + + final X6 obj = new X6(); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.inject(_scope, obj); + } + }, IllegalArgumentException.class); + } + + public void testSetExplicitValue() { + SetterConfiguration config = new SetterConfiguration(X5.class); + config.values("value").setValue(0, "bladibla"); + + List required = config.getRequiredInterfaces(); + assertEquals(0, required.size()); + + X5 obj = new X5(); + assertNull(obj.getValue()); + config.inject(_scope, obj); + assertEquals("bladibla", obj.getValue()); + } + + public void testClear() { + SetterConfiguration config = new SetterConfiguration(X6.class); + config.clear(); + List required = config.getRequiredInterfaces(); + Collections.sort(required, new RequiredInterfaceComparator()); + assertEquals(0, required.size()); + + X6 obj = new X6(); + assertNull(obj.getHost()); + assertNull(obj.getPort()); + + config.inject(_scope, obj); + + assertNull(obj.getHost()); + assertNull(obj.getPort()); + } + + public void testAdd() { + SetterConfiguration config = new SetterConfiguration(X6.class); + config.clear().add("host"); + 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); + provided0.publish("hello", _scope); + + X6 obj = new X6(); + assertNull(obj.getHost()); + assertNull(obj.getPort()); + + config.inject(_scope, obj); + assertEquals("hello", obj.getHost()); + assertNull(obj.getPort()); + } + + public void testAddNonExisting() { + final SetterConfiguration config = new SetterConfiguration(X6.class); + config.clear(); + + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.add("bladibla"); + } + }, IllegalArgumentException.class); + } + + public void testRemove() { + SetterConfiguration config = new SetterConfiguration(X6.class); + config.remove("port"); + 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); + provided0.publish("hello", _scope); + + X6 obj = new X6(); + assertNull(obj.getHost()); + assertNull(obj.getPort()); + + config.inject(_scope, obj); + assertEquals("hello", obj.getHost()); + assertNull(obj.getPort()); + } + + public void testRemoveNonExisting() { + final SetterConfiguration config = new SetterConfiguration(X6.class); + + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + config.remove("bladibla"); + } + }, IllegalArgumentException.class); + } }