Author: mes
Date: 2012-02-16 11:29:07 -0800 (Thu, 16 Feb 2012)
New Revision: 28297

Modified:
   
core3/api/trunk/event-api/src/test/java/org/cytoscape/event/DummyCyEventHelper.java
   
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
   
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TestCyNetworkFactory.java
   
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/subnetwork/CySubNetworkTest.java
Log:
added unit tests that validate network event firing

Modified: 
core3/api/trunk/event-api/src/test/java/org/cytoscape/event/DummyCyEventHelper.java
===================================================================
--- 
core3/api/trunk/event-api/src/test/java/org/cytoscape/event/DummyCyEventHelper.java
 2012-02-16 00:51:16 UTC (rev 28296)
+++ 
core3/api/trunk/event-api/src/test/java/org/cytoscape/event/DummyCyEventHelper.java
 2012-02-16 19:29:07 UTC (rev 28297)
@@ -27,16 +27,29 @@
 */
 package org.cytoscape.event;
 
+import java.util.List;
+import java.util.ArrayList;
 
+
 public class DummyCyEventHelper implements CyEventHelper {
-       private Object lastEvent;
+       private List<Object> lastEvents; 
        private Object payload;
+       private final boolean keepAllEvents;
 
+       public DummyCyEventHelper(boolean keepAllEvents) {
+               this.keepAllEvents = keepAllEvents;
+               lastEvents = new ArrayList<Object>();
+       }
+
        public DummyCyEventHelper() {
+               this(false);
        }
        
        public synchronized <E extends CyEvent<?>> void fireEvent(final E 
event) {
-               lastEvent = event;
+               if ( keepAllEvents || lastEvents.size() == 0 )
+                       lastEvents.add(event);
+               else 
+                       lastEvents.set(0,event);
        }
 
        public <S,P,E extends CyPayloadEvent<S,P>> void addEventPayload(S 
source, P p, Class<E> e) {
@@ -44,8 +57,12 @@
        }
 
        public Object getLastEvent() {
-               return lastEvent;
+               return lastEvents.get(lastEvents.size()-1);
        }
+
+       public List<Object> getAllLastEvents() {
+               return lastEvents;
+       }
        
        public Object getLastPayload() {
                return payload;

Modified: 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
   2012-02-16 00:51:16 UTC (rev 28296)
+++ 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
   2012-02-16 19:29:07 UTC (rev 28297)
@@ -134,8 +134,10 @@
                        // add node
                        copyDefaultAttrs(parent.getRow(node), 
this.getRow(node));
                }
-               eventHelper.addEventPayload((CyNetwork)this, node, 
AddedNodesEvent.class);
 
+               if (fireAddedNodesAndEdgesEvents)
+                       eventHelper.addEventPayload((CyNetwork)this, node, 
AddedNodesEvent.class);
+
                return true;
        }
 
@@ -182,8 +184,10 @@
                        copyDefaultAttrs(parent.getRow(edge), 
this.getRow(edge));
                        copyDefaultEdgeAttrs(parent.getRow(edge), 
this.getRow(edge));
                }
-               eventHelper.addEventPayload((CyNetwork)this, edge, 
AddedEdgesEvent.class);
 
+               if (fireAddedNodesAndEdgesEvents)
+                       eventHelper.addEventPayload((CyNetwork)this, edge, 
AddedEdgesEvent.class);
+
                return true;
        }
 

Modified: 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TestCyNetworkFactory.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TestCyNetworkFactory.java
        2012-02-16 00:51:16 UTC (rev 28296)
+++ 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/TestCyNetworkFactory.java
        2012-02-16 19:29:07 UTC (rev 28297)
@@ -57,7 +57,10 @@
        }
 
        public static CyRootNetwork getPublicRootInstance() {   
-               DummyCyEventHelper deh = new DummyCyEventHelper();
+               return getPublicRootInstance(new DummyCyEventHelper());
+       }
+
+       public static CyRootNetwork getPublicRootInstance(DummyCyEventHelper 
deh) {     
                CyNetworkTableManagerImpl ntm = new CyNetworkTableManagerImpl();
                CyTableManagerImpl tm = new CyTableManagerImpl(deh, ntm, null);
                Interpreter interp = new InterpreterImpl();

Modified: 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/subnetwork/CySubNetworkTest.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/subnetwork/CySubNetworkTest.java
 2012-02-16 00:51:16 UTC (rev 28296)
+++ 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/subnetwork/CySubNetworkTest.java
 2012-02-16 19:29:07 UTC (rev 28297)
@@ -30,21 +30,217 @@
 
 
 import org.cytoscape.model.TestCyNetworkFactory;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.events.AboutToRemoveNodesEvent;
+import org.cytoscape.model.events.AboutToRemoveEdgesEvent;
+import org.cytoscape.model.events.RemovedNodesEvent;
+import org.cytoscape.model.events.RemovedEdgesEvent;
+import org.cytoscape.model.events.NetworkAddedEvent;
 
+import org.cytoscape.equations.Interpreter;
+import org.cytoscape.equations.internal.interpreter.InterpreterImpl;
+import org.cytoscape.event.DummyCyEventHelper;
+import org.cytoscape.model.internal.CyRootNetworkImpl;
+import org.cytoscape.model.internal.CySubNetworkImpl;
+import org.cytoscape.model.internal.CyNetworkTableManagerImpl;
+import org.cytoscape.model.internal.CyTableFactoryImpl;
+import org.cytoscape.model.internal.CyTableManagerImpl;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
+import org.cytoscape.service.util.CyServiceRegistrar;
+
+import org.junit.Test;
 import org.junit.After;
 import org.junit.Before;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
 
+import java.util.List;
+import java.util.ArrayList;
 
 public class CySubNetworkTest extends AbstractCySubNetworkTest {
+
+       private DummyCyEventHelper deh;
+       private DummyCyEventHelper deh2;
+
        @Before
        public void setUp() {
-               root = TestCyNetworkFactory.getPublicRootInstance();
-               root2 = TestCyNetworkFactory.getPublicRootInstance();
+               deh = new DummyCyEventHelper(true);
+               deh2 = new DummyCyEventHelper(false);
+               root = TestCyNetworkFactory.getPublicRootInstance(deh);
+               root2 = TestCyNetworkFactory.getPublicRootInstance(deh2);
        }
 
        @After
        public void tearDown() {
+               deh = null;
+               deh2 = null;
                root = null;
                root2 = null;
        }
+
+       // 
+       // A bunch of tests to validate that the proper events are fired
+       // 
+
+       @Test
+       public void testRemoveNodeEvents() {
+
+               CySubNetwork sub = root.addSubNetwork();
+
+               CyNode nx1 = sub.addNode();
+               CyNode nx2 = sub.addNode();
+               CyNode nx3 = sub.addNode();
+               CyNode nx4 = sub.addNode();
+
+               List<CyNode> nodes = new ArrayList<CyNode>();
+               nodes.add(nx1);
+               nodes.add(nx2);
+               nodes.add(nx3);
+               nodes.add(nx4);
+               
+               sub.removeNodes(nodes);
+
+               int aboutToRemoveInd = -1;
+               int removedInd = -1;
+               int ind = 0;
+               for ( Object event : deh.getAllLastEvents() ) {
+                       if ( event instanceof AboutToRemoveNodesEvent )
+                               aboutToRemoveInd = ind;
+                       else if ( event instanceof RemovedNodesEvent )
+                               removedInd = ind;       
+                       ind++;
+               }
+
+               // verify that we found the events in the list 
+               assertTrue( aboutToRemoveInd >= 0 );
+               assertTrue( removedInd >= 0 );
+
+               // verify that the about to remove event came first
+               assertTrue( aboutToRemoveInd < removedInd ); 
+       }
+
+       @Test
+       public void testRemoveEdgeEvents() {
+               CySubNetwork sub = root.addSubNetwork();
+
+               CyNode nx1 = sub.addNode();
+               CyNode nx2 = sub.addNode();
+               CyNode nx3 = sub.addNode();
+               CyNode nx4 = sub.addNode();
+
+               CyEdge ex1 = sub.addEdge(nx1,nx2,true);
+               CyEdge ex2 = sub.addEdge(nx2,nx3,false);
+               CyEdge ex3 = sub.addEdge(nx3,nx4,true);
+
+               List<CyEdge> edges = new ArrayList<CyEdge>();
+               edges.add(ex1);
+               edges.add(ex2);
+               edges.add(ex3);
+               
+               sub.removeEdges(edges);
+
+               int aboutToRemoveInd = -1;
+               int removedInd = -1;
+               int ind = 0;
+               for ( Object event : deh.getAllLastEvents() ) {
+                       if ( event instanceof AboutToRemoveEdgesEvent )
+                               aboutToRemoveInd = ind;
+                       else if ( event instanceof RemovedEdgesEvent )
+                               removedInd = ind;       
+                       ind++;
+               }
+
+               // verify that we found the events in the list 
+               assertTrue( aboutToRemoveInd >= 0 );
+               assertTrue( removedInd >= 0 );
+
+               // verify that the about to remove event came first
+               assertTrue( aboutToRemoveInd < removedInd ); 
+       }
+
+       @Test
+       public void testAddNewNodeEventBeforeNetworkAdd() {
+               CySubNetwork sub = root.addSubNetwork();
+               sub.addNode();
+               Object payload = deh.getLastPayload();
+               assertNull(payload);
+       }
+
+       @Test
+       public void testAddNewNodeEventAfterNetworkAdd() {
+               CySubNetwork sub = root.addSubNetwork();
+               ((CySubNetworkImpl)sub).handleEvent( new 
NetworkAddedEvent(mock(CyNetworkManager.class),sub) );
+               sub.addNode();
+               Object payload = deh.getLastPayload();
+               assertNotNull(payload);
+       }
+
+       @Test
+       public void testAddExistingNodeEventBeforeNetworkAdd() {
+               CyNode rn1 = root.addNode();
+               CySubNetwork sub = root.addSubNetwork();
+               sub.addNode(rn1);
+               Object payload = deh.getLastPayload();
+               assertNull(payload);
+       }
+
+       @Test
+       public void testAddExistingNodeEventAfterNetworkAdd() {
+               CyNode rn1 = root.addNode();
+               CySubNetwork sub = root.addSubNetwork();
+               ((CySubNetworkImpl)sub).handleEvent( new 
NetworkAddedEvent(mock(CyNetworkManager.class),sub) );
+               sub.addNode(rn1);
+               Object payload = deh.getLastPayload();
+               assertNotNull(payload);
+       }
+
+       @Test
+       public void testAddNewEdgeEventBeforeNetworkAdd() {
+               CySubNetwork sub = root.addSubNetwork();
+               CyNode nx1 = sub.addNode();
+               CyNode nx2 = sub.addNode();
+               CyEdge ex1 = sub.addEdge(nx1,nx2,false);
+               Object payload = deh.getLastPayload();
+               assertNull(payload);
+       }
+
+       @Test
+       public void testAddNewEdgeEventAfterNetworkAdd() {
+               CySubNetwork sub = root.addSubNetwork();
+               CyNode nx1 = sub.addNode();
+               CyNode nx2 = sub.addNode();
+               ((CySubNetworkImpl)sub).handleEvent( new 
NetworkAddedEvent(mock(CyNetworkManager.class),sub) );
+               CyEdge ex1 = sub.addEdge(nx1,nx2,false);
+               Object payload = deh.getLastPayload();
+               assertNotNull(payload);
+       }
+
+       @Test
+       public void testAddExistingEdgeEventBeforeNetworkAdd() {
+               CyNode nx1 = root.addNode();
+               CyNode nx2 = root.addNode();
+               CyEdge ex1 = root.addEdge(nx1,nx2,false);
+               CySubNetwork sub = root.addSubNetwork();
+               sub.addNode(nx1);
+               sub.addNode(nx2);
+               sub.addEdge(ex1);
+               Object payload = deh.getLastPayload();
+               assertNull(payload);
+       }
+
+       @Test
+       public void testAddExistingEdgeEventAfterNetworkAdd() {
+               CyNode nx1 = root.addNode();
+               CyNode nx2 = root.addNode();
+               CyEdge ex1 = root.addEdge(nx1,nx2,false);
+               CySubNetwork sub = root.addSubNetwork();
+               sub.addNode(nx1);
+               sub.addNode(nx2);
+               ((CySubNetworkImpl)sub).handleEvent( new 
NetworkAddedEvent(mock(CyNetworkManager.class),sub) );
+               sub.addEdge(ex1);
+               Object payload = deh.getLastPayload();
+               assertNotNull(payload);
+       }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to