package bsh;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class VarargsTest {
@Test
public void calling_java_varargs_method_should_be_possible() throws Exception {
final Interpreter interpreter = new Interpreter();
interpreter.set("helper", new ClassWithVarargMethods());
@SuppressWarnings({"unchecked"})
final List<Object> list = (List<Object>) interpreter.eval("helper.list(1,2,3)");
Assert.assertEquals(Arrays.<Object>asList(1,2,3), list);
}
@Test
public void calling_java_varargs_wit_old_syntax_should_be_possible() throws Exception {
final Interpreter interpreter = new Interpreter();
interpreter.set("helper", new ClassWithVarargMethods());
@SuppressWarnings({"unchecked"})
final List<Object> list = (List<Object>) interpreter.eval("helper.list(new Object[] {1,2,3})");
Assert.assertEquals(Arrays.<Object>asList(1,2,3), list);
}
public static class ClassWithVarargMethods {
public List<Object> list(final Object ... args) {
return new ArrayList<Object>(Arrays.asList(args));
}
public List<Object> list(final List<Object> list, final Object ... args) {
list.addAll(Arrays.asList(args));
return list;
}
}
}