package spoon.test.varargs; import org.junit.Test; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtMethod; import spoon.reflect.declaration.CtParameter; import spoon.reflect.reference.CtArrayTypeReference; import spoon.reflect.visitor.DefaultJavaPrettyPrinter; import spoon.test.trycatch.Main; import static org.junit.Assert.assertEquals; import static spoon.testing.utils.ModelUtils.build; public class VarArgsTest { @Test public void testModelBuildingInitializer() throws Exception { CtClass<Main> type = build("spoon.test.varargs", "VarArgsSample"); assertEquals("VarArgsSample", type.getSimpleName()); CtMethod<?> m = type.getMethodsByName("foo").get(0); CtParameter<?> param0 = m.getParameters().get(0); assertEquals(false, param0.isVarArgs()); CtParameter<?> param1 = m.getParameters().get(1); assertEquals(true, param1.isVarArgs()); assertEquals("java.lang.String[]", param1.getType().toString()); assertEquals("String[]", param1.getType().getSimpleName()); assertEquals("java.lang.String[]", param1.getType().getQualifiedName()); assertEquals("java.lang.String", ((CtArrayTypeReference<?>)param1.getType()).getComponentType().toString()); // we can even rewrite the vararg assertEquals("void foo(int arg0, java.lang.String... args) {" + DefaultJavaPrettyPrinter.LINE_SEPARATOR + "}", m.toString()); } }