package org.web3j.codegen; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.tools.DiagnosticCollector; import javax.tools.JavaCompiler; import javax.tools.JavaFileObject; import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; import org.junit.Test; import org.web3j.TempFileProvider; import static org.junit.Assert.assertTrue; import static org.web3j.codegen.TupleGenerator.CLASS_NAME; import static org.web3j.codegen.TupleGenerator.LIMIT; public class TupleGeneratorTest extends TempFileProvider { @Test public void testTuplesGeneration() throws IOException { TupleGenerator.main(new String[] { tempDirPath }); String baseDir = tempDirPath + File.separatorChar + TupleGenerator.PACKAGE_NAME.replace('.', File.separatorChar); String fileNameBase = baseDir + File.separator + CLASS_NAME; List<String> fileNames = new ArrayList<>(LIMIT); for (int i = 1; i <= LIMIT; i++) { fileNames.add(fileNameBase + i + ".java"); } verifyGeneratedCode(fileNames); } private void verifyGeneratedCode(List<String> sourceFiles) throws IOException { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>(); try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null)) { Iterable<? extends JavaFileObject> compilationUnits = fileManager .getJavaFileObjectsFromStrings(sourceFiles); JavaCompiler.CompilationTask task = compiler.getTask( null, fileManager, diagnostics, null, null, compilationUnits); assertTrue("Generated code contains compile time error", task.call()); } } }