/* Copyright 2008-2010 Gephi Authors : Mathieu Bastian <mathieu.bastian@gephi.org> Website : http://www.gephi.org This file is part of Gephi. Gephi is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Gephi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Gephi. If not, see <http://www.gnu.org/licenses/>. */ package org.gephi.graph.dhns.core; import java.util.logging.Logger; import org.gephi.graph.api.GraphView; import org.gephi.data.attributes.api.AttributeController; import org.gephi.graph.api.Edge; import org.gephi.graph.api.Graph; import org.gephi.graph.api.GraphController; import org.gephi.graph.api.GraphFactory; import org.gephi.graph.api.GraphModel; import org.gephi.graph.api.Node; import org.gephi.graph.dhns.node.AbstractNode; import org.gephi.project.api.ProjectController; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.openide.util.Exceptions; import org.openide.util.Lookup; import static org.junit.Assert.*; /** * * @author Mathieu Bastian */ public class DhnsTestId { private GraphModel graphModel; private Graph rootGraph; @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { ProjectController pj = Lookup.getDefault().lookup(ProjectController.class); pj.newProject(); AttributeController ac = Lookup.getDefault().lookup(AttributeController.class); ac.getModel(); GraphController gc = Lookup.getDefault().lookup(GraphController.class); graphModel = gc.getModel(); Graph graph = gc.getModel().getUndirectedGraph(); rootGraph = graph; } @After public void tearDown() { rootGraph = null; graphModel = null; } @Test public void testNodeDefaultId() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode(); rootGraph.addNode(n1); String n1Id = "" + n1.getId(); assertEquals(n1Id, n1.getNodeData().getId()); assertEquals(n1, rootGraph.getNode(n1Id)); } @Test public void testEdgeDefaultId() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode(); Node n2 = factory.newNode(); rootGraph.addNode(n1); rootGraph.addNode(n2); Edge e1 = factory.newEdge(n1, n2); rootGraph.addEdge(e1); String e1Id = "" + e1.getId(); assertEquals(e1Id, e1.getEdgeData().getId()); assertEquals(e1, rootGraph.getEdge(e1Id)); } @Test public void testSetId() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode(); Node n2 = factory.newNode(); rootGraph.addNode(n1); rootGraph.addNode(n2); Edge e1 = factory.newEdge(n1, n2); rootGraph.addEdge(e1); rootGraph.setId(n1, "test"); assertEquals(n1, rootGraph.getNode("test")); rootGraph.setId(e1, "edge"); assertEquals(e1, rootGraph.getEdge("edge")); } @Test public void testNodeUserId() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode("test"); rootGraph.addNode(n1); assertEquals(n1, rootGraph.getNode("test")); rootGraph.setId(n1, "test2"); assertEquals(n1, rootGraph.getNode("test2")); } @Test public void testEdgeUserId() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode(); Node n2 = factory.newNode(); rootGraph.addNode(n1); rootGraph.addNode(n2); Edge e1 = factory.newEdge("test", n1, n2, 1f, false); rootGraph.addEdge(e1); assertEquals(e1, rootGraph.getEdge("test")); rootGraph.setId(e1, "test2"); assertEquals(e1, rootGraph.getEdge("test2")); } @Test public void testViewNodes() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode("n1"); Node n2 = factory.newNode("n2"); rootGraph.addNode(n1); rootGraph.addNode(n2); GraphView newView = graphModel.newView(); Graph graphNewView = graphModel.getGraph(newView); Node n1c = graphNewView.getNode("n1"); assertNotSame(n1, n1c); assertSame(n1.getNodeData(), n1c.getNodeData()); assertEquals(((AbstractNode) n1c).getViewId(), newView.getViewId()); assertSame(n1c, graphNewView.getNode(n1.getId())); graphNewView.removeNode(n1c); assertNull(graphNewView.getNode("n1")); assertNotNull(rootGraph.getNode("n1")); rootGraph.removeNode(n1); assertNull(rootGraph.getNode("n1")); } @Test public void testViewEdges() { GraphFactory factory = graphModel.factory(); Node n1 = factory.newNode("n1"); Node n2 = factory.newNode("n2"); rootGraph.addNode(n1); rootGraph.addNode(n2); Edge e1 = factory.newEdge("e1", n1, n2, 1f, false); rootGraph.addEdge(e1); GraphView newView = graphModel.newView(); Graph graphNewView = graphModel.getGraph(newView); assertNotNull(graphNewView.getEdge(e1.getId())); assertNotNull(graphNewView.getEdge(e1.getEdgeData().getId())); assertSame(e1, graphNewView.getEdge(e1.getId())); graphNewView.removeEdge(graphNewView.getEdge(e1.getId())); assertSame(e1, rootGraph.getEdge(e1.getId())); newView = graphModel.newView(); assertNotNull(rootGraph.getEdge(e1.getId())); ((Dhns) graphModel).destroyView(newView); try { Thread.sleep(1000); } catch (InterruptedException ex) { Exceptions.printStackTrace(ex); } rootGraph.removeEdge(e1); assertNull(rootGraph.getEdge(e1.getId())); rootGraph.addEdge(e1); newView = graphModel.newView(); graphNewView = graphModel.getGraph(newView); Logger.getLogger("").info("clearedges"); graphNewView.clearEdges(); graphNewView = null; ((Dhns) graphModel).destroyView(newView); try { Thread.sleep(2000); } catch (InterruptedException ex) { Exceptions.printStackTrace(ex); } } @Test public void testMetaEdgeId() { //TODO } }