MultiGraphEO2.java
package org.graphstream.graph.implementations;
import static org.junit.Assert.*;
import org.graphstream.graph.Edge;
import org.graphstream.graph.Graph;
import org.graphstream.graph.Node;
import org.graphstream.graph.implementations.MultiGraph;
import org.junit.BeforeClass;
import java.util.Random;
import org.junit.Test;
public class MultiGraphEO2 {
@BeforeClass
public static void setUp() {
}
//TC-MG_C01
@Test
public void testEdgeAdition() {
MultiGraph multiGraph = new MultiGraph("multi-graph");
Node root = multiGraph.addNode("root");
Node leftNode = multiGraph.addNode("leftNode");
Node rightNode = multiGraph.addNode("rightNode");
Edge RL = multiGraph.addEdge("root-left", "root", "leftNode");
Edge RR = multiGraph.addEdge("root-right", "root", "rightNode");
assertEquals(2, multiGraph.getEdgeCount());
// id returns the correct node
assertEquals(root, multiGraph.getNode("root"));
// is undirected graph
assertFalse(RL.isDirected());
// left and right node of the edge RL
assertEquals(root, RL.getNode0());
assertEquals(leftNode, RL.getNode1());
// source and target of the edge RL
assertEquals(root, RL.getSourceNode());
assertEquals(leftNode, RL.getTargetNode());
}
//TC-MG_C02
@Test
public void testEdgeRemoval() {
MultiGraph multiGraph = new MultiGraph("multi-graph");
multiGraph.addNode("root");
multiGraph.addNode("leftNode");
multiGraph.addNode("rightNode");
multiGraph.addEdge("root-left", "root", "leftNode");
multiGraph.addEdge("root-right", "root", "rightNode");
multiGraph.removeEdge("root-left");
assertEquals(1, multiGraph.getEdgeCount());
}
//TC-MG_C03
@Test
public void testAddNode() {
MultiGraph multiGraph = new MultiGraph("multi-graph");
multiGraph.addNode("root");
multiGraph.addNode("leftNode");
multiGraph.addNode("rightNode");
assertEquals(3, multiGraph.getNodeCount());
}
//TC-MG_C04
@Test
public void testRemoveNode() {
MultiGraph multiGraph = new MultiGraph("multi-graph");
multiGraph.addNode("root");
multiGraph.addNode("leftNode");
multiGraph.addNode("rightNode");
multiGraph.addEdge("root-right", "root", "rightNode");
multiGraph.addEdge("left-right", "leftNode", "rightNode");
multiGraph.removeNode("root");
assertEquals(2, multiGraph.getNodeCount());
assertEquals(1, multiGraph.getEdgeCount());
}
//TC-MG_C05
@Test
public void testMultiEdgeAdition() {
MultiGraph multiGraph = new MultiGraph("multi-graph");
multiGraph.addNode("leftNode");
multiGraph.addNode("rightNode");
multiGraph.addEdge("Edge1", "leftNode", "rightNode");
multiGraph.addEdge("Edge2", "leftNode", "rightNode");
assertEquals(2, multiGraph.getEdgeCount());
}
private static MultiGraph graph = new MultiGraph("test");
@BeforeClass
public static void testSetup() {
Node n1 = graph.addNode("node1");
Node n2 = graph.addNode("node2");
graph.addEdge("n1-n2", n1, n2);
}
//TC-MG_C06
@Test
public void testMultiGraphBasics() {
assertNotNull(graph);
assertEquals("test", graph.getId());
}
//TC-MG_C07
@Test
public void testMultiGraphNodes(){
Node n1 = graph.getNode("node1");
Node n2 = graph.getNode("node2");
assertNotNull(n1);
assertNotNull(n2);
assertEquals("node1", n1.getId());
assertEquals("node2", n2.getId());
}
//TC-MG_C08
@Test
public void testMultiGraphEdgesBasics(){
Edge e1 = graph.getEdge("n1-n2");
assertNotNull(e1);
assertEquals("n1-n2", e1.getId());
}
//TC-MG_C09
@Test
public void testMultiGraphEdges1(){
Node n1 = graph.getNode("node1");
Node n2 = graph.getNode("node2");
Edge e1 = graph.getEdge("n1-n2");
assertEquals(n1.getEdgeBetween(n2), e1);
assertEquals(n2.getEdgeBetween(n1), e1);
assertEquals(n1.getEdgeBetween(n2), n2.getEdgeBetween(n1));
}
//TC-MG_C10
@Test(expected= OutOfMemoryError.class)
public void multiGraphOutOfMemoryTest() {
int numberOfNodes = 128 * 1000;
int numberOfEdges = 1024 * 1000;
MultiGraph mg = new MultiGraph("multi", false, false, numberOfNodes, numberOfEdges);
String id = "node_";
for(int i = 0; i<numberOfNodes; i++) {
mg.addNode(id+i);
}
Random random = new Random();
for(int i=0; i<numberOfEdges; i++) {
int id1 = random.nextInt(numberOfNodes);
int id2 = random.nextInt(numberOfNodes);
AbstractNode node1 = mg.getNode("node_"+id1);
AbstractNode node2 = mg.getNode("node_"+id2);
mg.addEdge("edge_"+i, node1, node2);
}
assertEquals(numberOfNodes, mg.getNodeCount());
assertEquals(numberOfEdges, mg.getEdgeCount());
}
}