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.