added explicit linking of required to externally required interfaces.
[utils] / system / general / src / test / java / org / wamblee / system / graph / component / ConnectRequiredExternallyRequiredEdgeFilterTest.java
diff --git a/system/general/src/test/java/org/wamblee/system/graph/component/ConnectRequiredExternallyRequiredEdgeFilterTest.java b/system/general/src/test/java/org/wamblee/system/graph/component/ConnectRequiredExternallyRequiredEdgeFilterTest.java
new file mode 100644 (file)
index 0000000..3fd7c61
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2008 the original author or authors.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.wamblee.system.graph.component;
+
+import org.wamblee.system.container.Application;
+import org.wamblee.system.container.Container;
+import org.wamblee.system.core.Component;
+import org.wamblee.system.core.DefaultRequiredInterface;
+import org.wamblee.system.core.RequiredInterface;
+import org.wamblee.system.graph.DefaultEdge;
+import org.wamblee.system.graph.DefaultNode;
+import org.wamblee.system.graph.Edge;
+import org.wamblee.system.graph.EdgeFilter;
+import org.wamblee.system.graph.Node;
+
+import junit.framework.TestCase;
+
+public class ConnectRequiredExternallyRequiredEdgeFilterTest extends TestCase {
+
+    private Component _comp;
+    private Container _container;
+    private Edge _edge;
+
+    @Override
+    protected void setUp() throws Exception {
+        _comp = new Application();
+        _container = new Container("container")
+                .addRequiredInterface(new DefaultRequiredInterface("x",
+                        String.class));
+        Node req = new RequiredInterfaceNode(_comp, _comp
+                .getRequiredInterfaces()[0]);
+        Node external = new ExternalRequiredInterfaceNode(_container,
+                _container.getRequiredInterfaces()[0]);
+        _edge = new DefaultEdge(req, external);
+    }
+
+    public void testRightComponentRightInterface() {
+        EdgeFilter filter = new ConnectRequiredExternallyRequiredEdgeFilter(
+                _comp.getName(), _comp.getRequiredInterfaces()[0].getName(),
+                _container.getRequiredInterfaces()[0].getName());
+        assertFalse(filter.isViolated(_edge));
+    }
+
+    public void testWrongInterface() {
+        EdgeFilter filter = new ConnectRequiredExternallyRequiredEdgeFilter(
+                _comp.getName(), _comp.getRequiredInterfaces()[0].getName()
+                        + "xx", _container.getRequiredInterfaces()[0].getName());
+        assertFalse(filter.isViolated(_edge));
+    }
+
+    public void testWrongComponent() {
+        EdgeFilter filter = new ConnectRequiredExternallyRequiredEdgeFilter(
+                _comp.getName() + "xx", _comp.getRequiredInterfaces()[0]
+                        .getName(), _container.getRequiredInterfaces()[0]
+                        .getName());
+        assertFalse(filter.isViolated(_edge));
+    }
+
+    public void testWrongExternalInterface() {
+        EdgeFilter filter = new ConnectRequiredExternallyRequiredEdgeFilter(
+                _comp.getName(), _comp.getRequiredInterfaces()[0].getName(),
+                _container.getRequiredInterfaces()[0].getName() + "xx");
+        assertTrue(filter.isViolated(_edge));
+    }
+
+    public void testWrongEdgeType() {
+        DefaultEdge edge = new DefaultEdge(new DefaultNode("x"),
+                new DefaultNode("y"));
+        EdgeFilter filter = new ConnectRequiredExternallyRequiredEdgeFilter(
+                _comp.getName(), _comp.getRequiredInterfaces()[0].getName(),
+                _container.getRequiredInterfaces()[0].getName());
+        assertFalse(filter.isViolated(edge));
+    }
+}