package spoon.test.visitor; import org.junit.Test; import spoon.Launcher; import spoon.reflect.code.CtIf; import spoon.reflect.declaration.CtMethod; import spoon.reflect.visitor.CtScanner; import static org.junit.Assert.assertTrue; /** * Created by marcel on 16.03.16. */ public class VisitorTest { static class MyVisitor extends CtScanner { private int expected; private int actual; public boolean equals = false; public MyVisitor(int expected) { this.expected = expected; } @Override public <T> void visitCtMethod(CtMethod<T> m) { actual = 0; super.visitCtMethod(m); equals = expected == actual; } @Override public void visitCtIf(CtIf ifElement) { actual++; super.visitCtIf(ifElement); } } @Test public void testRecursiveDescent() throws Exception { Launcher launcher = new Launcher(); launcher.addInputResource("./src/test/resources/spoon/test/visitor/Foo.java"); launcher.buildModel(); final MyVisitor visitor = new MyVisitor(2); visitor.scan(launcher.getFactory().Package().getRootPackage()); assertTrue(visitor.equals); } }