@Test public void forTree_breadthFirst_twoTrees() { Iterable<Character> result = Traverser.forTree(TWO_TREES).breadthFirst('a'); assertEqualCharNodes(result, "ab"); }
@Test public void forTree_depthFirstPostOrder_twoTrees() { Iterable<Character> result = Traverser.forTree(TWO_TREES).depthFirstPostOrder('a'); assertEqualCharNodes(result, "ba"); }
@Test public void forTree_depthFirstPostOrder_singleRoot() { Iterable<Character> result = Traverser.forTree(SINGLE_ROOT).depthFirstPostOrder('a'); assertEqualCharNodes(result, "a"); }
@Test public void forTree_breadthFirst_singleRoot() { Iterable<Character> result = Traverser.forTree(SINGLE_ROOT).breadthFirst('a'); assertEqualCharNodes(result, "a"); }
@Test public void forTree_depthFirstPreOrder_twoTrees() { Iterable<Character> result = Traverser.forTree(TWO_TREES).depthFirstPreOrder('a'); assertEqualCharNodes(result, "ab"); }
@Test @SuppressWarnings("CheckReturnValue") public void forTree_acceptsDirectedNetwork() throws Exception { MutableNetwork<String, Integer> network = NetworkBuilder.directed().build(); network.addEdge("a", "b", 11); Traverser.forTree(network); // Does not throw }
@Test public void forTree_depthFirstPostOrder_emptyGraph() { try { Traverser.forTree(createDirectedGraph()).depthFirstPostOrder('a'); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected) { } }
@Test public void forTree_withUndirectedGraph_throws() throws Exception { MutableGraph<String> graph = GraphBuilder.undirected().build(); graph.putEdge("a", "b"); try { Traverser.forTree(graph); fail("Expected exception"); } catch (IllegalArgumentException expected) { } }
@Test public void forTree_withUndirectedValueGraph_throws() throws Exception { MutableValueGraph<String, Integer> valueGraph = ValueGraphBuilder.undirected().build(); valueGraph.putEdgeValue("a", "b", 11); try { Traverser.forTree(valueGraph); fail("Expected exception"); } catch (IllegalArgumentException expected) { } }
@Test public void forTree_breadthFirst_cyclicGraphContainingTree() throws Exception { Traverser<Character> traverser = Traverser.forTree(CYCLIC_GRAPH_CONTAINING_TREE); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bcd"); assertEqualCharNodes(traverser.breadthFirst('d'), "d"); }
@Test public void forTree_depthFirstPostOrder_graphContainingTreeAndDiamond() throws Exception { Traverser<Character> traverser = Traverser.forTree(GRAPH_CONTAINING_TREE_AND_DIAMOND); assertEqualCharNodes(traverser.depthFirstPostOrder('a'), "cdba"); assertEqualCharNodes(traverser.depthFirstPostOrder('b'), "cdb"); assertEqualCharNodes(traverser.depthFirstPostOrder('d'), "d"); }
@Test public void forTree_breadthFirst_tree() throws Exception { Traverser<Character> traverser = Traverser.forTree(TREE); assertEqualCharNodes(traverser.breadthFirst('h'), "hdegabcf"); assertEqualCharNodes(traverser.breadthFirst('d'), "dabc"); assertEqualCharNodes(traverser.breadthFirst('a'), "a"); }
@Test public void forTree_breadthFirst_graphContainingTreeAndDiamond() throws Exception { Traverser<Character> traverser = Traverser.forTree(GRAPH_CONTAINING_TREE_AND_DIAMOND); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bcd"); assertEqualCharNodes(traverser.breadthFirst('d'), "d"); }
@Test public void forTree_depthFirstPostOrderIterable_graphContainingTreeAndDiamond() throws Exception { Traverser<Character> traverser = Traverser.forTree(GRAPH_CONTAINING_TREE_AND_DIAMOND); assertEqualCharNodes(traverser.depthFirstPostOrder(charactersOf("a")), "cdba"); assertEqualCharNodes(traverser.depthFirstPostOrder(charactersOf("bg")), "cdbhg"); assertEqualCharNodes(traverser.depthFirstPostOrder(charactersOf("ga")), "hgcdba"); }
@Test public void forTree_depthFirstPreOrderIterable_cyclicGraphContainingTree() throws Exception { Traverser<Character> traverser = Traverser.forTree(CYCLIC_GRAPH_CONTAINING_TREE); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("b")), "bcd"); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("cd")), "cd"); }
@Test public void forTree_depthFirstPreOrderIterable_graphContainingTreeAndDiamond() throws Exception { Traverser<Character> traverser = Traverser.forTree(GRAPH_CONTAINING_TREE_AND_DIAMOND); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("bg")), "bcdgh"); assertEqualCharNodes(traverser.depthFirstPreOrder(charactersOf("ga")), "ghabcd"); }
@Test public void forTree_breadthFirstIterable_cyclicGraphContainingTree() throws Exception { Traverser<Character> traverser = Traverser.forTree(CYCLIC_GRAPH_CONTAINING_TREE); assertEqualCharNodes(traverser.breadthFirst(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("b")), "bcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("cd")), "cd"); }
@Test public void forTree_breadthFirstIterable_tree() throws Exception { Traverser<Character> traverser = Traverser.forTree(TREE); assertEqualCharNodes(traverser.breadthFirst(charactersOf("")), ""); assertEqualCharNodes(traverser.breadthFirst(charactersOf("h")), "hdegabcf"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("gd")), "gdfabc"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("age")), "agef"); }