summaryrefslogtreecommitdiffstats
path: root/src/test/java/com/beust/jcommander/MethodSetterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/beust/jcommander/MethodSetterTest.java')
-rw-r--r--src/test/java/com/beust/jcommander/MethodSetterTest.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/test/java/com/beust/jcommander/MethodSetterTest.java b/src/test/java/com/beust/jcommander/MethodSetterTest.java
new file mode 100644
index 0000000..f995ad6
--- /dev/null
+++ b/src/test/java/com/beust/jcommander/MethodSetterTest.java
@@ -0,0 +1,100 @@
+package com.beust.jcommander;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import java.util.List;
+
+/**
+ * Tests for @Parameter on top of methods.
+ */
+@Test
+public class MethodSetterTest {
+ public void arityStringsSetter() {
+ class ArgsArityStringSetter {
+
+ @Parameter(names = "-pairs", arity = 2, description = "Pairs")
+ public void setPairs(List<String> pairs) {
+ this.pairs = pairs;
+ }
+ public List<String> getPairs() {
+ return this.pairs;
+ }
+ public List<String> pairs;
+
+ @Parameter(description = "Rest")
+ public void setRest(List<String> rest) {
+ this.rest = rest;
+ }
+// public List<String> getRest() {
+// return this.rest;
+// }
+ public List<String> rest;
+ }
+ ArgsArityStringSetter args = new ArgsArityStringSetter();
+ String[] argv = { "-pairs", "pair0", "pair1", "rest" };
+ new JCommander(args, argv);
+
+ Assert.assertEquals(args.pairs.size(), 2);
+ Assert.assertEquals(args.pairs.get(0), "pair0");
+ Assert.assertEquals(args.pairs.get(1), "pair1");
+ Assert.assertEquals(args.rest.size(), 1);
+ Assert.assertEquals(args.rest.get(0), "rest");
+ }
+
+ public void setterThatThrows() {
+ class Arg {
+ @Parameter(names = "--host")
+ public void setHost(String host) {
+ throw new ParameterException("Illegal host");
+ }
+ }
+ boolean passed = false;
+ try {
+ new JCommander(new Arg(), new String[] { "--host", "host" });
+ } catch(ParameterException ex) {
+ Assert.assertEquals(ex.getCause(), null);
+ passed = true;
+ }
+ Assert.assertTrue(passed, "Should have thrown an exception");
+ }
+
+ public void getterReturningNonString() {
+ class Arg {
+ private Integer port;
+
+ @Parameter(names = "--port")
+ public void setPort(String port) {
+ this.port = Integer.parseInt(port);
+ }
+
+ public Integer getPort() {
+ return port;
+ }
+ }
+ Arg arg = new Arg();
+ new JCommander(arg, new String[] { "--port", "42" });
+
+ Assert.assertEquals(arg.port, new Integer(42));
+ }
+
+ public void noGetterButWithField() {
+ class Arg {
+ private Integer port = 43;
+
+ @Parameter(names = "--port")
+ public void setPort(String port) {
+ this.port = Integer.parseInt(port);
+ }
+ }
+ Arg arg = new Arg();
+ JCommander jc = new JCommander(arg, new String[] { "--port", "42" });
+ ParameterDescription pd = jc.getParameters().get(0);
+ Assert.assertEquals(pd.getDefault(), 43);
+ }
+
+ @Test(enabled = false)
+ public static void main(String[] args) throws Exception {
+ new MethodSetterTest().noGetterButWithField();
+ }
+}