X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcontainer%2FContainerTest.java;fp=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcontainer%2FContainerTest.java;h=156d4dd6f4222c6748d414287d9a4d71c7d87c1c;hb=1a7fade8cf8581099c9cd8edd0bf617979ec1857;hp=c4f64ba88eee53a6651bb1b7b0ee46c2cfa31e65;hpb=102eebeba2200f9bb2d8523bdfe7ace4ff663628;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 c4f64ba8..156d4dd6 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 @@ -527,4 +527,44 @@ 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()); + + } }