X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcontainer%2FContainerTest.java;h=cc18db2e50bac0a1c11fe3886fc10583db8e393c;hb=9edb5809a67730abf512ed68ecd8d3cf47ceb0b1;hp=5908a85e30c029eb60e5f5579138b5cb1e3037fd;hpb=531559394b56b0dbf817d52c8c596216550a5cbb;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 5908a85e..cc18db2e 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 @@ -422,14 +422,19 @@ public class ContainerTest extends TestCase { AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { @Override public void run() throws Exception { - container.addRestriction(new InterfaceRestriction() { - @Override - public boolean isViolated(Component aClient, - RequiredInterface aRequired, Component aServer, - ProvidedInterface aProvided) { - return false; - } - }); + container.connectRequiredProvided("x", "y", "a", "b"); + } + }, SystemAssemblyException.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectExternalRequired("x", "y", "a"); + } + }, SystemAssemblyException.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectExternalProvided("x", "y", "z"); } }, SystemAssemblyException.class); AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { @@ -455,8 +460,7 @@ public class ContainerTest extends TestCase { Application app = new Application("app"); Container container = new Container("top").addComponent(env1) .addComponent(env2).addComponent(app); - container.addRestriction(new DefaultInterfaceRestriction("app", null, - "env1", null)); + container.connectRequiredProvided("app", null, "env1", null); container.start(); assertEquals(env1.getString(), app.getString()); assertFalse(env2.getString().equals(app.getString())); @@ -523,4 +527,76 @@ public class ContainerTest extends TestCase { Thread.currentThread()).toArray(new String[0])); } + + 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)); + + Application app = new Application("1"); + container.addComponent(app); + + + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.start(); + } + }, SystemAssemblyException.class); + + 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())); + } }