/** * Test 0: Graph with no bifurcations. 100 nodes. G = 1 for all edges H = TargetsID - currentID * Expected: 1. Every node should be visited 2. ParentID = SonsID - 1 */ public void test_0() { final int nnodes = 100; Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), nnodes); CountingWalker walker = new CountingWalker(); final AStarIterator iterator = createIterator(ends[0], ends[ends.length - 1]); BasicGraphTraversal traversal = new BasicGraphTraversal(builder().getGraph(), walker, iterator); traversal.init(); traversal.traverse(); GraphVisitor visitor = new GraphVisitor() { public int visit(Graphable component) { assertTrue(component.isVisited()); if (component.getID() == 0) assertNull(iterator.getParent((Node) component)); else assertTrue(component.getID() == iterator.getParent((Node) component).getID() + 1); return 0; } }; builder().getGraph().visitNodes(visitor); assertTrue(walker.getCount() == nnodes); }
/** * Create a graph with no bifurcations and start a traversal from start node, then suspend, and * resume. <br> * <br> * Expected: After suspend: 1. Nodes from 0 to suspend node should be visted, others not. * * <p>After resume: 1. Next node visited should have id suspend node id + 1 2. Every node should * have a parent with id node id + 1 */ public void test_1() { int nnodes = 100; Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), nnodes); final int suspend = 50; CountingWalker walker = new CountingWalker() { int m_mode = 0; public int visit(Graphable element, GraphTraversal traversal) { super.visit(element, traversal); if (m_mode == 0) { if (element.getID() == suspend) { m_mode++; return (GraphTraversal.SUSPEND); } } else if (m_mode == 1) { assertTrue(element.getID() == suspend + 1); m_mode++; } return (GraphTraversal.CONTINUE); } }; final AStarIterator iterator = createIterator(ends[0], ends[ends.length - 1]); BasicGraphTraversal traversal = new BasicGraphTraversal(builder().getGraph(), walker, iterator); traversal.init(); traversal.traverse(); GraphVisitor visitor = new GraphVisitor() { public int visit(Graphable component) { if (component.getID() <= suspend) assertTrue(component.isVisited()); else assertTrue(!component.isVisited()); return 0; } }; builder().getGraph().visitNodes(visitor); assertTrue(walker.getCount() == nnodes - suspend + 1); // resume traversal.traverse(); visitor = new GraphVisitor() { public int visit(Graphable component) { assertTrue(component.isVisited()); if (component.getID() == 0) assertNull(iterator.getParent((Node) component)); else assertTrue(iterator.getParent((Node) component).getID() == component.getID() - 1); return 0; } }; builder().getGraph().visitNodes(visitor); assertTrue(walker.getCount() == nnodes); }