X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FContainerTest.java;h=da8f8350918d4a6df144c4fe4f3b582c0160a35d;hb=f9145c96b66fea2db0b9f04b009caf992ad1ab70;hp=2104e3a94e3dbba93db6d6de0c19cfe11983cf75;hpb=001d69a3cfa9c4d949963d222c05a3134b594ddb;p=utils diff --git a/system/general/src/test/java/org/wamblee/system/core/ContainerTest.java b/system/general/src/test/java/org/wamblee/system/core/ContainerTest.java index 2104e3a9..da8f8350 100644 --- a/system/general/src/test/java/org/wamblee/system/core/ContainerTest.java +++ b/system/general/src/test/java/org/wamblee/system/core/ContainerTest.java @@ -69,30 +69,33 @@ public class ContainerTest extends TestCase { Serializable.class); ProvidedInterface prov3 = new DefaultProvidedInterface("name", MyMultiple.class); - + Component client = new Application("client"); Component dummy = new Application("dummy"); - - InterfaceRestriction noRestriction = new InterfaceRestriction() { - @Override + + InterfaceRestriction noRestriction = new InterfaceRestriction() { + @Override public boolean isViolated(Component aClient, RequiredInterface aRequired, Component aServer, ProvidedInterface aProvided) { return false; - } + } }; AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 }, - Container.filterProvidedServices(client, req1, - createProvidedInput(new ProvidedInterface[] { prov1 }, dummy), noRestriction)); + Container.filterProvidedServices(client, req1, + createProvidedInput(new ProvidedInterface[] { prov1 }, + dummy), noRestriction)); AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 }, - Container.filterProvidedServices(client, req1, - createProvidedInput(new ProvidedInterface[] { prov1, prov2 }, dummy), noRestriction)); + Container.filterProvidedServices(client, req1, + createProvidedInput(new ProvidedInterface[] { prov1, + prov2 }, dummy), noRestriction)); AssertionUtils.assertEquals(new ProvidedInterface[] { prov1, prov3 }, - Container.filterProvidedServices(client, req1, - createProvidedInput(new ProvidedInterface[] { prov1, prov3 }, dummy), noRestriction)); - - InterfaceRestriction everything = new InterfaceRestriction() { + Container.filterProvidedServices(client, req1, + createProvidedInput(new ProvidedInterface[] { prov1, + prov3 }, dummy), noRestriction)); + + InterfaceRestriction everything = new InterfaceRestriction() { @Override public boolean isViolated(Component aClient, RequiredInterface aRequired, Component aServer, @@ -100,10 +103,11 @@ public class ContainerTest extends TestCase { return true; } }; - AssertionUtils.assertEquals(new ProvidedInterface[0], - Container.filterProvidedServices(client, req1, - createProvidedInput(new ProvidedInterface[] { prov1, prov3 }, dummy), everything)); - + AssertionUtils.assertEquals(new ProvidedInterface[0], Container + .filterProvidedServices(client, req1, createProvidedInput( + new ProvidedInterface[] { prov1, prov3 }, dummy), + everything)); + } public void testEnvironmentApplication() { @@ -504,22 +508,66 @@ public class ContainerTest extends TestCase { assertEquals(env1.getString(), app.getString()); assertFalse(env2.getString().equals(app.getString())); } - - public void testProvidedInDifferentScopes() { - // Scoping problem occurred. Externally and internally provided components clashed - // because unique id generation in the scope was wrong. - + + public void testProvidedInDifferentScopes() { + // Scoping problem occurred. Externally and internally provided + // components clashed + // because unique id generation in the scope was wrong. + StringComponent str = new StringComponent("string"); Application app = new Application("app"); - Container container = new Container("top").addComponent(str).addComponent(app); - container.addRequiredInterface(new DefaultRequiredInterface("integer", Integer.class)); - - ProvidedInterface provided = new DefaultProvidedInterface("hallo", Integer.class); - container.getRequiredInterfaces()[0] - .setProvider(provided); - + Container container = new Container("top").addComponent(str) + .addComponent(app); + container.addRequiredInterface(new DefaultRequiredInterface("integer", + Integer.class)); + + ProvidedInterface provided = new DefaultProvidedInterface("hallo", + Integer.class); + container.getRequiredInterfaces()[0].setProvider(provided); + Scope external = new DefaultScope(new ProvidedInterface[0]); external.publishInterface(provided, 100); Scope scope = container.start(external); } + + public void testProvidedInterfaces() { + Environment env = new Environment(_tracker); + Container envcontainer = new Container("0").addComponent(env) + .addProvidedInterface( + new DefaultProvidedInterface("string", String.class)) + .addProvidedInterface( + new DefaultProvidedInterface("integer", Integer.class)); + Scope scope = envcontainer.start(); + + AssertionUtils.assertEquals(new String[] { "start.environment" }, + _tracker.getEvents(Thread.currentThread()).toArray( + new String[0])); + + envcontainer.stop(scope); + } + + public void testCoupleTwoContainers() { + Environment env = new Environment(_tracker); + Container envcontainer = new Container("0").addComponent(env) + .addProvidedInterface( + new DefaultProvidedInterface("string", String.class)) + .addProvidedInterface( + new DefaultProvidedInterface("integer", Integer.class)); + + Application app = new Application(_tracker); + Container appcontainer = new Container("1").addComponent(app) + .addRequiredInterface( + new DefaultRequiredInterface("string", String.class)) + .addRequiredInterface( + new DefaultRequiredInterface("integer", Integer.class)); + + Container top = new Container("top"); + top.addComponent(envcontainer).addComponent(appcontainer); + + top.start(); + AssertionUtils.assertEquals(new String[] { "start.environment", "start.application" }, + _tracker.getEvents(Thread.currentThread()).toArray( + new String[0])); + + } }