@Test public void forGraph_breadthFirst_multiGraph() { Traverser<Character> traverser = Traverser.forGraph(MULTI_GRAPH); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bd"); assertEqualCharNodes(traverser.breadthFirst('c'), "cadb"); assertEqualCharNodes(traverser.breadthFirst('d'), "d"); }
@Test public void forGraph_breadthFirst_twoCycles() { Traverser<Character> traverser = Traverser.forGraph(TWO_CYCLES_GRAPH); assertEqualCharNodes(traverser.breadthFirst('a'), "abcd"); assertEqualCharNodes(traverser.breadthFirst('b'), "bcda"); assertEqualCharNodes(traverser.breadthFirst('c'), "cdab"); assertEqualCharNodes(traverser.breadthFirst('d'), "dabc"); }
@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 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_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 forGraph_breadthFirstIterable_diamond() { Traverser<Character> traverser = Traverser.forGraph(DIAMOND_GRAPH); assertEqualCharNodes(traverser.breadthFirst(charactersOf("")), ""); assertEqualCharNodes(traverser.breadthFirst(charactersOf("bc")), "bcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("acdb")), "acdb"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("db")), "db"); }
@Test public void forGraph_breadthFirstIterable_cycle() { Traverser<Character> traverser = Traverser.forGraph(CYCLE_GRAPH); assertEqualCharNodes(traverser.breadthFirst(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("bd")), "bdca"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("dc")), "dcab"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("bc")), "bcda"); }
@Test public void forGraph_breadthFirstIterable_multiGraph() { Traverser<Character> traverser = Traverser.forGraph(MULTI_GRAPH); assertEqualCharNodes(traverser.breadthFirst(charactersOf("ac")), "acbd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("cb")), "cbad"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("db")), "db"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("d")), "d"); }
@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"); }
@Test public void forTree_breadthFirstIterable_graphContainingTreeAndDiamond() throws Exception { Traverser<Character> traverser = Traverser.forTree(GRAPH_CONTAINING_TREE_AND_DIAMOND); assertEqualCharNodes(traverser.breadthFirst(charactersOf("a")), "abcd"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("bg")), "bgcdh"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("ga")), "gahbcd"); }
@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 forGraph_breadthFirstIterable_tree() throws Exception { Traverser<Character> traverser = Traverser.forGraph(TREE); assertEqualCharNodes(traverser.breadthFirst(charactersOf("hg")), "hgdefabc"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("gd")), "gdfabc"); assertEqualCharNodes(traverser.breadthFirst(charactersOf("bdgh")), "bdghacfe"); }
@Test public void forGraph_breadthFirst_singleRoot() { Iterable<Character> result = Traverser.forGraph(SINGLE_ROOT).breadthFirst('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 forGraph_breadthFirstIterable_singleRoot() { Iterable<Character> result = Traverser.forGraph(SINGLE_ROOT).breadthFirst(charactersOf("a")); assertEqualCharNodes(result, "a"); }
@Test public void forTree_breadthFirst_emptyGraph() { try { Traverser.forTree(createDirectedGraph()).breadthFirst('a'); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected) { } }
public void testFileTraverser_multipleFilesAndDirectories() throws Exception { File fileA = newFile("file-a"); File fileB = newFile("file-b"); File dir1 = newDir("dir-1"); File dir2 = newDir("dir-2"); assertThat(Files.fileTraverser().breadthFirst(rootDir)) .containsExactly(rootDir, fileA, fileB, dir1, dir2); }
public void testFileTraverser_multipleDirectoryLayers_breadthFirstStartsWithTopLayer() throws Exception { File fileA = newFile("file-a"); File dir1 = newDir("dir-1"); newFile("dir-1/file-b"); newFile("dir-1/dir-2"); assertThat(Iterables.limit(Files.fileTraverser().breadthFirst(rootDir), 3)) .containsExactly(rootDir, fileA, dir1); }
@Test public void forGraph_breadthFirstIterable_javadocExample_canBeIteratedMultipleTimes() { Iterable<Character> result = Traverser.forGraph(JAVADOC_GRAPH).breadthFirst(charactersOf("bf")); assertEqualCharNodes(result, "bfaecd"); assertEqualCharNodes(result, "bfaecd"); }
@Test public void forTree_breadthFirstIterable_iterableIsLazy() { RequestSavingGraph graph = new RequestSavingGraph(TREE); Iterable<Character> result = Traverser.forGraph(graph).breadthFirst(charactersOf("dg")); assertEqualCharNodes(Iterables.limit(result, 3), "dga"); assertThat(graph.requestedNodes).containsExactly('a', 'd', 'd', 'g', 'g'); // Iterate again to see if calculation is done again assertEqualCharNodes(Iterables.limit(result, 3), "dga"); assertThat(graph.requestedNodes).containsExactly('a', 'a', 'd', 'd', 'd', 'g', 'g', 'g'); }