package uk.ac.rhul.cs.cl1; import static junit.framework.Assert.*; import org.junit.BeforeClass; import org.junit.Test; import uk.ac.rhul.cs.graph.Graph; /** * Test cases for the NodeSet class * * @author tamas */ public class NodeSetTest { static Graph graph = null; @BeforeClass public static void setUpBefore() { int[] edges = { 0, 1, 1, 3, 3, 4, 4, 6, 6, 5, 5, 3, 3, 2, 2, 0, 0, 3 }; double[] weights = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; graph = new Graph(); graph.createNodes(7); for (int i = 0; i < weights.length; i++) { graph.createEdge(edges[2*i], edges[2*i+1], weights[i]); } } public NodeSet createNewNodeSet() { return new NodeSet(graph); } public NodeSet createNewNodeSet(int[] members) { return new NodeSet(graph, members); } @Test public void testCreation() { NodeSet nodeSet = createNewNodeSet(); assertNotNull(nodeSet); } @Test public void testGetMembers() { int[] members = { 0, 1, 2, 6, 6 }; NodeSet nodeSet = createNewNodeSet(members); Object[] members2 = nodeSet.getMembers().toArray(); Object[] members3 = { 0, 1, 2, 6 }; assertEquals(members2.length, members3.length); for (int i = 0; i < members2.length; i++) assertEquals(members3[i], members2[i]); } @Test public void testSetMembers() { int[] members = { 0, 1, 2, 6, 6 }; NodeSet nodeSet = createNewNodeSet(members); assertNotNull(nodeSet); assertEquals(nodeSet.size(), 4); assert(nodeSet.contains(0)); assert(nodeSet.contains(1)); assert(nodeSet.contains(2)); assert(nodeSet.contains(6)); assertEquals(false, nodeSet.contains(3)); } @Test public void testGetTotalBoundaryWeight() { int[] members = { 0, 1, 2, 6, 6 }; NodeSet nodeSet = createNewNodeSet(); assertNotNull(nodeSet); assertEquals(0.0, nodeSet.getTotalBoundaryEdgeWeight()); nodeSet = createNewNodeSet(members); assertEquals(27.0, nodeSet.getTotalBoundaryEdgeWeight()); } @Test public void testGetTotalInternalWeight() { int[] members = { 0, 1, 2, 6, 6 }; NodeSet nodeSet = createNewNodeSet(); assertNotNull(nodeSet); assertEquals(0.0, nodeSet.getTotalBoundaryEdgeWeight()); nodeSet = createNewNodeSet(members); assertEquals(9.0, nodeSet.getTotalInternalEdgeWeight()); } @Test public void testIsConnected() { int[][] members = { { 0, 1, 2, 6, 6 }, { 0, 1, 2 } }; boolean[] results = { false, true }; for (int i = 0; i < members.length; i++) { NodeSet nodeSet = createNewNodeSet(members[i]); assertEquals(results[i], nodeSet.isConnected()); } } }