package spoon.test.annotation; import org.junit.Test; import spoon.reflect.code.CtFor; import spoon.reflect.code.CtLocalVariable; import spoon.reflect.declaration.CtType; import spoon.reflect.visitor.filter.TypeFilter; import spoon.test.annotation.testclasses.Pozole; import spoon.testing.utils.ModelUtils; import static org.junit.Assert.assertEquals; public class AnnotationLoopTest { @Test public void testAnnotationDeclaredInForInit() throws Exception { final CtType<Pozole> aPozole = ModelUtils.buildClass(Pozole.class); final CtFor aLoop = aPozole.getMethod("cook").getElements(new TypeFilter<>(CtFor.class)).get(0); assertEquals(3, aLoop.getForInit().size()); assertEquals(SuppressWarnings.class, aLoop.getForInit().get(0).getAnnotations().get(0).getAnnotationType().getActualClass()); assertEquals(SuppressWarnings.class, aLoop.getForInit().get(1).getAnnotations().get(0).getAnnotationType().getActualClass()); assertEquals(SuppressWarnings.class, aLoop.getForInit().get(2).getAnnotations().get(0).getAnnotationType().getActualClass()); assertEquals("u", ((CtLocalVariable) aLoop.getForInit().get(0)).getSimpleName()); assertEquals("p", ((CtLocalVariable) aLoop.getForInit().get(1)).getSimpleName()); assertEquals("e", ((CtLocalVariable) aLoop.getForInit().get(2)).getSimpleName()); assertEquals(aPozole.getFactory().Type().STRING, ((CtLocalVariable) aLoop.getForInit().get(0)).getType()); assertEquals(aPozole.getFactory().Type().STRING, ((CtLocalVariable) aLoop.getForInit().get(1)).getType()); assertEquals(aPozole.getFactory().Type().STRING, ((CtLocalVariable) aLoop.getForInit().get(2)).getType()); final String nl = System.lineSeparator(); final String expected = "for (@java.lang.SuppressWarnings(value = \"rawtypes\")" + nl + "java.lang.String u = \"\", p = \"\", e = \"\"; u != e; u = p , p = \"\") {" + nl + "}"; assertEquals(expected, aLoop.toString()); } }