@Test public void forTree_depthFirstPreOrder_twoTrees() { Iterable<Character> result = Traverser.forTree(TWO_TREES).depthFirstPreOrder('a'); assertEqualCharNodes(result, "ab"); }
@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_depthFirstPostOrder_twoTrees() { Iterable<Character> result = Traverser.forTree(TWO_TREES).depthFirstPostOrder('a'); assertEqualCharNodes(result, "ba"); }
@Test public void forGraph_depthFirstPostOrder_diamond() { Traverser<Character> traverser = Traverser.forGraph(DIAMOND_GRAPH); assertEqualCharNodes(traverser.depthFirstPostOrder('a'), "dbca"); assertEqualCharNodes(traverser.depthFirstPostOrder('b'), "db"); assertEqualCharNodes(traverser.depthFirstPostOrder('c'), "dc"); assertEqualCharNodes(traverser.depthFirstPostOrder('d'), "d"); }
@Test public void forGraph_depthFirstPreOrder_diamond() { Traverser<Character> traverser = Traverser.forGraph(DIAMOND_GRAPH); assertEqualCharNodes(traverser.depthFirstPreOrder('a'), "abdc"); assertEqualCharNodes(traverser.depthFirstPreOrder('b'), "bd"); assertEqualCharNodes(traverser.depthFirstPreOrder('c'), "cd"); assertEqualCharNodes(traverser.depthFirstPreOrder('d'), "d"); }
@Test public void forGraph_breadthFirst_cycle() { Traverser<Character> traverser = Traverser.forGraph(CYCLE_GRAPH); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bcda"); assertEqualCharNodes(traverser.breadthFirst('c'), "cdab"); assertEqualCharNodes(traverser.breadthFirst('d'), "dabc"); }
@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 }
public void testFileTraverser_multipleDirectoryLayers_traversalReturnsAll() throws Exception { File fileA = newFile("file-a"); File dir1 = newDir("dir-1"); File fileB = newFile("dir-1/file-b"); File dir2 = newFile("dir-1/dir-2"); assertThat(Files.fileTraverser().breadthFirst(rootDir)) .containsExactly(rootDir, fileA, fileB, dir1, dir2); }
@Test public void forGraph_depthFirstPreOrder_twoTrees() { Iterable<Character> result = Traverser.forGraph(TWO_TREES).depthFirstPreOrder('a'); assertEqualCharNodes(result, "ab"); }
@Test public void forGraph_breadthFirst_twoTrees() { Iterable<Character> result = Traverser.forGraph(TWO_TREES).breadthFirst('a'); assertEqualCharNodes(result, "ab"); }
@Test public void forGraph_depthFirstPostOrder_twoCycles() { Traverser<Character> traverser = Traverser.forGraph(TWO_CYCLES_GRAPH); assertEqualCharNodes(traverser.depthFirstPostOrder('a'), "dcba"); assertEqualCharNodes(traverser.depthFirstPostOrder('b'), "adcb"); assertEqualCharNodes(traverser.depthFirstPostOrder('c'), "badc"); assertEqualCharNodes(traverser.depthFirstPostOrder('d'), "cbad"); }
@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) { } }
public void testFileTraverser_multipleDirectoryLayers_breadthFirstStartsWithTopLayer() throws Exception { Path fileA = newFile("file-a"); Path dir1 = newDir("dir-1"); newFile("dir-1/file-b"); newFile("dir-1/dir-2"); assertThat(Iterables.limit(MoreFiles.fileTraverser().breadthFirst(rootDir), 3)) .containsExactly(rootDir, fileA, dir1); }
@Test public void forTree_depthFirstPreOrder_cyclicGraphContainingTree() throws Exception { Traverser<Character> traverser = Traverser.forTree(CYCLIC_GRAPH_CONTAINING_TREE); assertEqualCharNodes(traverser.depthFirstPreOrder('a'), "abcd"); assertEqualCharNodes(traverser.depthFirstPreOrder('b'), "bcd"); assertEqualCharNodes(traverser.depthFirstPreOrder('d'), "d"); }
@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 forGraph_depthFirstPreOrder_multigraph() { Traverser<Character> traverser = Traverser.forGraph(MULTI_GRAPH); assertEqualCharNodes(traverser.depthFirstPreOrder('a'), "abdc"); assertEqualCharNodes(traverser.depthFirstPreOrder('b'), "bd"); assertEqualCharNodes(traverser.depthFirstPreOrder('c'), "cabd"); assertEqualCharNodes(traverser.depthFirstPreOrder('d'), "d"); }
@Test public void forTree_depthFirstPostOrder_singleRoot() { Iterable<Character> result = Traverser.forTree(SINGLE_ROOT).depthFirstPostOrder('a'); assertEqualCharNodes(result, "a"); }
@Test public void forGraph_breadthFirst_diamond() { Traverser<Character> traverser = Traverser.forGraph(DIAMOND_GRAPH); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bd"); assertEqualCharNodes(traverser.breadthFirst('c'), "cd"); assertEqualCharNodes(traverser.breadthFirst('d'), "d"); }
@Test public void forGraph_depthFirstPostOrder_tree() throws Exception { Traverser<Character> traverser = Traverser.forGraph(TREE); assertEqualCharNodes(traverser.depthFirstPostOrder('h'), "abcdefgh"); assertEqualCharNodes(traverser.depthFirstPostOrder('d'), "abcd"); assertEqualCharNodes(traverser.depthFirstPostOrder('a'), "a"); }
@Test public void forTree_depthFirstPreOrder_singleRoot() { Iterable<Character> result = Traverser.forTree(SINGLE_ROOT).depthFirstPreOrder('a'); assertEqualCharNodes(result, "a"); }