X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=trunk%2Fsystem%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcontainer%2FContainerTest.java;h=41ccede4f6cb5c72efcb1cacaf5a1567b0215dd8;hb=1c50799fedc4f092130f57dc7e8e856bfe2c4a08;hp=5da0f025b1715a4fa99ecb48228d896ec8e587f9;hpb=790b3fda4128b2367060137adcc1257d215e84a4;p=utils diff --git a/trunk/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java b/trunk/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java index 5da0f025..41ccede4 100644 --- a/trunk/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java +++ b/trunk/system/general/src/test/java/org/wamblee/system/container/ContainerTest.java @@ -31,9 +31,7 @@ import org.wamblee.system.core.DefaultRequiredInterface; import org.wamblee.system.core.DefaultScope; import org.wamblee.system.core.Environment; import org.wamblee.system.core.ProvidedInterface; -import org.wamblee.system.core.ProvidedInterfaces; import org.wamblee.system.core.RequiredInterface; -import org.wamblee.system.core.RequiredInterfaces; import org.wamblee.system.core.Scope; import org.wamblee.system.core.StringComponent; import org.wamblee.system.core.SystemAssemblyException; @@ -79,7 +77,7 @@ public class ContainerTest extends TestCase { AssertionUtils.assertEquals(new String[] { "start.environment", "start.application" }, _tracker.getEvents( Thread.currentThread()).toArray(new String[0])); - assertEquals(0, scope.getProvidedInterfaces().length); + assertEquals(0, scope.getProvidedInterfaces().size()); assertEquals(environment.getString(), application.getString()); assertEquals(environment.getInteger(), application.getInteger()); @@ -96,7 +94,7 @@ public class ContainerTest extends TestCase { AssertionUtils.assertEquals(new String[] { "start.environment", "start.application" }, _tracker.getEvents( Thread.currentThread()).toArray(new String[0])); - assertEquals(0, scope.getProvidedInterfaces().length); + assertEquals(0, scope.getProvidedInterfaces().size()); assertEquals(environment.getString(), application.getString()); assertEquals(environment.getInteger(), application.getInteger()); @@ -105,8 +103,8 @@ public class ContainerTest extends TestCase { public void testApplicationEnvironment() { try { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(); + Component application = new Application(); Container container = new Container("root", new Component[] { application, environment }, new ProvidedInterface[0], new RequiredInterface[0]); @@ -119,17 +117,17 @@ public class ContainerTest extends TestCase { } public void testComposite() { - Component environment = new Environment(_tracker); - Component application = new Application(_tracker); + Component environment = new Environment(_tracker); + Component application = new Application(_tracker); assertEquals(0, _tracker.getEventCount()); Container system = new Container("all", new Component[] { environment, application }, new ProvidedInterface[0], new RequiredInterface[0]); Scope runtime = system.start(); - RequiredInterfaces required = system.getRequiredInterfaces(); + List required = system.getRequiredInterfaces(); assertEquals(0, required.size()); - ProvidedInterfaces provided = system.getProvidedInterfaces(); + List provided = system.getProvidedInterfaces(); assertEquals(0, provided.size()); AssertionUtils.assertEquals(new String[] { "start.environment", @@ -146,8 +144,8 @@ public class ContainerTest extends TestCase { public void testCompositeWithWrongProvidedInfo() { try { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(); + Component application = new Application(); Container system = new Container("all", new Component[] { environment, application }, new ProvidedInterface[] { new DefaultProvidedInterface( @@ -162,8 +160,8 @@ public class ContainerTest extends TestCase { public void testCompositeRequiredInterfaceNotProvided() { try { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(); + Component application = new Application(); Container system = new Container("all", new Component[] { environment, application }, new ProvidedInterface[0], new RequiredInterface[] { new DefaultRequiredInterface( @@ -176,8 +174,8 @@ public class ContainerTest extends TestCase { } public void testCompositeWithSuperfluousRequiredInfo() { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(); + Component application = new Application(); Container system = new Container("all", new Component[] { environment, application }, new ProvidedInterface[0], new RequiredInterface[] { new DefaultRequiredInterface("float", @@ -185,19 +183,19 @@ public class ContainerTest extends TestCase { system.getRequiredInterfaces().get(0) .setProvider(new DefaultProvidedInterface("hallo", Float.class)); system.start(); - RequiredInterfaces required = system.getRequiredInterfaces(); + List required = system.getRequiredInterfaces(); assertEquals(1, required.size()); - ProvidedInterfaces provided = system.getProvidedInterfaces(); + List provided = system.getProvidedInterfaces(); assertEquals(0, provided.size()); } public void testCompositeWithExternalDependencesNotProvided() { try { - Component environment = new Environment(); - Component application = new Application(); + Component application = new Application(); + Container system = new Container("all", new Component[] { application }, new ProvidedInterface[0], - application.getRequiredInterfaces().toArray()); + application.getRequiredInterfaces().toArray(new RequiredInterface[0])); system.start(); } catch (SystemAssemblyException e) { return; @@ -207,8 +205,8 @@ public class ContainerTest extends TestCase { public void testDuplicateComponent() { try { - Component comp1 = new Application(); - Component comp2 = new Application(); + Component comp1 = new Application(); + Component comp2 = new Application(); Container system = new Container("top"); system.addComponent(comp1).addComponent(comp2); } catch (SystemAssemblyException e) { @@ -220,7 +218,7 @@ public class ContainerTest extends TestCase { public void testInconsistentHierarchy() { try { - Component comp = new Application(); + Component comp = new Application(); Container system = new Container("top").addComponent(comp); Container system2 = new Container("top2").addComponent(comp); } catch (SystemAssemblyException e) { @@ -231,11 +229,11 @@ public class ContainerTest extends TestCase { public void testCompositeWithExternalDependencesProvided() { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(); + Component application = new Application(); Container system = new Container("all", new Component[] { application }, new ProvidedInterface[0], - application.getRequiredInterfaces().toArray()); + application.getRequiredInterfaces().toArray(new RequiredInterface[0])); environment.start(new DefaultScope(new ProvidedInterface[0])); system.getRequiredInterfaces().get(0).setProvider(environment .getProvidedInterfaces().get(0)); @@ -243,18 +241,18 @@ public class ContainerTest extends TestCase { .getProvidedInterfaces().get(1)); system.start(); - RequiredInterfaces required = system.getRequiredInterfaces(); + List required = system.getRequiredInterfaces(); assertEquals(2, required.size()); - ProvidedInterfaces provided = system.getProvidedInterfaces(); + List provided = system.getProvidedInterfaces(); assertEquals(0, provided.size()); } public void testAmbiguousInterfaces() { try { - Component environment1 = new Environment(); - Component environment2 = new Environment(); - Component application = new Application(); + Component environment1 = new Environment(); + Component environment2 = new Environment(); + Component application = new Application(); Container container = new Container("root", new Component[] { environment1, environment2, application }, new ProvidedInterface[0], new RequiredInterface[0]); @@ -268,7 +266,7 @@ public class ContainerTest extends TestCase { public void testIncompleteRequirements() { try { - Component application = new Application(); + Component application = new Application(); Container system = new Container("all", new Component[] { application }, new ProvidedInterface[0], new RequiredInterface[0]); @@ -356,7 +354,7 @@ public class ContainerTest extends TestCase { .getProvidedInterfaces().get(0)); container.getRequiredInterfaces().get(1).setProvider(env .getProvidedInterfaces().get(1)); - Scope external = new DefaultScope(env.getProvidedInterfaces().toArray()); + Scope external = new DefaultScope(env.getProvidedInterfaces()); env.start(external); container.start(external); @@ -465,8 +463,70 @@ public class ContainerTest extends TestCase { container.connectRequiredProvided("app", null, "env1", null); container.start(); assertEquals(env1.getString(), app.getString()); + assertEquals(env1.getInteger(), app.getInteger()); assertFalse(env2.getString().equals(app.getString())); + assertFalse(env2.getInteger().equals(app.getInteger())); } + + public void testRestrictionWithFromAndToInterfaceName() { + Environment env1 = new Environment("env1"); + Environment env2 = new Environment("env2"); + Application app = new Application("app"); + Container container = new Container("top").addComponent(env1) + .addComponent(env2).addComponent(app); + container.connectRequiredProvided("app", app.getRequiredInterfaces().get(0).getName(), + "env1", env1.getProvidedInterfaces().get(0).getName()); + container.connectRequiredProvided("app", app.getRequiredInterfaces().get(1).getName(), + "env2", env2.getProvidedInterfaces().get(1).getName()); + container.start(); + assertEquals(env1.getString(), app.getString()); + assertEquals(env2.getInteger(), app.getInteger()); + assertFalse(env2.getString().equals(app.getString())); + assertFalse(env1.getInteger().equals(app.getInteger())); + } + + public void testRestrictionWrongComponentNames() { + Environment env1 = new Environment("env1"); + Environment env2 = new Environment("env2"); + Application app = new Application("app"); + final Container container = new Container("top").addComponent(env1) + .addComponent(env2).addComponent(app); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectRequiredProvided("app2", null, "env1", null); + } + }, SystemAssemblyException.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectRequiredProvided("app", null, "env3", null); + } + }, SystemAssemblyException.class); + } + + public void testRestrictionWrongInterfaceNames() { + final Environment env1 = new Environment("env1"); + Environment env2 = new Environment("env2"); + final Application app = new Application("app"); + final Container container = new Container("top").addComponent(env1) + .addComponent(env2).addComponent(app); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectRequiredProvided("app", + app.getRequiredInterfaces().get(0).getName() + "xxx", "env1", null); + } + }, SystemAssemblyException.class); + AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { + @Override + public void run() throws Exception { + container.connectRequiredProvided("app", null, "env1", + env1.getProvidedInterfaces().get(0).getName() + "yyy"); + } + }, SystemAssemblyException.class); + } + public void testProvidedInDifferentScopes() { // Scoping problem occurred. Externally and internally provided