(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / graph / GraphTest.java
index 305765f90670da4abb60d599083d5f62bba6edbf..23c18da9c659cae3a9b3eeaa314bb514fd0ffe6a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 the original author or authors.
+ * Copyright 2005-2010 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.
  */
 package org.wamblee.system.graph;
 
-import java.util.Arrays;
-import java.util.List;
+import junit.framework.TestCase;
+import static org.mockito.Mockito.*;
 
-import org.easymock.classextension.EasyMock;
 import org.wamblee.test.AssertionUtils;
 
-import junit.framework.TestCase;
+import java.util.Arrays;
+import java.util.List;
 
+/**
+ * 
+ * @author $author$
+ * @version $Revision$
+ */
 public class GraphTest extends TestCase {
-
     public void testNodeMgt() {
         final Graph graph = new Graph();
         assertTrue(graph.getNodes().isEmpty());
@@ -39,103 +43,137 @@ public class GraphTest extends TestCase {
         assertTrue(graph.removeNode(x));
         assertTrue(graph.getNodes().isEmpty());
 
-        // Empty node set. 
+        // Empty node set.
         assertFalse(graph.removeNode(x));
-        
-        Node y = new DefaultNode("y"); 
-        graph.addNodes(Arrays.asList(new Node[] { x, y));
+
+        Node y = new DefaultNode("y");
+        graph.addNodes(Arrays.asList(new Node[] { x, y }));
         assertEquals(2, graph.getNodes().size());
-        
+
         // duplicate node
-        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { 
+        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
             @Override
             public void run() throws Exception {
-                graph.addNode(new DefaultNode("x"));   
+                graph.addNode(new DefaultNode("x"));
             }
         }, IllegalArgumentException.class);
     }
 
-    public void testEdgeMgt() { 
+    public void testEdgeMgt() {
         final Graph graph = new Graph();
-        final Node x = new DefaultNode("x"); 
-        final Node y = new DefaultNode("y"); 
+        final Node x = new DefaultNode("x");
+        final Node y = new DefaultNode("y");
         graph.addNode(x);
         graph.addNode(y);
-        final Edge e = new DefaultEdge(x, y); 
+
+        final Edge e = new DefaultEdge(x, y);
         graph.addEdge(e);
         assertEquals(Arrays.asList(new Edge[] { e }), graph.getEdges());
-        
+
         // duplicate edge.
-        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { 
+        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
             @Override
             public void run() throws Exception {
-                graph.addEdge(e);   
+                graph.addEdge(e);
             }
         }, IllegalArgumentException.class);
-        
+
         // Remove node when edge is still present
-        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { 
+        AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
             @Override
             public void run() throws Exception {
                 graph.removeNode(x);
             }
         }, IllegalArgumentException.class);
-        
-        
+
         Node a = new DefaultNode("a");
         graph.addNode(a);
-        graph.addEdges(Arrays.asList(new Edge[] { new DefaultEdge(x, a), new DefaultEdge(y, a) }));
+        graph.addEdges(Arrays.asList(new Edge[] { new DefaultEdge(x, a),
+            new DefaultEdge(y, a) }));
         assertEquals(3, graph.getEdges().size());
     }
-    
-    public void testExtend() { 
-        Graph graph = new Graph(); 
-        graph.addNode(new MyNode("x", new String[] { "a", "b"}));
-        graph.addNode(new MyNode("y", new String[] { "b", "c"}));
-        graph.addNode(new MyNode("z", new String[] { "a", "c"}));
+
+    public void testExtend() {
+        Graph graph = new Graph();
+        graph.addNode(new MyNode("x", new String[] { "a", "b" }));
+        graph.addNode(new MyNode("y", new String[] { "b", "c" }));
+        graph.addNode(new MyNode("z", new String[] { "a", "c" }));
         graph.extend(new MyEdgeFactory());
-        
-        List<Edge> edges = graph.getEdges(); 
+
+        List<Edge> edges = graph.getEdges();
         assertEquals(12, edges.size()); // 2 outgoing and 2 incoming nodes.
     }
-    
-    public void testFindIncomingOutgoing() { 
+
+    public void testApplyFilter() {
+        Graph graph = new Graph();
+        graph.addNode(new DefaultNode("x"));
+        graph.addNode(new DefaultNode("y"));
+        graph.addNode(new DefaultNode("z"));
+        graph
+            .addEdge(new DefaultEdge(graph.findNode("x"), graph.findNode("y")));
+        graph
+            .addEdge(new DefaultEdge(graph.findNode("y"), graph.findNode("z")));
+        graph
+            .addEdge(new DefaultEdge(graph.findNode("z"), graph.findNode("x")));
+
+        assertEquals(3, graph.getEdges().size());
+
+        graph.applyFilter(new EdgeFilter() {
+            @Override
+            public boolean isViolated(Edge aEdge) {
+                if (aEdge.getFrom().getName().equals("x")) {
+                    return false;
+                }
+
+                return true;
+            }
+        });
+
+        assertEquals(1, graph.getEdges().size());
+        assertEquals("x", graph.getEdges().get(0).getFrom().getName());
+    }
+
+    public void testFindIncomingOutgoing() {
         Graph graph = new Graph();
         Node x = new DefaultNode("x");
-        Node y = new DefaultNode("y"); 
+        Node y = new DefaultNode("y");
         graph.addNode(x);
         graph.addNode(y);
-        Edge e = new DefaultEdge(x,y);
+
+        Edge e = new DefaultEdge(x, y);
         graph.addEdge(e);
-        
+
         List<Edge> incoming = graph.findIncoming(x);
-        assertTrue(incoming.isEmpty()); 
+        assertTrue(incoming.isEmpty());
+
         List<Edge> outgoing = graph.findOutgoing(x);
         assertEquals(1, outgoing.size());
         assertSame(e, outgoing.get(0));
-        
+
         incoming = graph.findIncoming(y);
         assertEquals(1, incoming.size());
         assertSame(e, incoming.get(0));
-           
+
         outgoing = graph.findOutgoing(y);
-        assertTrue(outgoing.isEmpty()); 
+        assertTrue(outgoing.isEmpty());
     }
-    
+
     public void testAccept() {
-        Graph graph = new Graph(); 
-        Node x = new DefaultNode("x"); 
-        Node y = new DefaultNode("y"); 
+        Graph graph = new Graph();
+        Node x = new DefaultNode("x");
+        Node y = new DefaultNode("y");
         Edge e = new DefaultEdge(x, y);
         graph.addNode(x);
         graph.addNode(y);
         graph.addEdge(e);
-        Visitor visitor = EasyMock.createMock(Visitor.class);
-        visitor.visitNode(x);
-        visitor.visitNode(y);
-        visitor.visitEdge(e);
-        EasyMock.replay(visitor);
+
+        Visitor visitor = mock(Visitor.class);
+
         graph.accept(visitor);
-        EasyMock.verify(visitor);
+        verify(visitor).visitNode(x);
+        verify(visitor).visitNode(y);
+        verify(visitor).visitEdge(e);
+
+        verifyNoMoreInteractions(visitor);
     }
 }