aboutsummaryrefslogtreecommitdiff
path: root/test/org/gnunet/util/getopt/GetoptTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/org/gnunet/util/getopt/GetoptTest.java')
-rw-r--r--test/org/gnunet/util/getopt/GetoptTest.java113
1 files changed, 92 insertions, 21 deletions
diff --git a/test/org/gnunet/util/getopt/GetoptTest.java b/test/org/gnunet/util/getopt/GetoptTest.java
index 81a10a8..e60757e 100644
--- a/test/org/gnunet/util/getopt/GetoptTest.java
+++ b/test/org/gnunet/util/getopt/GetoptTest.java
@@ -25,8 +25,8 @@ import org.junit.Assert;
25import org.junit.Test; 25import org.junit.Test;
26 26
27class Target { 27class Target {
28 @Option( 28 @Argument(
29 action = OptionAction.STORE_STRING, 29 action = ArgumentAction.STORE_STRING,
30 shortname = "s", 30 shortname = "s",
31 longname = "string", 31 longname = "string",
32 argumentName = "SOME_STRING", 32 argumentName = "SOME_STRING",
@@ -34,16 +34,16 @@ class Target {
34 ) 34 )
35 String someString; 35 String someString;
36 36
37 @Option( 37 @Argument(
38 action = OptionAction.SET, 38 action = ArgumentAction.SET,
39 shortname = "y", 39 shortname = "y",
40 longname = "set", 40 longname = "set",
41 description = "enable, default disabled" 41 description = "enable, default disabled"
42 ) 42 )
43 boolean set = false; 43 boolean set = false;
44 44
45 @Option( 45 @Argument(
46 action = OptionAction.RESET, 46 action = ArgumentAction.RESET,
47 shortname = "n", 47 shortname = "n",
48 longname = "reset", 48 longname = "reset",
49 description = "disable, default enabled" 49 description = "disable, default enabled"
@@ -51,21 +51,20 @@ class Target {
51 boolean reset = true; 51 boolean reset = true;
52 52
53 53
54 @Option( 54 @Argument(
55 action = OptionAction.INCREMENT, 55 action = ArgumentAction.STORE_NUMBER,
56 shortname = "i",
57 longname = "inc",
58 description = "increment a counter"
59 )
60 int counter = 0;
61
62 @Option(
63 action = OptionAction.STORE_NUMBER,
64 shortname = "w", 56 shortname = "w",
65 longname = "value", 57 longname = "value",
66 description = "some value" 58 description = "some value"
67 ) 59 )
68 int intVal = 0; 60 int intVal = 0;
61
62 static int someConstant = 42;
63}
64
65class InvalidTarget {
66 @Argument(action = ArgumentAction.SET, shortname = "foo", longname = "bar", description = "bla bla")
67 boolean foo;
69} 68}
70 69
71public class GetoptTest { 70public class GetoptTest {
@@ -74,12 +73,7 @@ public class GetoptTest {
74 Target t = new Target(); 73 Target t = new Target();
75 Parser p = new Parser(t); 74 Parser p = new Parser(t);
76 75
77 t.someString = null;
78 76
79 // argument after shortopt
80 p.parse(new String[]{"-s", "foo"});
81 Assert.assertEquals("foo", t.someString);
82
83 t.someString = null; 77 t.someString = null;
84 78
85 // argument directly with shortopt 79 // argument directly with shortopt
@@ -88,6 +82,12 @@ public class GetoptTest {
88 82
89 t.someString = null; 83 t.someString = null;
90 84
85 // argument after shortopt
86 p.parse(new String[]{"-s", "foo"});
87 Assert.assertEquals("foo", t.someString);
88
89 t.someString = null;
90
91 p.parse(new String[]{"--string=foo"}); 91 p.parse(new String[]{"--string=foo"});
92 Assert.assertEquals("foo", t.someString); 92 Assert.assertEquals("foo", t.someString);
93 93
@@ -186,6 +186,21 @@ public class GetoptTest {
186 Assert.assertArrayEquals(new String[]{"foo", "bar", "--reset", "baz"}, rest); 186 Assert.assertArrayEquals(new String[]{"foo", "bar", "--reset", "baz"}, rest);
187 } 187 }
188 188
189
190 @Test(expected = Parser.ArgumentError.class)
191 public void test_missingLongopt() {
192 Target t = new Target();
193 Parser p = new Parser(t);
194 p.parse(new String[]{"--foobar"});
195 }
196
197 @Test(expected = Parser.ArgumentError.class)
198 public void test_missingShortopt_1() {
199 Target t = new Target();
200 Parser p = new Parser(t);
201 p.parse(new String[]{"-x"});
202 }
203
189 @Test 204 @Test
190 public void test_long() { 205 public void test_long() {
191 Target t = new Target(); 206 Target t = new Target();
@@ -196,6 +211,9 @@ public class GetoptTest {
196 rest = p.parse(new String[]{"-w5"}); 211 rest = p.parse(new String[]{"-w5"});
197 Assert.assertEquals(5, t.intVal); 212 Assert.assertEquals(5, t.intVal);
198 213
214 rest = p.parse(new String[]{"-w", "5"});
215 Assert.assertEquals(5, t.intVal);
216
199 rest = p.parse(new String[]{"--value=6"}); 217 rest = p.parse(new String[]{"--value=6"});
200 Assert.assertEquals(6, t.intVal); 218 Assert.assertEquals(6, t.intVal);
201 219
@@ -213,4 +231,57 @@ public class GetoptTest {
213 } 231 }
214 Assert.assertTrue(thrown); 232 Assert.assertTrue(thrown);
215 } 233 }
234
235
236 @Test(expected = Parser.ArgumentError.class)
237 public void test_missingNumberArgument_short() {
238 Target t = new Target();
239 Parser p = new Parser(t);
240
241 p.parse(new String[]{"-w"});
242 Assert.assertEquals(5, t.intVal);
243 }
244
245 @Test(expected = Parser.ArgumentError.class)
246 public void test_missingNumberArgument_long() {
247 Target t = new Target();
248 Parser p = new Parser(t);
249
250
251 p.parse(new String[]{"--w"});
252 Assert.assertEquals(5, t.intVal);
253 }
254
255
256 @Test(expected = Parser.ArgumentError.class)
257 public void test_invalidNumberFormat() {
258 Target t = new Target();
259 Parser p = new Parser(t);
260
261 String[] rest;
262
263 rest = p.parse(new String[]{"-w", "abc"});
264 Assert.assertEquals(5, t.intVal);
265 }
266
267
268 @Test
269 public void test_dashRest() {
270 Target t = new Target();
271 Parser p = new Parser(t);
272
273 String[] rest;
274
275 rest = p.parse(new String[]{"-w", "123", "-"});
276 Assert.assertArrayEquals(new String[]{"-"}, rest);
277 }
278
279
280 @Test(expected = AssertionError.class)
281 public void test_invalid() {
282 InvalidTarget it = new InvalidTarget();
283 Parser p = new Parser(it);
284
285 p.parse(new String[]{"-foo"});
286 }
216} 287}