Author: clopes
Date: 2012-05-11 14:24:21 -0700 (Fri, 11 May 2012)
New Revision: 29247
Added:
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
Modified:
core3/impl/trunk/application-impl/pom.xml
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
Log:
Fixes a bug that could add null to selected networks/views lists. Adds unit
tests for CyApplicationManagerImpl
Modified: core3/impl/trunk/application-impl/pom.xml
===================================================================
--- core3/impl/trunk/application-impl/pom.xml 2012-05-11 20:56:16 UTC (rev
29246)
+++ core3/impl/trunk/application-impl/pom.xml 2012-05-11 21:24:21 UTC (rev
29247)
@@ -85,5 +85,41 @@
<groupId>org.cytoscape</groupId>
<artifactId>session-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>model-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>model-impl</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>ding-presentation-impl</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>ding-presentation-impl</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
===================================================================
---
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-05-11 20:56:16 UTC (rev 29246)
+++
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-05-11 21:24:21 UTC (rev 29247)
@@ -33,6 +33,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -275,7 +276,7 @@
CyNetworkView cv = getCurrentNetworkView();
- if (!selectedNetworkViews.contains(cv)) {
+ if (cv != null && !selectedNetworkViews.contains(cv)) {
selectedNetworkViews.add(cv);
}
}
@@ -301,13 +302,14 @@
@Override
public void setSelectedNetworks(final List<CyNetwork> networks) {
- final Set<CyNetwork> selectedNetworks;
+ Set<CyNetwork> selectedNetworks = networks != null ? new
LinkedHashSet<CyNetwork>(networks)
+ : new LinkedHashSet<CyNetwork>();
synchronized (this) {
- selectedNetworks = selectNetworks(networks);
-
if (currentNetwork != null)
selectedNetworks.add(currentNetwork);
+
+ selectedNetworks = selectNetworks(selectedNetworks);
}
cyEventHelper.fireEvent(new SetSelectedNetworksEvent(this, new
ArrayList<CyNetwork>(selectedNetworks)));
Added:
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
===================================================================
---
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
(rev 0)
+++
core3/impl/trunk/application-impl/src/test/java/org/cytoscape/application/internal/CyApplicationManagerImplTest.java
2012-05-11 21:24:21 UTC (rev 29247)
@@ -0,0 +1,291 @@
+package org.cytoscape.application.internal;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.cytoscape.ding.NetworkViewTestSupport;
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyEdge.Type;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.view.presentation.RenderingEngine;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class CyApplicationManagerImplTest {
+
+ @Mock
+ private CyEventHelper evtHelper;
+ @Mock
+ private CyNetworkManager netMgr;
+ @Mock
+ private CyNetworkViewManager netViewMgr;
+
+ private CyApplicationManagerImpl appMgr;
+ private NetworkViewTestSupport nvtSupport;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ nvtSupport = new NetworkViewTestSupport();
+ final Set<CyNetworkView> views = new HashSet<CyNetworkView>();
+ final Set<CyNetwork> networks = new HashSet<CyNetwork>();
+
+ when(netMgr.getNetworkSet()).thenReturn(networks);
+ when(netMgr.networkExists(anyLong())).thenReturn(false);
+ when(netViewMgr.getNetworkViewSet()).thenReturn(views);
+
when(netViewMgr.viewExists(any(CyNetwork.class))).thenReturn(false);
+
when(netViewMgr.getNetworkViews(any(CyNetwork.class))).thenReturn(new
HashSet<CyNetworkView>());
+
+ appMgr = new CyApplicationManagerImpl(evtHelper, netMgr,
netViewMgr);
+ }
+
+ @Test
+ public void testCyApplicationManagerImpl() {
+ assertNull(appMgr.getCurrentNetwork());
+ assertNull(appMgr.getCurrentNetworkView());
+ assertNull(appMgr.getCurrentRenderingEngine());
+ assertNull(appMgr.getCurrentTable());
+ assertTrue(appMgr.getSelectedNetworks().isEmpty());
+ assertTrue(appMgr.getSelectedNetworkViews().isEmpty());
+ }
+
+ @Test
+ public void testSetNullCurrentNetwork() {
+ try {
+ appMgr.setCurrentNetwork(null);
+ fail("Should hgave thrown NullPointerException");
+ } catch (NullPointerException e) { }
+ }
+
+ @Test
+ public void testSetNullCurrentNetworkView() {
+ final CyNetworkView view = newNetworkView();
+ appMgr.setCurrentNetworkView(view);
+ assertNotNull(appMgr.getCurrentNetworkView());
+ appMgr.setCurrentNetworkView(null);
+ assertEquals(view, appMgr.getCurrentNetworkView());
+ }
+
+ @Test
+ public void testSetNullCurrentTable() {
+ appMgr.setCurrentTable(mock(CyTable.class));
+ assertNotNull(appMgr.getCurrentTable());
+ appMgr.setCurrentTable(null);
+ assertNull(appMgr.getCurrentTable());
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testSetNullCurrentRenderingEngine() {
+ appMgr.setCurrentRenderingEngine(mock(RenderingEngine.class));
+ assertNotNull(appMgr.getCurrentRenderingEngine());
+ appMgr.setCurrentRenderingEngine(null);
+ assertNull(appMgr.getCurrentRenderingEngine());
+ }
+
+ @Test
+ public void testSetNullSelectedNetworks() {
+ appMgr.setSelectedNetworks(null);
+ assertTrue(appMgr.getSelectedNetworks().isEmpty());
+ }
+
+ @Test
+ public void testSetNullSelectedNetworkViews() {
+ appMgr.setSelectedNetworkViews(null);
+ assertTrue(appMgr.getSelectedNetworkViews().isEmpty());
+ }
+
+ @Test
+ public void testSetEmptySelectedNetworks() {
+ appMgr.setSelectedNetworks(new ArrayList<CyNetwork>());
+ assertTrue(appMgr.getSelectedNetworks().isEmpty());
+ assertTrue(appMgr.getSelectedNetworkViews().isEmpty());
+ }
+
+ @Test
+ public void testSetEmptySelectedNetworkViews() {
+ appMgr.setSelectedNetworkViews(new ArrayList<CyNetworkView>());
+ assertTrue(appMgr.getSelectedNetworkViews().isEmpty());
+ assertTrue(appMgr.getSelectedNetworks().isEmpty());
+ }
+
+ @Test
+ public void testSetCurrentNetwork() {
+ CyNetworkView view = newNetworkView();
+ CyNetwork net = view.getModel();
+ appMgr.setCurrentNetwork(net);
+ assertEquals(net, appMgr.getCurrentNetwork());
+ assertEquals(view, appMgr.getCurrentNetworkView());
+ // The current network is selected
+ List<CyNetwork> selNets = appMgr.getSelectedNetworks();
+ assertEquals(1, selNets.size());
+ assertTrue(selNets.contains(net));
+ }
+
+ @Test
+ public void testSetCurrentNetworkView() {
+ CyNetworkView view = newNetworkView();
+ appMgr.setCurrentNetworkView(view);
+ assertEquals(view, appMgr.getCurrentNetworkView());
+ assertEquals(view.getModel(), appMgr.getCurrentNetwork());
+ // The current view is selected
+ List<CyNetwork> selNets = appMgr.getSelectedNetworks();
+ assertEquals(1, selNets.size());
+ assertTrue(selNets.contains(view.getModel()));
+ // The current view is selected
+ List<CyNetworkView> selViews = appMgr.getSelectedNetworkViews();
+ assertEquals(1, selViews.size());
+ assertTrue(selViews.contains(view));
+ }
+
+ @Test
+ public void testSetSelectedNetworks() {
+ final CyNetworkView v1 = newNetworkView();
+ final CyNetworkView v2 = newNetworkView();
+ final CyNetworkView v3 = newNetworkView();
+ final List<CyNetwork> nets = Arrays.asList(new
CyNetwork[]{v1.getModel(), v3.getModel()});
+
+ appMgr.setSelectedNetworks(nets);
+ final List<CyNetwork> selectedNets =
appMgr.getSelectedNetworks();
+ final List<CyNetworkView> selectedViews =
appMgr.getSelectedNetworkViews();
+
+ assertEquals(2, selectedNets.size());
+ assertTrue(selectedNets.containsAll(nets));
+ assertSelected(true, v1.getModel(), v3.getModel());
+ assertSelected(false, v2.getModel());
+ assertEquals(0, selectedViews.size()); // Selecting networks
does NOT select the views!
+ assertNull(appMgr.getCurrentNetwork()); // Shouldn't change the
current network either
+ assertNull(appMgr.getCurrentNetworkView());
+ }
+
+ @Test
+ public void testSetSelectedNetworksIncludesCurrent() {
+ final CyNetwork n1 = newNetwork();
+ final CyNetwork n2 = newNetwork();
+ final CyNetwork n3 = newNetwork();
+ final List<CyNetwork> nets = Arrays.asList(new CyNetwork[]{n1,
n2});
+
+ appMgr.setCurrentNetwork(n3);
+ appMgr.setSelectedNetworks(nets);
+ final List<CyNetwork> selectedNets =
appMgr.getSelectedNetworks();
+
+ assertEquals(3, selectedNets.size());
+ assertTrue(selectedNets.containsAll(nets));
+ assertTrue(selectedNets.contains(n3));
+ assertEquals(n3, appMgr.getCurrentNetwork()); // Shouldn't
change the current network
+ }
+
+ @Test
+ public void testSetSelectedNetworkViews() {
+ final CyNetworkView v1 = newNetworkView();
+ final CyNetworkView v2 = newNetworkView();
+ final CyNetworkView v3 = newNetworkView();
+ final List<CyNetworkView> views = Arrays.asList(new
CyNetworkView[]{v1, v3});
+
+ appMgr.setSelectedNetworkViews(views);
+ final List<CyNetwork> selectedNets =
appMgr.getSelectedNetworks();
+ final List<CyNetworkView> selectedViews =
appMgr.getSelectedNetworkViews();
+
+ assertEquals(2, selectedViews.size());
+ assertTrue(selectedViews.containsAll(views));
+// assertEquals(2, selectedNets.size()); // Selecting views also
selects their models!
+// assertTrue(selectedNets.containsAll(Arrays.asList(new
CyNetwork[]{v1.getModel(), v3.getModel()})));
+ assertNull(appMgr.getCurrentNetwork()); // Shouldn't change the
current network
+ assertNull(appMgr.getCurrentNetworkView());
+ }
+
+ @Test
+ public void testSetSelectedNetworkViewsIncludesCurrent() {
+ final CyNetworkView v1 = newNetworkView();
+ final CyNetworkView v2 = newNetworkView();
+ final CyNetworkView v3 = newNetworkView();
+ final List<CyNetworkView> views = Arrays.asList(new
CyNetworkView[]{v1, v2});
+
+ appMgr.setCurrentNetworkView(v3);
+ appMgr.setSelectedNetworkViews(views);
+ final List<CyNetworkView> selectedViews =
appMgr.getSelectedNetworkViews();
+
+ assertEquals(3, selectedViews.size());
+ assertTrue(selectedViews.containsAll(views));
+ assertTrue(selectedViews.contains(v3));
+ assertEquals(v3, appMgr.getCurrentNetworkView()); // Shouldn't
change the current network view
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testSetCurrentRenderingEngine() {
+ final RenderingEngine<CyNetwork> re =
mock(RenderingEngine.class);
+ appMgr.setCurrentRenderingEngine(re);
+ assertEquals(re, appMgr.getCurrentRenderingEngine());
+ }
+
+ @Test
+ public void testSetCurrentTable() {
+ final CyTable tbl = mock(CyTable.class);
+ appMgr.setCurrentTable(tbl);
+ assertEquals(tbl, appMgr.getCurrentTable());
+ }
+
+ // PRIVATE METHODS
+
+ /**
+ * @return A registered network view
+ */
+ private CyNetworkView newNetworkView() {
+ CyNetworkView view = nvtSupport.getNetworkView();
+ registerNetwork(view.getModel());
+ registerNetworkView(view);
+ return view;
+ }
+
+ /**
+ * @return A registered network
+ */
+ private CyNetwork newNetwork() {
+ CyNetwork net = nvtSupport.getNetwork();
+ registerNetwork(net);
+ return net;
+ }
+
+ private void registerNetwork(CyNetwork net) {
+ netMgr.getNetworkSet().add(net);
+ when(netMgr.getNetwork(net.getSUID())).thenReturn(net);
+ when(netMgr.networkExists(net.getSUID())).thenReturn(true);
+ }
+
+ private void registerNetworkView(CyNetworkView view) {
+ netViewMgr.getNetworkViewSet().add(view);
+ when(netViewMgr.viewExists(view.getModel())).thenReturn(true);
+ Set<CyNetworkView> views = new
HashSet<CyNetworkView>(netViewMgr.getNetworkViews(view.getModel()));
+ views.add(view);
+
when(netViewMgr.getNetworkViews(view.getModel())).thenReturn(views);
+ }
+
+ private void assertSelected(boolean selected, CyNetwork... networks) {
+ for (CyNetwork n : networks)
+ assertEquals("Network: " + n, selected,
n.getRow(n).get(CyNetwork.SELECTED, Boolean.class));
+ }
+
+ private void assertSelected(boolean selected, Collection<CyNetwork>
networks) {
+ for (CyNetwork n : networks)
+ assertEquals("Network: " + n, selected,
n.getRow(n).get(CyNetwork.SELECTED, Boolean.class));
+ }
+}
--
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.