package uk.ac.rhul.cs.graph; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import uk.ac.rhul.cs.graph.BreadthFirstSearch; import uk.ac.rhul.cs.graph.Graph; public class BreadthFirstSearchTest { 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 = GraphFactory.createFromEdgeList(edges, weights); } @Test public void testBreadthFirstSearchConstructor() { BreadthFirstSearch bfs = new BreadthFirstSearch(graph, 2); assertEquals(graph, bfs.getGraph()); assertEquals(2, bfs.getSeedNode()); } @Test public void testIterator() { BreadthFirstSearch bfs = new BreadthFirstSearch(graph, 0); List<Integer> list = new ArrayList<Integer>(); for (int node: bfs) list.add(node); assertEquals(7, list.size()); assertEquals(new Integer(0), list.get(0)); assertEquals(new Integer(6), list.get(6)); } @Test public void testRestrictedIterator() { BreadthFirstSearch bfs = new BreadthFirstSearch(graph, 0); int[][] subsets = { { 0, 1, 3, 4, 5, 6 }, { 0, 2, 4 }, { 0, 4, 6 } }; int[][] results = { { 0, 1, 3, 4, 5, 6 }, { 0, 2 }, { 0 } }; for (int i = 0; i < subsets.length; i++) { bfs.restrictToSubgraph(subsets[i]); assertArrayEquals(bfs.toArray(), results[i]); } } }