package tests;
import static org.junit.Assert.*;
import org.junit.Test;
import models.*;
public class DirectedGraphTest {
@Test
public void test() {
// Build a directed graph.
DirectedGraph g = new DirectedGraph();
Node n1 = new Node();
Node n2 = new Node();
Node n3 = new Node();
Node n4 = new Node();
Edge e1 = new Edge(n1, n2);
Edge e2 = new Edge(n2, n3);
Edge e3 = new Edge(n3, n4);
Edge e4 = new Edge(n4, n1);
Edge e5 = new Edge(n1, n3);
g.addEdge(e1);
g.addEdge(e2);
g.addEdge(e3);
g.addEdge(e4);
g.addEdge(e5);
// Check the number of nodes.
assertEquals(4, g.getNodes().size());
// Check the number of edges.
assertEquals(5, g.getEdges().size());
// Check indegrees and outdegrees.
assertEquals(1, n1.getIndegree());
assertEquals(2, n1.getOutdegree());
assertEquals(1, n2.getIndegree());
assertEquals(1, n2.getOutdegree());
assertEquals(2, n3.getIndegree());
assertEquals(1, n3.getOutdegree());
assertEquals(1, n4.getIndegree());
assertEquals(1, n4.getOutdegree());
// Remove an edge.
g.removeEdge(e5);
// Re-check the number of nodes.
assertEquals(4, g.getNodes().size());
// Re-check the number of edges.
assertEquals(4, g.getEdges().size());
// Re-check indegrees and outdegrees.
assertEquals(1, n1.getIndegree());
assertEquals(1, n1.getOutdegree());
assertEquals(1, n2.getIndegree());
assertEquals(1, n2.getOutdegree());
assertEquals(1, n3.getIndegree());
assertEquals(1, n3.getOutdegree());
assertEquals(1, n4.getIndegree());
assertEquals(1, n4.getOutdegree());
}
}