private void splitFiles(String[] input) { Compiler compiler = new Compiler(); List<SourceFile> files = Lists.newArrayList(); for (int i = 0; i < input.length; i++) { files.add(SourceFile.fromCode("file" + i, input[i])); } compiler.init(ImmutableList.<SourceFile>of(), files, new CompilerOptions()); compiler.parse(); Node original = compiler.getRoot(); Node root = original.cloneTree(); AstParallelizer parallelizer = AstParallelizer.createNewFileLevelAstParallelizer(root); List<Node> forest = parallelizer.split(); assertEquals(input.length, forest.size()); int i = 0; for (Node n : forest) { Node tree = compiler.parseTestCode(input[i++]); assertEquals(compiler.toSource(tree), compiler.toSource(n)); } parallelizer.join(); assertTrue(original.isEquivalentTo(root)); }
/** * Splits at function level with {@link AstParallelizer#split()}, verify the output matches what * is expected and then verify {@link AstParallelizer#join()} can reverse the whole process. */ private void splitFunctions(String input, String... output) { Compiler compiler = new Compiler(); Node original = compiler.parseTestCode(input); Node root = original.cloneTree(); AstParallelizer parallelizer = AstParallelizer.createNewFunctionLevelAstParallelizer(root, true); List<Node> forest = parallelizer.split(); assertEquals(output.length, forest.size()); int i = 0; for (Node n : forest) { Node tree = compiler.parseTestCode(output[i++]); assertEquals(compiler.toSource(tree), compiler.toSource(n)); } parallelizer.join(); assertTrue(original.isEquivalentTo(root)); }