package spoon.test.staticFieldAccess; import org.junit.Before; import org.junit.Test; import spoon.Launcher; import spoon.OutputType; import spoon.SpoonModelBuilder; import spoon.compiler.SpoonResourceHelper; import spoon.reflect.code.CtBlock; import spoon.reflect.declaration.CtType; import spoon.reflect.factory.Factory; import java.io.File; import java.util.Arrays; import static org.junit.Assert.assertTrue; public class StaticAccessTest { Launcher spoon; Factory factory; SpoonModelBuilder compiler; @Before public void setUp() throws Exception { spoon = new Launcher(); factory = spoon.createFactory(); compiler = spoon.createCompiler( factory, SpoonResourceHelper .resources( "./src/test/java/spoon/test/staticFieldAccess/internal/", "./src/test/java/spoon/test/staticFieldAccess/StaticAccessBug.java" )); compiler.build(); } @Test public void testReferences() throws Exception { CtType<?> type = (CtType<?>) factory.Type().get("spoon.test.staticFieldAccess.StaticAccessBug"); CtBlock<?> block = type.getMethod("references").getBody(); assertTrue(block.getStatement(0).toString().contains("Extends.MY_STATIC_VALUE")); assertTrue(block.getStatement(1).toString().contains("Extends.MY_OTHER_STATIC_VALUE")); } @Test public void testProcessAndCompile() throws Exception{ compiler.instantiateAndProcess(Arrays.asList(InsertBlockProcessor.class.getName())); // generate files File tmpdir = new File("target/spooned/staticFieldAccess"); tmpdir.mkdirs(); // tmpdir.deleteOnExit(); compiler.setSourceOutputDirectory(tmpdir); compiler.generateProcessedSourceFiles(OutputType.COMPILATION_UNITS); // try to reload generated datas spoon = new Launcher(); compiler = spoon.createCompiler( SpoonResourceHelper .resources(tmpdir.getAbsolutePath())); assertTrue(compiler.build()); } }