• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.beust.jcommander;
2 
3 import org.testng.Assert;
4 import org.testng.annotations.Test;
5 
6 import java.util.List;
7 
8 /**
9  * Tests for @Parameter on top of methods.
10  */
11 @Test
12 public class MethodSetterTest {
arityStringsSetter()13   public void arityStringsSetter() {
14     class ArgsArityStringSetter {
15 
16       @Parameter(names = "-pairs", arity = 2, description = "Pairs")
17       public void setPairs(List<String> pairs) {
18         this.pairs = pairs;
19       }
20       public List<String> getPairs() {
21         return this.pairs;
22       }
23       public List<String> pairs;
24 
25       @Parameter(description = "Rest")
26       public void setRest(List<String> rest) {
27         this.rest = rest;
28       }
29 //      public List<String> getRest() {
30 //        return this.rest;
31 //      }
32       public List<String> rest;
33     }
34     ArgsArityStringSetter args = new ArgsArityStringSetter();
35     String[] argv = { "-pairs", "pair0", "pair1", "rest" };
36     new JCommander(args, argv);
37 
38     Assert.assertEquals(args.pairs.size(), 2);
39     Assert.assertEquals(args.pairs.get(0), "pair0");
40     Assert.assertEquals(args.pairs.get(1), "pair1");
41     Assert.assertEquals(args.rest.size(), 1);
42     Assert.assertEquals(args.rest.get(0), "rest");
43   }
44 
setterThatThrows()45   public void setterThatThrows() {
46     class Arg {
47       @Parameter(names = "--host")
48       public void setHost(String host) {
49         throw new ParameterException("Illegal host");
50       }
51     }
52     boolean passed = false;
53     try {
54       new JCommander(new Arg(), new String[] { "--host", "host" });
55     } catch(ParameterException ex) {
56       Assert.assertEquals(ex.getCause(), null);
57       passed = true;
58     }
59     Assert.assertTrue(passed, "Should have thrown an exception");
60   }
61 
getterReturningNonString()62   public void getterReturningNonString() {
63     class Arg {
64       private Integer port;
65 
66       @Parameter(names = "--port")
67       public void setPort(String port) {
68         this.port = Integer.parseInt(port);
69       }
70 
71       public Integer getPort() {
72         return port;
73       }
74     }
75     Arg arg = new Arg();
76     new JCommander(arg, new String[] { "--port", "42" });
77 
78     Assert.assertEquals(arg.port, new Integer(42));
79   }
80 
noGetterButWithField()81   public void noGetterButWithField() {
82     class Arg {
83       private Integer port = 43;
84 
85       @Parameter(names = "--port")
86       public void setPort(String port) {
87         this.port = Integer.parseInt(port);
88       }
89     }
90     Arg arg = new Arg();
91     JCommander jc = new JCommander(arg, new String[] { "--port", "42" });
92     ParameterDescription pd = jc.getParameters().get(0);
93     Assert.assertEquals(pd.getDefault(), 43);
94   }
95 
96   @Test(enabled = false)
main(String[] args)97   public static void main(String[] args) throws Exception {
98     new MethodSetterTest().noGetterButWithField();
99   }
100 }
101