package spoon.test.parent; import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import spoon.Launcher; import spoon.compiler.SpoonResourceHelper; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtMethod; import spoon.reflect.factory.Factory; public class TopLevelTypeTest { Factory factory; @Before public void setup() throws Exception { Launcher spoon = new Launcher(); spoon.setArgs(new String[] {"--output-type", "nooutput" }); factory = spoon.createFactory(); spoon.createCompiler( factory, SpoonResourceHelper .resources("./src/test/java/spoon/test/parent/Foo.java")) .build(); } @Test public void testTopLevelType() throws Exception { CtClass<?> foo = factory.Class().get(Foo.class); assertEquals(foo, foo.getTopLevelType()); CtMethod<?> internalClassMethod = foo.getMethod("internalClass"); assertEquals(foo, internalClassMethod.getDeclaringType()); assertEquals(foo, internalClassMethod.getTopLevelType()); CtClass<?> internalClass = (CtClass<?>)internalClassMethod.getBody().getStatement(0); assertEquals(foo, internalClassMethod.getDeclaringType()); assertEquals(foo, internalClassMethod.getTopLevelType()); CtMethod<?> mm = internalClass.getMethod("m"); assertEquals(internalClass, mm.getDeclaringType()); assertEquals(foo, mm.getTopLevelType()); } }