X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcontainer%2FContainerTest.java;h=83abf3c2302debf477dc907efb5b0ffa7a6358d4;hb=8c773ebc6af18d4c0c0c973551f582856644f4d3;hp=156d4dd6f4222c6748d414287d9a4d71c7d87c1c;hpb=1a7fade8cf8581099c9cd8edd0bf617979ec1857;p=utils diff --git a/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java b/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java index 156d4dd6..83abf3c2 100644 --- a/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java +++ b/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java @@ -201,7 +201,6 @@ public class ContainerTest extends TestCase { return; } fail(); - } public void testDuplicateComponent() { @@ -216,6 +215,7 @@ public class ContainerTest extends TestCase { fail(); } + public void testInconsistentHierarchy() { try { Component comp = new Application(); @@ -527,44 +527,81 @@ public class ContainerTest extends TestCase { Thread.currentThread()).toArray(new String[0])); } - - public void testNonUniqueRequiredInterface() { + + public void testNonUniqueRequiredInterface() { final Container container = new Container("top"); - container.addRequiredInterface(new DefaultRequiredInterface("i", Integer.class)); - container.addRequiredInterface(new DefaultRequiredInterface("x", String.class)); - container.addRequiredInterface(new DefaultRequiredInterface("y", String.class)); - + container.addRequiredInterface(new DefaultRequiredInterface("i", + Integer.class)); + container.addRequiredInterface(new DefaultRequiredInterface("x", + String.class)); + container.addRequiredInterface(new DefaultRequiredInterface("y", + String.class)); + Application app = new Application("1"); container.addComponent(app); - - AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { @Override public void run() throws Exception { - container.start(); + container.start(); } }, SystemAssemblyException.class); - - container.connectExternalRequired("1", app.getRequiredInterfaces()[0].getName(), - "y"); - + + container.connectExternalRequired("1", app.getRequiredInterfaces()[0] + .getName(), "y"); + ProvidedInterface i = new DefaultProvidedInterface("i", Integer.class); ProvidedInterface x = new DefaultProvidedInterface("x", String.class); ProvidedInterface y = new DefaultProvidedInterface("y", String.class); - + Scope externalScope = new DefaultScope(new ProvidedInterface[0]); - + externalScope.publishInterface(i, 100); externalScope.publishInterface(x, "x-value"); externalScope.publishInterface(y, "y-value"); - + container.getRequiredInterfaces()[0].setProvider(i); container.getRequiredInterfaces()[1].setProvider(x); container.getRequiredInterfaces()[2].setProvider(y); - + Scope runtime = container.start(externalScope); - + assertEquals("y-value", app.getString()); - + + } + + public void testNonUniqueProvidedInterface() { + + final Container container = new Container("top") + .addProvidedInterface(new DefaultProvidedInterface("external", + String.class)); + Environment env1 = new Environment("env1"); + Environment env2 = new Environment("env2"); + + container.addComponent(env1); + container.addComponent(env2); + + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.start(); + } + }, SystemAssemblyException.class); + + // now choose env2 + + container.connectExternalProvided(container.getProvidedInterfaces()[0] + .getName(), env2.getName(), env2.getProvidedInterfaces()[0] + .getName()); + + Scope scope = container.start(); + + // check the value of the provided interface of the container + + String value = scope.getInterfaceImplementation(container + .getProvidedInterfaces()[0], String.class); + assertNotNull(value); + assertEquals(value, env2.getString()); + assertFalse(value.equals(env1.getString())); } }