(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / container / ContainerTest.java
index 8cd119f37e7cbe598bb27c10de80f7e5d0e03a10..41ccede4f6cb5c72efcb1cacaf5a1567b0215dd8 100644 (file)
@@ -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;
@@ -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