From e9229f961b3a5799f6798369afe26dec7960249c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 12 Jul 2010 22:42:25 -0700 Subject: Initial commit --- .../java/com/beust/jcommander/JCommanderTest.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/JCommanderTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java new file mode 100644 index 0000000..b525d98 --- /dev/null +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -0,0 +1,34 @@ +package com.beust.jcommander; + +import org.testng.Assert; +import org.testng.annotations.Test; +import org.testng.collections.Lists; + +import java.util.Arrays; +import java.util.List; + +public class JCommanderTest { + @Parameter + public List parameters = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Test + public void simpleArgs() { + JCommanderTest jct = new JCommanderTest(); + String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; + new JCommander(jct, argv); + + System.out.println("Verbose:" + verbose); + Assert.assertEquals(jct.verbose.intValue(), 2); + Assert.assertEquals(jct.groups, "unit"); + Assert.assertEquals(jct.parameters, Arrays.asList("a", "b", "c")); + } +} -- cgit v1.2.3 From 696418a94157048544c44f405d757ede86eec926 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 13 Jul 2010 20:28:54 -0700 Subject: Fixed a bug that showed duplicate lines in usage() --- src/test/java/com/beust/jcommander/JCommanderTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index b525d98..9e170f7 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -31,4 +31,20 @@ public class JCommanderTest { Assert.assertEquals(jct.groups, "unit"); Assert.assertEquals(jct.parameters, Arrays.asList("a", "b", "c")); } + + /** + * Make sure that if there are args with multiple names (e.g. "-log" and "-verbose"), + * the usage will only display it once. + */ + @Test + public void repeatedArgs() { + JCommanderTest jct = new JCommanderTest(); + String[] argv = { "-log", "2" }; + JCommander jc = new JCommander(jct, argv); + Assert.assertEquals(jc.getParameters().size(), 3); + } + + public static void main(String[] args) { + new JCommanderTest().repeatedArgs(); + } } -- cgit v1.2.3 From dc76d5707bd6f5b761772203e9d7c285846e8362 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 13 Jul 2010 21:11:57 -0700 Subject: Added required and tests --- .../java/com/beust/jcommander/JCommanderTest.java | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9e170f7..30af305 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -11,7 +11,7 @@ public class JCommanderTest { @Parameter public List parameters = Lists.newArrayList(); - @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) public Integer verbose = 1; @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") @@ -44,6 +44,36 @@ public class JCommanderTest { Assert.assertEquals(jc.getParameters().size(), 3); } + /** + * Not specifying a required option should throw an exception. + */ + @Test(expectedExceptions = ParameterException.class) + public void requiredFields1() { + JCommanderTest jct = new JCommanderTest(); + String[] argv = { "-debug" }; + JCommander jc = new JCommander(jct, argv); + } + + /** + * Required options with multiple names should work with all names. + */ + @Test + public void requiredFields2() { + JCommanderTest jct = new JCommanderTest(); + String[] argv = { "-log", "2" }; + JCommander jc = new JCommander(jct, argv); + } + + /** + * Required options with multiple names should work with all names. + */ + @Test + public void requiredFields3() { + JCommanderTest jct = new JCommanderTest(); + String[] argv = { "-verbose", "2" }; + JCommander jc = new JCommander(jct, argv); + } + public static void main(String[] args) { new JCommanderTest().repeatedArgs(); } -- cgit v1.2.3 From 9b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 13 Jul 2010 23:13:03 -0700 Subject: Added support for i18n --- src/test/java/com/beust/jcommander/I18N.java | 7 +++++ .../java/com/beust/jcommander/JCommanderTest.java | 31 +++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/I18N.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/I18N.java b/src/test/java/com/beust/jcommander/I18N.java new file mode 100644 index 0000000..8b2f3af --- /dev/null +++ b/src/test/java/com/beust/jcommander/I18N.java @@ -0,0 +1,7 @@ +package com.beust.jcommander; + +public class I18N { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 30af305..d1802ff 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -6,6 +6,8 @@ import org.testng.collections.Lists; import java.util.Arrays; import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; public class JCommanderTest { @Parameter @@ -74,7 +76,34 @@ public class JCommanderTest { JCommander jc = new JCommander(jct, argv); } + private void i18n(Locale locale, String expectedString) { + ResourceBundle bundle = locale != null ? ResourceBundle.getBundle("MessageBundle", locale) + : null; + + I18N i18n = new I18N(); + String[] argv = { "-host", "localhost" }; + JCommander jc = new JCommander(i18n, bundle, argv); + + ParameterDescription pd = jc.getParameters().get(0); + Assert.assertEquals(pd.getDescription(), expectedString); + } + + @Test + public void i18nNoLocale() { + i18n(null, "Host"); + } + + @Test + public void i18nUsLocale() { + i18n(new Locale("en", "US"), "Host"); + } + + @Test + public void i18nFrLocale() { + i18n(new Locale("fr", "FR"), "H™te"); + } + public static void main(String[] args) { - new JCommanderTest().repeatedArgs(); + new JCommanderTest().i18nNoLocale(); } } -- cgit v1.2.3 From 913f6ff2562a4ebcd3aa4dca35ac4f74cad0005b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 13 Jul 2010 23:29:47 -0700 Subject: Documented i18n --- src/test/java/com/beust/jcommander/JCommanderTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index d1802ff..d442c8a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -83,6 +83,7 @@ public class JCommanderTest { I18N i18n = new I18N(); String[] argv = { "-host", "localhost" }; JCommander jc = new JCommander(i18n, bundle, argv); + jc.usage(); ParameterDescription pd = jc.getParameters().get(0); Assert.assertEquals(pd.getDescription(), expectedString); @@ -104,6 +105,6 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().i18nNoLocale(); + new JCommanderTest().i18nFrLocale(); } } -- cgit v1.2.3 From 14516e91e6be4ba1c3e7b573ea450e5c59925ecf Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 13 Jul 2010 23:30:18 -0700 Subject: Removed trace --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index d442c8a..054f28b 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -83,7 +83,7 @@ public class JCommanderTest { I18N i18n = new I18N(); String[] argv = { "-host", "localhost" }; JCommander jc = new JCommander(i18n, bundle, argv); - jc.usage(); +// jc.usage(); ParameterDescription pd = jc.getParameters().get(0); Assert.assertEquals(pd.getDescription(), expectedString); -- cgit v1.2.3 From 94fca5e6d4506c5b070b17db4063ad360a85d8fc Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 08:58:08 -0700 Subject: Better tests --- src/test/java/com/beust/jcommander/Args1.java | 20 +++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 39 ++++++++-------------- 2 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/Args1.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/Args1.java b/src/test/java/com/beust/jcommander/Args1.java new file mode 100644 index 0000000..9105d24 --- /dev/null +++ b/src/test/java/com/beust/jcommander/Args1.java @@ -0,0 +1,20 @@ +package com.beust.jcommander; + +import org.testng.collections.Lists; + +import java.util.List; + +public class Args1 { + @Parameter + public List parameters = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 054f28b..e62419c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -10,28 +10,15 @@ import java.util.Locale; import java.util.ResourceBundle; public class JCommanderTest { - @Parameter - public List parameters = Lists.newArrayList(); - - @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) - public Integer verbose = 1; - - @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") - public String groups; - - @Parameter(names = "-debug", description = "Debug mode") - public boolean debug = false; - @Test public void simpleArgs() { - JCommanderTest jct = new JCommanderTest(); + Args1 args = new Args1(); String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; - new JCommander(jct, argv); + new JCommander(args, argv); - System.out.println("Verbose:" + verbose); - Assert.assertEquals(jct.verbose.intValue(), 2); - Assert.assertEquals(jct.groups, "unit"); - Assert.assertEquals(jct.parameters, Arrays.asList("a", "b", "c")); + Assert.assertEquals(args.verbose.intValue(), 2); + Assert.assertEquals(args.groups, "unit"); + Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c")); } /** @@ -40,9 +27,9 @@ public class JCommanderTest { */ @Test public void repeatedArgs() { - JCommanderTest jct = new JCommanderTest(); + Args1 args = new Args1(); String[] argv = { "-log", "2" }; - JCommander jc = new JCommander(jct, argv); + JCommander jc = new JCommander(args, argv); Assert.assertEquals(jc.getParameters().size(), 3); } @@ -51,9 +38,9 @@ public class JCommanderTest { */ @Test(expectedExceptions = ParameterException.class) public void requiredFields1() { - JCommanderTest jct = new JCommanderTest(); + Args1 args = new Args1(); String[] argv = { "-debug" }; - JCommander jc = new JCommander(jct, argv); + new JCommander(args, argv); } /** @@ -61,9 +48,9 @@ public class JCommanderTest { */ @Test public void requiredFields2() { - JCommanderTest jct = new JCommanderTest(); + Args1 args = new Args1(); String[] argv = { "-log", "2" }; - JCommander jc = new JCommander(jct, argv); + new JCommander(args, argv); } /** @@ -71,9 +58,9 @@ public class JCommanderTest { */ @Test public void requiredFields3() { - JCommanderTest jct = new JCommanderTest(); + Args1 args = new Args1(); String[] argv = { "-verbose", "2" }; - JCommander jc = new JCommander(jct, argv); + new JCommander(args, argv); } private void i18n(Locale locale, String expectedString) { -- cgit v1.2.3 From d4e3897873895131ae5ebef4e9552b15a9e804dd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 09:19:53 -0700 Subject: Added multi object support and tests --- src/test/java/com/beust/jcommander/ArgsMaster.java | 12 ++++++++++++ src/test/java/com/beust/jcommander/ArgsSlave.java | 12 ++++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 17 +++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/ArgsMaster.java create mode 100644 src/test/java/com/beust/jcommander/ArgsSlave.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsMaster.java b/src/test/java/com/beust/jcommander/ArgsMaster.java new file mode 100644 index 0000000..b3a5469 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsMaster.java @@ -0,0 +1,12 @@ +package com.beust.jcommander; + +/** + * Test multi-object parsing, along with ArgsSlave. + * + * @author cbeust + */ +public class ArgsMaster { + @Parameter(names = "-master") + public String master; + +} diff --git a/src/test/java/com/beust/jcommander/ArgsSlave.java b/src/test/java/com/beust/jcommander/ArgsSlave.java new file mode 100644 index 0000000..c360af7 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsSlave.java @@ -0,0 +1,12 @@ +package com.beust.jcommander; + +/** + * Test multi-object parsing, along with ArgsSlave. + * + * @author cbeust + */ +public class ArgsSlave { + @Parameter(names = "-slave") + public String slave; + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index e62419c..fd941d9 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -91,7 +91,24 @@ public class JCommanderTest { i18n(new Locale("fr", "FR"), "H™te"); } + @Test + public void multiObjects() { + ArgsMaster m = new ArgsMaster(); + ArgsSlave s = new ArgsSlave(); + String[] argv = { "-master", "master", "-slave", "slave" }; + new JCommander(new Object[] {m , s}, argv); + + Assert.assertEquals(m.master, "master"); + Assert.assertEquals(s.slave, "slave"); + } + public static void main(String[] args) { +// new JCommanderTest().multiObjects(); new JCommanderTest().i18nFrLocale(); } + + // check that + // - only one main parameter is present + // - Long, Int + } -- cgit v1.2.3 From b945b741b5de0510ce39f8c793e31202070ef942 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 09:23:56 -0700 Subject: Documented multi object --- src/test/java/com/beust/jcommander/ArgsMaster.java | 1 - src/test/java/com/beust/jcommander/ArgsSlave.java | 1 - src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsMaster.java b/src/test/java/com/beust/jcommander/ArgsMaster.java index b3a5469..98e5228 100644 --- a/src/test/java/com/beust/jcommander/ArgsMaster.java +++ b/src/test/java/com/beust/jcommander/ArgsMaster.java @@ -8,5 +8,4 @@ package com.beust.jcommander; public class ArgsMaster { @Parameter(names = "-master") public String master; - } diff --git a/src/test/java/com/beust/jcommander/ArgsSlave.java b/src/test/java/com/beust/jcommander/ArgsSlave.java index c360af7..8f43cc7 100644 --- a/src/test/java/com/beust/jcommander/ArgsSlave.java +++ b/src/test/java/com/beust/jcommander/ArgsSlave.java @@ -8,5 +8,4 @@ package com.beust.jcommander; public class ArgsSlave { @Parameter(names = "-slave") public String slave; - } diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index fd941d9..c7e624d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -96,7 +96,7 @@ public class JCommanderTest { ArgsMaster m = new ArgsMaster(); ArgsSlave s = new ArgsSlave(); String[] argv = { "-master", "master", "-slave", "slave" }; - new JCommander(new Object[] {m , s}, argv); + new JCommander(new Object[] { m , s }, argv); Assert.assertEquals(m.master, "master"); Assert.assertEquals(s.slave, "slave"); -- cgit v1.2.3 From a21262377768de124914e354e428ed6860828949 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 09:40:39 -0700 Subject: Implemented arity and tests --- src/test/java/com/beust/jcommander/JCommanderTest.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c7e624d..8a94804 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -102,9 +102,22 @@ public class JCommanderTest { Assert.assertEquals(s.slave, "slave"); } + @Test + public void arity() { + ArgsArity args = new ArgsArity(); + 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 static void main(String[] args) { // new JCommanderTest().multiObjects(); - new JCommanderTest().i18nFrLocale(); + new JCommanderTest().arity(); } // check that -- cgit v1.2.3 From 0c0b2226295308797b486e7dcc81d10497ad4886 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 09:45:49 -0700 Subject: Now failing if the same option is found more than once --- src/test/java/com/beust/jcommander/ArgsArity.java | 17 +++++++++++++++++ src/test/java/com/beust/jcommander/ArgsSlaveBogus.java | 11 +++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 12 +++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsArity.java create mode 100644 src/test/java/com/beust/jcommander/ArgsSlaveBogus.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsArity.java b/src/test/java/com/beust/jcommander/ArgsArity.java new file mode 100644 index 0000000..9879ef3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsArity.java @@ -0,0 +1,17 @@ +package com.beust.jcommander; + +import java.util.List; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsArity { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public List pairs; + + @Parameter(description = "Rest") + public List rest; +} diff --git a/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java b/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java new file mode 100644 index 0000000..ed72174 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java @@ -0,0 +1,11 @@ +package com.beust.jcommander; + +/** + * Same as ArgsMaster class, should cause an error. + * + * @author cbeust + */ +public class ArgsSlaveBogus extends ArgsSlave { + @Parameter(names = "-master") + public String master; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 8a94804..67f1392 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -102,6 +102,14 @@ public class JCommanderTest { Assert.assertEquals(s.slave, "slave"); } + @Test(expectedExceptions = ParameterException.class) + public void multiObjectsWithDuplicates() { + ArgsMaster m = new ArgsMaster(); + ArgsSlave s = new ArgsSlaveBogus(); + String[] argv = { "-master", "master", "-slave", "slave" }; + new JCommander(new Object[] { m , s }, argv); + } + @Test public void arity() { ArgsArity args = new ArgsArity(); @@ -117,11 +125,13 @@ public class JCommanderTest { public static void main(String[] args) { // new JCommanderTest().multiObjects(); - new JCommanderTest().arity(); + new JCommanderTest().multiObjectsWithDuplicates(); } // check that // - only one main parameter is present // - Long, Int + // - error if same parameter found on different classes + // - error cases in arities } -- cgit v1.2.3 From f3b82e196a622a959374d7588688e74fe852a512 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 10:03:30 -0700 Subject: Documented arities and more tests --- src/test/java/com/beust/jcommander/ArgsArity.java | 17 ----------------- .../java/com/beust/jcommander/ArgsArityInteger.java | 17 +++++++++++++++++ src/test/java/com/beust/jcommander/ArgsArityString.java | 17 +++++++++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 13 ++++++++++--- 4 files changed, 44 insertions(+), 20 deletions(-) delete mode 100644 src/test/java/com/beust/jcommander/ArgsArity.java create mode 100644 src/test/java/com/beust/jcommander/ArgsArityInteger.java create mode 100644 src/test/java/com/beust/jcommander/ArgsArityString.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsArity.java b/src/test/java/com/beust/jcommander/ArgsArity.java deleted file mode 100644 index 9879ef3..0000000 --- a/src/test/java/com/beust/jcommander/ArgsArity.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.beust.jcommander; - -import java.util.List; - -/** - * Test parameter arity. - * - * @author cbeust - */ -public class ArgsArity { - - @Parameter(names = "-pairs", arity = 2, description = "Pairs") - public List pairs; - - @Parameter(description = "Rest") - public List rest; -} diff --git a/src/test/java/com/beust/jcommander/ArgsArityInteger.java b/src/test/java/com/beust/jcommander/ArgsArityInteger.java new file mode 100644 index 0000000..36d8749 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsArityInteger.java @@ -0,0 +1,17 @@ +package com.beust.jcommander; + +import java.util.List; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsArityInteger { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public List pairs; + + @Parameter(description = "Rest") + public List rest; +} diff --git a/src/test/java/com/beust/jcommander/ArgsArityString.java b/src/test/java/com/beust/jcommander/ArgsArityString.java new file mode 100644 index 0000000..281d7d2 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsArityString.java @@ -0,0 +1,17 @@ +package com.beust.jcommander; + +import java.util.List; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsArityString { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public List pairs; + + @Parameter(description = "Rest") + public List rest; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 67f1392..462af85 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -111,8 +111,8 @@ public class JCommanderTest { } @Test - public void arity() { - ArgsArity args = new ArgsArity(); + public void arityString() { + ArgsArityString args = new ArgsArityString(); String[] argv = { "-pairs", "pair0", "pair1", "rest" }; new JCommander(args, argv); @@ -123,9 +123,16 @@ public class JCommanderTest { Assert.assertEquals(args.rest.get(0), "rest"); } + @Test(expectedExceptions = ParameterException.class) + public void arityFail1() { + ArgsArityString args = new ArgsArityString(); + String[] argv = { "-pairs", "pair0" }; + new JCommander(args, argv); + } + public static void main(String[] args) { // new JCommanderTest().multiObjects(); - new JCommanderTest().multiObjectsWithDuplicates(); +// new JCommanderTest().arityInteger(); } // check that -- cgit v1.2.3 From cb91ef843854605fcde3b84ce91ec4d46205a47a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 14 Jul 2010 10:08:56 -0700 Subject: More tests --- .../com/beust/jcommander/ArgsMultipleUnparsed.java | 15 +++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 20 ++++++++++---------- 2 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java b/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java new file mode 100644 index 0000000..a3222f2 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java @@ -0,0 +1,15 @@ +package com.beust.jcommander; + +/** + * Error case if multiple unparsed (without a names attribute) arguments are defined. + * + * @author cbeust + */ +public class ArgsMultipleUnparsed { + + @Parameter(description = "Bogus1") + public String unparsed1; + + @Parameter(description = "Bogus2") + public String unparsed2; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 462af85..1bad968 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -2,10 +2,8 @@ package com.beust.jcommander; import org.testng.Assert; import org.testng.annotations.Test; -import org.testng.collections.Lists; import java.util.Arrays; -import java.util.List; import java.util.Locale; import java.util.ResourceBundle; @@ -13,9 +11,10 @@ public class JCommanderTest { @Test public void simpleArgs() { Args1 args = new Args1(); - String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; + String[] argv = { "-debug", "-log", "2", "-groups", "unit", "a", "b", "c" }; new JCommander(args, argv); + Assert.assertTrue(args.debug); Assert.assertEquals(args.verbose.intValue(), 2); Assert.assertEquals(args.groups, "unit"); Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c")); @@ -130,15 +129,16 @@ public class JCommanderTest { new JCommander(args, argv); } + @Test(expectedExceptions = ParameterException.class) + public void multipleUnparsedFail() { + ArgsMultipleUnparsed args = new ArgsMultipleUnparsed(); + String[] argv = { }; + new JCommander(args, argv); + } + public static void main(String[] args) { // new JCommanderTest().multiObjects(); -// new JCommanderTest().arityInteger(); + new JCommanderTest().multipleUnparsedFail(); } - // check that - // - only one main parameter is present - // - Long, Int - // - error if same parameter found on different classes - // - error cases in arities - } -- cgit v1.2.3 From c3e28e12136391968250719b1627b6b4eaa196cd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 15 Jul 2010 08:38:42 -0700 Subject: Doc, pom and test update --- src/test/java/com/beust/jcommander/JCommanderTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 1bad968..217ac40 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -140,5 +140,7 @@ public class JCommanderTest { // new JCommanderTest().multiObjects(); new JCommanderTest().multipleUnparsedFail(); } - + + // Tests: + // required unparsed parameter } -- cgit v1.2.3 From 5f00acc5afee348e6f3b3741d5e53ca01e508b3e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 16 Jul 2010 07:02:51 -0700 Subject: Documented and tested private parameters --- src/test/java/com/beust/jcommander/JCommanderTest.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 217ac40..7b98061 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -136,6 +136,13 @@ public class JCommanderTest { new JCommander(args, argv); } + @Test + public void privateArgs() { + ArgsPrivate args = new ArgsPrivate(); + new JCommander(args, "-verbose", "3"); + Assert.assertEquals(args.getVerbose().intValue(), 3); + } + public static void main(String[] args) { // new JCommanderTest().multiObjects(); new JCommanderTest().multipleUnparsedFail(); -- cgit v1.2.3 From d095e39e4a4ba659ec031bd7a4695d48502ba5eb Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 16 Jul 2010 09:29:43 -0700 Subject: Added password and test for private fields --- src/test/java/com/beust/jcommander/ArgsPassword.java | 7 +++++++ src/test/java/com/beust/jcommander/ArgsPrivate.java | 10 ++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 6 +++++- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsPassword.java create mode 100644 src/test/java/com/beust/jcommander/ArgsPrivate.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsPassword.java b/src/test/java/com/beust/jcommander/ArgsPassword.java new file mode 100644 index 0000000..5e4b78f --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsPassword.java @@ -0,0 +1,7 @@ +package com.beust.jcommander; + +public class ArgsPassword { + + @Parameter(names = "-password", description = "Connection password", password = true) + public String password; +} diff --git a/src/test/java/com/beust/jcommander/ArgsPrivate.java b/src/test/java/com/beust/jcommander/ArgsPrivate.java new file mode 100644 index 0000000..87ebe5b --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsPrivate.java @@ -0,0 +1,10 @@ +package com.beust.jcommander; + +public class ArgsPrivate { + @Parameter(names = "-verbose") + private Integer verbose = 1; + + public Integer getVerbose() { + return verbose; + } +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7b98061..6a2d95d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -144,8 +144,12 @@ public class JCommanderTest { } public static void main(String[] args) { + ArgsPassword a = new ArgsPassword(); + new JCommander(a, "-password"); + System.out.println("Received:" + a.password); +// Assert.assertEquals(args.getVerbose().intValue(), 3); // new JCommanderTest().multiObjects(); - new JCommanderTest().multipleUnparsedFail(); +// new JCommanderTest().multipleUnparsedFail(); } // Tests: -- cgit v1.2.3 From 6cec497e00d1ccaaf26cffdc2f935246818e9f97 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 16 Jul 2010 09:36:31 -0700 Subject: Documented password --- src/test/java/com/beust/jcommander/ArgsPassword.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsPassword.java b/src/test/java/com/beust/jcommander/ArgsPassword.java index 5e4b78f..1a598a4 100644 --- a/src/test/java/com/beust/jcommander/ArgsPassword.java +++ b/src/test/java/com/beust/jcommander/ArgsPassword.java @@ -1,7 +1,6 @@ package com.beust.jcommander; public class ArgsPassword { - @Parameter(names = "-password", description = "Connection password", password = true) public String password; } -- cgit v1.2.3 From 5a8d2cda56e06eccac04f985cfb6df4886cb270e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 16 Jul 2010 10:47:14 -0700 Subject: Implemented type converters --- src/test/java/com/beust/jcommander/ArgsConverter.java | 16 ++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 19 +++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsConverter.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsConverter.java b/src/test/java/com/beust/jcommander/ArgsConverter.java new file mode 100644 index 0000000..9ccd2e3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsConverter.java @@ -0,0 +1,16 @@ +package com.beust.jcommander; + +import com.beust.jcommander.converters.CommaSeparatedConverter; +import com.beust.jcommander.converters.FileConverter; + +import java.io.File; +import java.util.List; + +public class ArgsConverter { + + @Parameter(names = "-file", converter = FileConverter.class) + File file; + + @Parameter(names = "-days", converter = CommaSeparatedConverter.class) + List days; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 6a2d95d..3d28d32 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -143,12 +143,23 @@ public class JCommanderTest { Assert.assertEquals(args.getVerbose().intValue(), 3); } + @Test + public void converterArgs() { + ArgsConverter args = new ArgsConverter(); + String fileName = "a"; + new JCommander(args, "-file", "/tmp/" + fileName, "-days", "Tuesday,Thursday"); + Assert.assertEquals(args.file.getName(), fileName); + Assert.assertEquals(args.days.size(), 2); + Assert.assertEquals(args.days.get(0), "Tuesday"); + Assert.assertEquals(args.days.get(1), "Thursday"); + } + public static void main(String[] args) { - ArgsPassword a = new ArgsPassword(); - new JCommander(a, "-password"); - System.out.println("Received:" + a.password); +// ArgsPassword a = new ArgsPassword(); +// new JCommander(a, "-password"); +// System.out.println("Received:" + a.password); // Assert.assertEquals(args.getVerbose().intValue(), 3); -// new JCommanderTest().multiObjects(); + new JCommanderTest().converterArgs(); // new JCommanderTest().multipleUnparsedFail(); } -- cgit v1.2.3 From 6734de3a3b73ec9fe6bbfe4f8ba1da9f57264587 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 16 Jul 2010 11:36:41 -0700 Subject: Added @ResourceBundle annotation --- src/test/java/com/beust/jcommander/ArgsI18N1.java | 7 +++++ src/test/java/com/beust/jcommander/ArgsI18N2.java | 8 ++++++ src/test/java/com/beust/jcommander/I18N.java | 7 ----- .../java/com/beust/jcommander/JCommanderTest.java | 30 ++++++++++++++-------- 4 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsI18N1.java create mode 100644 src/test/java/com/beust/jcommander/ArgsI18N2.java delete mode 100644 src/test/java/com/beust/jcommander/I18N.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsI18N1.java b/src/test/java/com/beust/jcommander/ArgsI18N1.java new file mode 100644 index 0000000..bda4ed1 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsI18N1.java @@ -0,0 +1,7 @@ +package com.beust.jcommander; + +public class ArgsI18N1 { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/ArgsI18N2.java b/src/test/java/com/beust/jcommander/ArgsI18N2.java new file mode 100644 index 0000000..cd608e0 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsI18N2.java @@ -0,0 +1,8 @@ +package com.beust.jcommander; + +@ResourceBundle("MessageBundle") +public class ArgsI18N2 { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/I18N.java b/src/test/java/com/beust/jcommander/I18N.java deleted file mode 100644 index 8b2f3af..0000000 --- a/src/test/java/com/beust/jcommander/I18N.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.beust.jcommander; - -public class I18N { - - @Parameter(names = "-host", description = "Host", descriptionKey = "host") - String hostName; -} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 3d28d32..6b0de07 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -36,7 +36,7 @@ public class JCommanderTest { * Not specifying a required option should throw an exception. */ @Test(expectedExceptions = ParameterException.class) - public void requiredFields1() { + public void requiredFields1Fail() { Args1 args = new Args1(); String[] argv = { "-debug" }; new JCommander(args, argv); @@ -62,11 +62,11 @@ public class JCommanderTest { new JCommander(args, argv); } - private void i18n(Locale locale, String expectedString) { - ResourceBundle bundle = locale != null ? ResourceBundle.getBundle("MessageBundle", locale) + private void i18n1(String bundleName, Locale locale, String expectedString) { + ResourceBundle bundle = locale != null ? ResourceBundle.getBundle(bundleName, locale) : null; - I18N i18n = new I18N(); + ArgsI18N1 i18n = new ArgsI18N1(); String[] argv = { "-host", "localhost" }; JCommander jc = new JCommander(i18n, bundle, argv); // jc.usage(); @@ -77,17 +77,27 @@ public class JCommanderTest { @Test public void i18nNoLocale() { - i18n(null, "Host"); + i18n1("MessageBundle", null, "Host"); } @Test public void i18nUsLocale() { - i18n(new Locale("en", "US"), "Host"); + i18n1("MessageBundle", new Locale("en", "US"), "Host"); } @Test public void i18nFrLocale() { - i18n(new Locale("fr", "FR"), "H™te"); + i18n1("MessageBundle", new Locale("fr", "FR"), "H™te"); + } + + @Test + public void i18nWithResourceAnnotation() { + ArgsI18N2 i18n = new ArgsI18N2(); + String[] argv = { "-host", "localhost" }; + Locale.setDefault(new Locale("fr", "FR")); + JCommander jc = new JCommander(i18n, argv); + ParameterDescription pd = jc.getParameters().get(0); + Assert.assertEquals(pd.getDescription(), "H™te"); } @Test @@ -102,7 +112,7 @@ public class JCommanderTest { } @Test(expectedExceptions = ParameterException.class) - public void multiObjectsWithDuplicates() { + public void multiObjectsWithDuplicatesFail() { ArgsMaster m = new ArgsMaster(); ArgsSlave s = new ArgsSlaveBogus(); String[] argv = { "-master", "master", "-slave", "slave" }; @@ -123,7 +133,7 @@ public class JCommanderTest { } @Test(expectedExceptions = ParameterException.class) - public void arityFail1() { + public void arity1Fail() { ArgsArityString args = new ArgsArityString(); String[] argv = { "-pairs", "pair0" }; new JCommander(args, argv); @@ -159,7 +169,7 @@ public class JCommanderTest { // new JCommander(a, "-password"); // System.out.println("Received:" + a.password); // Assert.assertEquals(args.getVerbose().intValue(), 3); - new JCommanderTest().converterArgs(); + new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); } -- cgit v1.2.3 From c27a04a2e10667dff4390b25fa4224b58b291ca0 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Sat, 17 Jul 2010 00:35:36 +0200 Subject: Fix encoding and default locale issues --- src/test/java/com/beust/jcommander/JCommanderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 6b0de07..c4be065 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -87,7 +87,7 @@ public class JCommanderTest { @Test public void i18nFrLocale() { - i18n1("MessageBundle", new Locale("fr", "FR"), "H™te"); + i18n1("MessageBundle", new Locale("fr", "FR"), "Hôte"); } @Test @@ -97,7 +97,7 @@ public class JCommanderTest { Locale.setDefault(new Locale("fr", "FR")); JCommander jc = new JCommander(i18n, argv); ParameterDescription pd = jc.getParameters().get(0); - Assert.assertEquals(pd.getDescription(), "H™te"); + Assert.assertEquals(pd.getDescription(), "Hôte"); } @Test -- cgit v1.2.3 From d3b9e34aed415eba172befec79d2261c3ac38123 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 18 Jul 2010 10:54:24 -0700 Subject: Added arity boolean parameters () --- src/test/java/com/beust/jcommander/JCommanderTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c4be065..2b63ea4 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -164,12 +164,18 @@ public class JCommanderTest { Assert.assertEquals(args.days.get(1), "Thursday"); } + public void booleanArity() { + ArgsBooleanArity args = new ArgsBooleanArity(); + new JCommander(args, "-debug", "true"); + Assert.assertEquals(args.debug, Boolean.TRUE); + } + public static void main(String[] args) { // ArgsPassword a = new ArgsPassword(); // new JCommander(a, "-password"); // System.out.println("Received:" + a.password); // Assert.assertEquals(args.getVerbose().intValue(), 3); - new JCommanderTest().i18nWithResourceAnnotation(); + new JCommanderTest().converterArgs(); // new JCommanderTest().multipleUnparsedFail(); } -- cgit v1.2.3 From c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 18 Jul 2010 17:33:55 -0700 Subject: Test refactoring --- .../java/com/beust/jcommander/JCommanderTest.java | 26 +++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 2b63ea4..b7bb64c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -45,21 +45,21 @@ public class JCommanderTest { /** * Required options with multiple names should work with all names. */ - @Test - public void requiredFields2() { + private void multipleNames(String option) { Args1 args = new Args1(); - String[] argv = { "-log", "2" }; + String[] argv = { option, "2" }; new JCommander(args, argv); + Assert.assertEquals(args.verbose.intValue(), 2); + } + + @Test + public void multipleNames1() { + multipleNames("-log"); } - /** - * Required options with multiple names should work with all names. - */ @Test - public void requiredFields3() { - Args1 args = new Args1(); - String[] argv = { "-verbose", "2" }; - new JCommander(args, argv); + public void multipleNames2() { + multipleNames("-verbose"); } private void i18n1(String bundleName, Locale locale, String expectedString) { @@ -175,8 +175,12 @@ public class JCommanderTest { // new JCommander(a, "-password"); // System.out.println("Received:" + a.password); // Assert.assertEquals(args.getVerbose().intValue(), 3); - new JCommanderTest().converterArgs(); +// new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); + ArgsI18N2 i18n = new ArgsI18N2(); + String[] argv = { "-host", "localhost" }; + JCommander jc = new JCommander(i18n, argv); + jc.usage(); } // Tests: -- cgit v1.2.3 From 899b9ab691c8cae89dd504bf7a09d577dc0abb73 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 18 Jul 2010 20:24:13 -0700 Subject: Forgot test file --- src/test/java/com/beust/jcommander/ArgsBooleanArity.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/ArgsBooleanArity.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsBooleanArity.java b/src/test/java/com/beust/jcommander/ArgsBooleanArity.java new file mode 100644 index 0000000..a352a51 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsBooleanArity.java @@ -0,0 +1,6 @@ +package com.beust.jcommander; + +public class ArgsBooleanArity { + @Parameter(names = "-debug", arity = 1) + Boolean debug = false; +} -- cgit v1.2.3 From 4312bccb3787db4e24d19c16c5786bf2a503a9b9 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 20 Jul 2010 22:03:51 -0700 Subject: Throwing ParameterException if bad parameters passed --- src/test/java/com/beust/jcommander/Args1.java | 2 ++ src/test/java/com/beust/jcommander/JCommanderTest.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/Args1.java b/src/test/java/com/beust/jcommander/Args1.java index 9105d24..6e6074f 100644 --- a/src/test/java/com/beust/jcommander/Args1.java +++ b/src/test/java/com/beust/jcommander/Args1.java @@ -17,4 +17,6 @@ public class Args1 { @Parameter(names = "-debug", description = "Debug mode") public boolean debug = false; + @Parameter(names = "-long", description = "A long number") + public long l; } diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index b7bb64c..da66a0f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -29,7 +29,7 @@ public class JCommanderTest { Args1 args = new Args1(); String[] argv = { "-log", "2" }; JCommander jc = new JCommander(args, argv); - Assert.assertEquals(jc.getParameters().size(), 3); + Assert.assertEquals(jc.getParameters().size(), 4); } /** @@ -170,6 +170,21 @@ public class JCommanderTest { Assert.assertEquals(args.debug, Boolean.TRUE); } + @Test(expectedExceptions = ParameterException.class) + public void badParameterShouldThrowParameter1Exception() { + Args1 args = new Args1(); + String[] argv = { "-log", "foo" }; + new JCommander(args, argv); + } + + + @Test(expectedExceptions = ParameterException.class) + public void badParameterShouldThrowParameter2Exception() { + Args1 args = new Args1(); + String[] argv = { "-long", "foo" }; + new JCommander(args, argv); + } + public static void main(String[] args) { // ArgsPassword a = new ArgsPassword(); // new JCommander(a, "-password"); -- cgit v1.2.3 From 0a0d8099f7e0c2f2f79e6f9233bcfeb7147995e6 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 20 Jul 2010 22:33:08 -0700 Subject: Usage is sorted and aligned --- .../java/com/beust/jcommander/CommandLineArgs.java | 101 +++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 6 +- 2 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/CommandLineArgs.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs.java b/src/test/java/com/beust/jcommander/CommandLineArgs.java new file mode 100644 index 0000000..5adae0f --- /dev/null +++ b/src/test/java/com/beust/jcommander/CommandLineArgs.java @@ -0,0 +1,101 @@ +package com.beust.jcommander; + +import com.beust.jcommander.internal.Lists; + +import java.util.List; + +public class CommandLineArgs { + + @Parameter(description = "The XML suite files to run") + public List suiteFiles = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") + public Integer verbose; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-excludedgroups", description ="Comma-separated list of group names to be " + + "run") + public String excludedGroups; + + @Parameter(names = "-d", description ="Output directory") + public String outputDirectory; + + @Parameter(names = "-junit", description ="JUnit mode") + public Boolean junit = Boolean.FALSE; + + @Parameter(names = "-listener", description = "List of .class files or list of class names" + + " implementing ITestListener or ISuiteListener") + public String listener; + + @Parameter(names = "-methodselectors", description = "List of .class files or list of class " + + "names implementing IMethodSelector") + public String methodSelectors; + + @Parameter(names = "-objectfactory", description = "List of .class files or list of class " + + "names implementing ITestRunnerFactory") + public String objectFactory; + + @Parameter(names = "-parallel", description = "Parallel mode (methods, tests or classes)") + public String parallelMode; + + @Parameter(names = "-configfailurepolicy", description = "Configuration failure policy (skip or continue)") + public String configFailurePolicy; + + @Parameter(names = "-threadcount", description = "Number of threads to use when running tests " + + "in parallel") + public Integer threadCount; + + @Parameter(names = "-dataproviderthreadcount", description = "Number of threads to use when " + + "running data providers") + public Integer dataProviderThreadCount; + + @Parameter(names = "-suitename", description = "Default name of test suite, if not specified " + + "in suite definition file or source code") + public String suiteName; + + @Parameter(names = "-testname", description = "Default name of test, if not specified in suite" + + "definition file or source code") + public String testName; + + @Parameter(names = "-reporter", description = "Extended configuration for custom report listener") + public String reporter; + + /** + * Used as map key for the complete list of report listeners provided with the above argument + */ + @Parameter(names = "-reporterslist") + public String reportersList; + + @Parameter(names = "-usedefaultlisteners", description = "Whether to use the default listeners") + public String useDefaultListeners = "true"; + + @Parameter(names = "-skipfailedinvocationcounts") + public Boolean skipFailedInvocationCounts; + + @Parameter(names = "-testclass", description = "The list of test classes") + public String testClass; + + @Parameter(names = "-testnames", description = "The list of test names to run") + public String testNames; + + @Parameter(names = "-testjar", description = "") + public String testJar; + + @Parameter(names = "-testRunFactory", description = "") + public String testRunFactory; + + @Parameter(names = "-port", description = "The port") + public Integer port; + + @Parameter(names = "-host", description = "The host") + public String host; + + @Parameter(names = "-master", description ="Host where the master is") + public String master; + + @Parameter(names = "-slave", description ="Host where the slave is") + public String slave; + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index da66a0f..7c71fc9 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -192,9 +192,9 @@ public class JCommanderTest { // Assert.assertEquals(args.getVerbose().intValue(), 3); // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); - ArgsI18N2 i18n = new ArgsI18N2(); - String[] argv = { "-host", "localhost" }; - JCommander jc = new JCommander(i18n, argv); + Object a1 = new CommandLineArgs(); + String[] argv = { "-log", "3" }; + JCommander jc = new JCommander(a1, argv); jc.usage(); } -- cgit v1.2.3 From b10564134cd6e95603198fdb0d910af839f79c6a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 20 Jul 2010 23:11:25 -0700 Subject: Added hidden --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7c71fc9..251866e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -192,7 +192,7 @@ public class JCommanderTest { // Assert.assertEquals(args.getVerbose().intValue(), 3); // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); - Object a1 = new CommandLineArgs(); + Object a1 = new Args1(); String[] argv = { "-log", "3" }; JCommander jc = new JCommander(a1, argv); jc.usage(); -- cgit v1.2.3 From 010076fc59e6304034a2294ddae646542b2fbbd1 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 20 Jul 2010 23:23:32 -0700 Subject: Better error messages --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 251866e..6562ab6 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -193,7 +193,7 @@ public class JCommanderTest { // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); Object a1 = new Args1(); - String[] argv = { "-log", "3" }; + String[] argv = new String[] { "-log", "foo" }; JCommander jc = new JCommander(a1, argv); jc.usage(); } -- cgit v1.2.3 From d326f67def5cc55fd7ad3b1c37cc17556f939ebd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 21 Jul 2010 16:15:47 -0700 Subject: Doc typo --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 6562ab6..e8ba9bd 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -194,7 +194,7 @@ public class JCommanderTest { // new JCommanderTest().multipleUnparsedFail(); Object a1 = new Args1(); String[] argv = new String[] { "-log", "foo" }; - JCommander jc = new JCommander(a1, argv); + JCommander jc = new JCommander(a1); jc.usage(); } -- cgit v1.2.3 From 2bf18b767712ce3b24df4be60bc341381432dddd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 21 Jul 2010 17:04:37 -0700 Subject: Inserted a space after description usages --- .../com/beust/jcommander/CommandLineArgs2.java | 49 ++++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/CommandLineArgs2.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/CommandLineArgs2.java new file mode 100644 index 0000000..99613e6 --- /dev/null +++ b/src/test/java/com/beust/jcommander/CommandLineArgs2.java @@ -0,0 +1,49 @@ +package com.beust.jcommander; + +import com.beust.jcommander.converters.FileConverter; + +import java.io.File; + +public class CommandLineArgs2 { + @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.") + public boolean verbose = false; + + @Parameter(names = { "-h", "--help" }, description = "show this help.") + public boolean showHelp = false; + + @Parameter(names = { "-F", "--flush-preferences" }, description = "flush gui preferences.") + public boolean flushPreferences = false; + + @Parameter(names = { "-L", "--flush-licensed" }, description = "flush licensed.") + public boolean flushLicensed = false; + + @Parameter(names = { "-I", "--index-file" }, description = "indexes the given file.") + public String indexFile; + + @Parameter(names = { "-b", "--bonjour" }, description = "enable Bonjour.") + public boolean enableBonjour = false; + + @Parameter(names = { "-m", "--md5" }, description = "create an MD5 checksum for the given file.", converter = FileConverter.class) + public File md5File; + + @Parameter(names = { "-c", "--cat" }, description = "'cat' the given Lilith logfile.", converter = FileConverter.class) + public File catFile; + + @Parameter(names = { "-t", "--tail" }, description = "'tail' the given Lilith logfile.", converter = FileConverter.class) + public File tailFile; + + @Parameter(names = { "-p", "--pattern" }, description = "pattern used by 'cat' or 'tail'.") + public String pattern; + + @Parameter(names = { "-f", "--keep-running" }, description = "keep tailing the given Lilith logfile.") + public boolean keepRunning = false; + + @Parameter(names = { "-n", "--number-of-lines" }, description = "number of entries printed by cat or tail") + public Integer numberOfLines = -1; + + @Parameter(names = { "-e", "--export-preferences" }, description = "export preferences into the given file.") + public String exportPreferencesFile; + + @Parameter(names = { "-i", "--import-preferences" }, description = "import preferences from the given file.") + public String importPreferencesFile; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index e8ba9bd..4234d4f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -192,7 +192,7 @@ public class JCommanderTest { // Assert.assertEquals(args.getVerbose().intValue(), 3); // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); - Object a1 = new Args1(); + Object a1 = new CommandLineArgs2(); String[] argv = new String[] { "-log", "foo" }; JCommander jc = new JCommander(a1); jc.usage(); -- cgit v1.2.3 From 76c4b6ace154f18794f9eb0c3d6211101bf426d0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 21 Jul 2010 19:05:53 -0700 Subject: Including the option name in the conversion error message --- src/test/java/com/beust/jcommander/CommandLineArgs2.java | 4 ++-- src/test/java/com/beust/jcommander/JCommanderTest.java | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/CommandLineArgs2.java index 99613e6..50f8ec7 100644 --- a/src/test/java/com/beust/jcommander/CommandLineArgs2.java +++ b/src/test/java/com/beust/jcommander/CommandLineArgs2.java @@ -5,7 +5,7 @@ import com.beust.jcommander.converters.FileConverter; import java.io.File; public class CommandLineArgs2 { - @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.") + @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.", arity = 1) public boolean verbose = false; @Parameter(names = { "-h", "--help" }, description = "show this help.") @@ -18,7 +18,7 @@ public class CommandLineArgs2 { public boolean flushLicensed = false; @Parameter(names = { "-I", "--index-file" }, description = "indexes the given file.") - public String indexFile; + public Long indexFile; @Parameter(names = { "-b", "--bonjour" }, description = "enable Bonjour.") public boolean enableBonjour = false; diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4234d4f..7c3f1cd 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -193,8 +193,10 @@ public class JCommanderTest { // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); Object a1 = new CommandLineArgs2(); - String[] argv = new String[] { "-log", "foo" }; - JCommander jc = new JCommander(a1); +// String[] argv = new String[] { "-n", "foo" }; +// String[] argv = new String[] { "-v", "t" }; + String[] argv = new String[] { "-I", "t" }; + JCommander jc = new JCommander(a1, argv); jc.usage(); } -- cgit v1.2.3 From 116f9d2fd1500980bbd36255020bfce5b1deb84a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 21 Jul 2010 21:39:47 -0700 Subject: Minor fixes --- src/test/java/com/beust/jcommander/JCommanderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7c3f1cd..69dd45e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -195,8 +195,8 @@ public class JCommanderTest { Object a1 = new CommandLineArgs2(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; - String[] argv = new String[] { "-I", "t" }; - JCommander jc = new JCommander(a1, argv); + String[] argv = null; // new String[] { "-I", "t" }; + JCommander jc = new JCommander(a1); jc.usage(); } -- cgit v1.2.3 From b2b58d4e3845c1eaa85d7a63cf4632f58e634056 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 22 Jul 2010 09:23:00 -0700 Subject: Fixed List bug --- src/test/java/com/beust/jcommander/Args2.java | 23 ++++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 22 +++++++++++++++++---- 2 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/Args2.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/Args2.java b/src/test/java/com/beust/jcommander/Args2.java new file mode 100644 index 0000000..3acf610 --- /dev/null +++ b/src/test/java/com/beust/jcommander/Args2.java @@ -0,0 +1,23 @@ +package com.beust.jcommander; + +import com.beust.jcommander.internal.Lists; + +import java.util.ArrayList; +import java.util.List; + +public class Args2 { + @Parameter(description = "List of parameters") + public List parameters = Lists.newArrayList(); + + @Parameter(names = {"-log", "-verbose"}, description = "Level of verbosity") + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Parameter(names = "-host", description = "The host") + public List hosts = new ArrayList(); +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 69dd45e..babc61d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -185,6 +185,17 @@ public class JCommanderTest { new JCommander(args, argv); } + @Test + public void listParameters() { + Args2 a = new Args2(); + String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"}; + new JCommander(a, argv); + Assert.assertEquals(a.verbose.intValue(), 2); + Assert.assertEquals(a.groups, "unit"); + Assert.assertEquals(a.hosts, Arrays.asList("host2")); + Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c")); + } + public static void main(String[] args) { // ArgsPassword a = new ArgsPassword(); // new JCommander(a, "-password"); @@ -192,12 +203,15 @@ public class JCommanderTest { // Assert.assertEquals(args.getVerbose().intValue(), 3); // new JCommanderTest().i18nWithResourceAnnotation(); // new JCommanderTest().multipleUnparsedFail(); - Object a1 = new CommandLineArgs2(); + Args2 a = new Args2(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; - String[] argv = null; // new String[] { "-I", "t" }; - JCommander jc = new JCommander(a1); - jc.usage(); + String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"}; + JCommander jc = new JCommander(a, argv); + Assert.assertEquals(a.verbose.intValue(), 2); + Assert.assertEquals(a.groups, "unit"); + Assert.assertEquals(a.hosts, Arrays.asList("host2")); + Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c")); } // Tests: -- cgit v1.2.3 From b8010b01b766d131076f7343be5e36e7014319e3 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 23 Jul 2010 10:17:48 -0700 Subject: Introduced @Parameters, moved resourceBundle there --- src/test/java/com/beust/jcommander/JCommanderTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index babc61d..5665d0c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -90,9 +90,7 @@ public class JCommanderTest { i18n1("MessageBundle", new Locale("fr", "FR"), "Hôte"); } - @Test - public void i18nWithResourceAnnotation() { - ArgsI18N2 i18n = new ArgsI18N2(); + private void i18n2(Object i18n) { String[] argv = { "-host", "localhost" }; Locale.setDefault(new Locale("fr", "FR")); JCommander jc = new JCommander(i18n, argv); @@ -100,6 +98,16 @@ public class JCommanderTest { Assert.assertEquals(pd.getDescription(), "Hôte"); } + @Test + public void i18nWithResourceAnnotation() { + i18n2(new ArgsI18N2()); + } + + @Test + public void i18nWithResourceAnnotationNew() { + i18n2(new ArgsI18N2New()); + } + @Test public void multiObjects() { ArgsMaster m = new ArgsMaster(); -- cgit v1.2.3 From 133eecf3498f32ddcfc0930c0b07dd30c702410d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 23 Jul 2010 10:19:03 -0700 Subject: Forgot files --- src/test/java/com/beust/jcommander/ArgsI18N2New.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/ArgsI18N2New.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsI18N2New.java b/src/test/java/com/beust/jcommander/ArgsI18N2New.java new file mode 100644 index 0000000..a12f121 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsI18N2New.java @@ -0,0 +1,8 @@ +package com.beust.jcommander; + +@Parameters(resourceBundle = "MessageBundle") +public class ArgsI18N2New { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} -- cgit v1.2.3 From 85866a95d6479be731596a838b6f5e793a341f5b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 23 Jul 2010 11:19:54 -0700 Subject: First pass at implementing separators --- .../java/com/beust/jcommander/JCommanderTest.java | 28 +++++++++++----------- src/test/java/com/beust/jcommander/Separator.java | 8 +++++++ 2 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/Separator.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5665d0c..a3bcf78 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -203,23 +203,23 @@ public class JCommanderTest { Assert.assertEquals(a.hosts, Arrays.asList("host2")); Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c")); } - + + @Test + public void separatorTest() { + Separator s = new Separator(); + String[] argv = { "-log=3" }; + new JCommander(s, argv); + Assert.assertEquals(s.log.intValue(), 3); + } + public static void main(String[] args) { -// ArgsPassword a = new ArgsPassword(); -// new JCommander(a, "-password"); -// System.out.println("Received:" + a.password); -// Assert.assertEquals(args.getVerbose().intValue(), 3); -// new JCommanderTest().i18nWithResourceAnnotation(); -// new JCommanderTest().multipleUnparsedFail(); - Args2 a = new Args2(); + new JCommanderTest().separatorTest(); +// Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; - String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"}; - JCommander jc = new JCommander(a, argv); - Assert.assertEquals(a.verbose.intValue(), 2); - Assert.assertEquals(a.groups, "unit"); - Assert.assertEquals(a.hosts, Arrays.asList("host2")); - Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c")); +// String[] argv = { "-log=10" }; +// JCommander jc = new JCommander(a, argv); +// Assert.assertEquals(a.log.intValue(), 10); } // Tests: diff --git a/src/test/java/com/beust/jcommander/Separator.java b/src/test/java/com/beust/jcommander/Separator.java new file mode 100644 index 0000000..be69a87 --- /dev/null +++ b/src/test/java/com/beust/jcommander/Separator.java @@ -0,0 +1,8 @@ +package com.beust.jcommander; + +@Parameters(separators = "=") +public class Separator { + + @Parameter(names = "-log") + public Integer log = 2; +} -- cgit v1.2.3 From fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 23 Jul 2010 15:18:22 -0700 Subject: More tests --- .../java/com/beust/jcommander/JCommanderTest.java | 33 ++++++++++++++++++++-- src/test/java/com/beust/jcommander/Separator.java | 8 ------ .../java/com/beust/jcommander/SeparatorColon.java | 8 ++++++ .../java/com/beust/jcommander/SeparatorEqual.java | 8 ++++++ .../java/com/beust/jcommander/SeparatorMixed.java | 11 ++++++++ 5 files changed, 57 insertions(+), 11 deletions(-) delete mode 100644 src/test/java/com/beust/jcommander/Separator.java create mode 100644 src/test/java/com/beust/jcommander/SeparatorColon.java create mode 100644 src/test/java/com/beust/jcommander/SeparatorEqual.java create mode 100644 src/test/java/com/beust/jcommander/SeparatorMixed.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index a3bcf78..7f87d62 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -205,15 +205,42 @@ public class JCommanderTest { } @Test - public void separatorTest() { - Separator s = new Separator(); + public void separatorEqual() { + SeparatorEqual s = new SeparatorEqual(); String[] argv = { "-log=3" }; new JCommander(s, argv); Assert.assertEquals(s.log.intValue(), 3); } + @Test + public void separatorColon() { + SeparatorColon s = new SeparatorColon(); + String[] argv = { "-verbose:true" }; + new JCommander(s, argv); + Assert.assertTrue(s.verbose); + } + + @Test + public void separatorBoth() { + SeparatorColon s = new SeparatorColon(); + SeparatorEqual s2 = new SeparatorEqual(); + String[] argv = { "-verbose:true", "-log=3" }; + new JCommander(new Object[] { s, s2 }, argv); + Assert.assertTrue(s.verbose); + Assert.assertEquals(s2.log.intValue(), 3); + } + + @Test + public void separatorMixed1() { + SeparatorMixed s = new SeparatorMixed(); + String[] argv = { "-long:1", "-level=42" }; + new JCommander(s, argv); + Assert.assertEquals(s.l.longValue(), 1l); + Assert.assertEquals(s.level.intValue(), 42); + } + public static void main(String[] args) { - new JCommanderTest().separatorTest(); + new JCommanderTest().separatorMixed1(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; diff --git a/src/test/java/com/beust/jcommander/Separator.java b/src/test/java/com/beust/jcommander/Separator.java deleted file mode 100644 index be69a87..0000000 --- a/src/test/java/com/beust/jcommander/Separator.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.beust.jcommander; - -@Parameters(separators = "=") -public class Separator { - - @Parameter(names = "-log") - public Integer log = 2; -} diff --git a/src/test/java/com/beust/jcommander/SeparatorColon.java b/src/test/java/com/beust/jcommander/SeparatorColon.java new file mode 100644 index 0000000..8dc8421 --- /dev/null +++ b/src/test/java/com/beust/jcommander/SeparatorColon.java @@ -0,0 +1,8 @@ +package com.beust.jcommander; + +@Parameters(separators = ":") +public class SeparatorColon { + + @Parameter(names = "-verbose", arity = 1) + public boolean verbose = false; +} diff --git a/src/test/java/com/beust/jcommander/SeparatorEqual.java b/src/test/java/com/beust/jcommander/SeparatorEqual.java new file mode 100644 index 0000000..64dd08c --- /dev/null +++ b/src/test/java/com/beust/jcommander/SeparatorEqual.java @@ -0,0 +1,8 @@ +package com.beust.jcommander; + +@Parameters(separators = "=") +public class SeparatorEqual { + + @Parameter(names = "-log") + public Integer log = 2; +} diff --git a/src/test/java/com/beust/jcommander/SeparatorMixed.java b/src/test/java/com/beust/jcommander/SeparatorMixed.java new file mode 100644 index 0000000..8229e1f --- /dev/null +++ b/src/test/java/com/beust/jcommander/SeparatorMixed.java @@ -0,0 +1,11 @@ +package com.beust.jcommander; + +@Parameters(separators = ":=") +public class SeparatorMixed { + + @Parameter(names = "-level") + public Integer level = 0; + + @Parameter(names = "-long") + public Long l = 0l; +} -- cgit v1.2.3 From e78248b969b0fa0f217ce85e43d39a1d7c055753 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 24 Jul 2010 14:29:56 -0700 Subject: 1.3 --- .../java/com/beust/jcommander/CommandLineArgs2.java | 4 ++++ .../java/com/beust/jcommander/JCommanderTest.java | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/CommandLineArgs2.java index 50f8ec7..75e345f 100644 --- a/src/test/java/com/beust/jcommander/CommandLineArgs2.java +++ b/src/test/java/com/beust/jcommander/CommandLineArgs2.java @@ -3,8 +3,12 @@ package com.beust.jcommander; import com.beust.jcommander.converters.FileConverter; import java.io.File; +import java.util.List; public class CommandLineArgs2 { + @Parameter(description = "list of files") + List list; + @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.", arity = 1) public boolean verbose = false; diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7f87d62..17f8b2e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1,6 +1,7 @@ package com.beust.jcommander; import org.testng.Assert; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.Arrays; @@ -239,8 +240,24 @@ public class JCommanderTest { Assert.assertEquals(s.level.intValue(), 42); } + @DataProvider + public static Object[][] f() { + return new Integer[][] { + new Integer[] { 3, 5, 1 }, + new Integer[] { 3, 8, 1 }, + new Integer[] { 3, 12, 2 }, + new Integer[] { 8, 12, 2 }, + new Integer[] { 9, 10, 1 }, + }; + } + public static void main(String[] args) { - new JCommanderTest().separatorMixed1(); +// for (Object[] p : f()) { +// int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); +// Assert.assertEquals(tc, ((Integer) p[2]).intValue()); +// } +// new JCommanderTest().formatting(); + new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From bc108076cf3dc506d4e87e004d8c2e413b995ada Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 25 Jul 2010 07:41:05 -0700 Subject: 1.3 --- src/test/java/com/beust/jcommander/JCommanderTest.java | 3 ++- src/test/java/com/beust/jcommander/SeparatorEqual.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 17f8b2e..81e53c0 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -208,9 +208,10 @@ public class JCommanderTest { @Test public void separatorEqual() { SeparatorEqual s = new SeparatorEqual(); - String[] argv = { "-log=3" }; + String[] argv = { "-log=3", "--longoption=10" }; new JCommander(s, argv); Assert.assertEquals(s.log.intValue(), 3); + Assert.assertEquals(s.longOption.intValue(), 10); } @Test diff --git a/src/test/java/com/beust/jcommander/SeparatorEqual.java b/src/test/java/com/beust/jcommander/SeparatorEqual.java index 64dd08c..b507501 100644 --- a/src/test/java/com/beust/jcommander/SeparatorEqual.java +++ b/src/test/java/com/beust/jcommander/SeparatorEqual.java @@ -5,4 +5,7 @@ public class SeparatorEqual { @Parameter(names = "-log") public Integer log = 2; + + @Parameter(names = "--longoption") + public Integer longOption; } -- cgit v1.2.3 From 78fcfb77f843f4636b50d40f69ce60cb0c2ae7bd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 26 Jul 2010 22:15:02 -0700 Subject: Support for IDefaultProvider --- .../java/com/beust/jcommander/ArgsDefault.java | 23 +++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 24 ++++++++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsDefault.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsDefault.java b/src/test/java/com/beust/jcommander/ArgsDefault.java new file mode 100644 index 0000000..60fd553 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsDefault.java @@ -0,0 +1,23 @@ +package com.beust.jcommander; + +import org.testng.collections.Lists; + +import java.util.List; + +public class ArgsDefault { + @Parameter + public List parameters = Lists.newArrayList(); + + @Parameter(names = "-log", description = "Level of verbosity") + public Integer log = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Parameter(names = "-long", description = "A long number") + public long l; + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 81e53c0..9d6bb83 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -252,13 +252,33 @@ public class JCommanderTest { }; } + @Test + public void defaultProvider1() { + ArgsDefault a = new ArgsDefault(); + JCommander jc = new JCommander(a); + jc.setDefaultProvider(new IDefaultProvider() { + + @Override + public String getDefaultValueFor(String optionName) { + return "-debug".equals(optionName) ? "false" : "42"; + } + + }); + + jc.parse("f"); + + Assert.assertEquals(a.groups, "42"); + Assert.assertEquals(a.l, 42); + Assert.assertEquals(a.log.intValue(), 42); + } + public static void main(String[] args) { // for (Object[] p : f()) { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } -// new JCommanderTest().formatting(); - new JCommander(new CommandLineArgs2()).usage(); + new JCommanderTest().defaultProvider1(); +// new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From 35435b045d8f218d0202c53ea76e316442c6eccc Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 26 Jul 2010 22:25:36 -0700 Subject: More tests for default providers --- .../java/com/beust/jcommander/ArgsDefault.java | 4 +-- .../java/com/beust/jcommander/JCommanderTest.java | 42 +++++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsDefault.java b/src/test/java/com/beust/jcommander/ArgsDefault.java index 60fd553..acf71bb 100644 --- a/src/test/java/com/beust/jcommander/ArgsDefault.java +++ b/src/test/java/com/beust/jcommander/ArgsDefault.java @@ -17,7 +17,7 @@ public class ArgsDefault { @Parameter(names = "-debug", description = "Debug mode") public boolean debug = false; - @Parameter(names = "-long", description = "A long number") - public long l; + @Parameter(names = "-level", description = "A long number") + public long level; } diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9d6bb83..a48441e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -252,8 +252,7 @@ public class JCommanderTest { }; } - @Test - public void defaultProvider1() { + private ArgsDefault defaultProvider(String... args) { ArgsDefault a = new ArgsDefault(); JCommander jc = new JCommander(a); jc.setDefaultProvider(new IDefaultProvider() { @@ -265,19 +264,52 @@ public class JCommanderTest { }); - jc.parse("f"); + jc.parse(args); + return a; + } + + @Test + public void defaultProvider1() { + ArgsDefault a = defaultProvider("f"); Assert.assertEquals(a.groups, "42"); - Assert.assertEquals(a.l, 42); + Assert.assertEquals(a.level, 42); + Assert.assertEquals(a.log.intValue(), 42); + } + + @Test + public void defaultProvider2() { + ArgsDefault a = defaultProvider("-groups", "foo", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 42); + Assert.assertEquals(a.log.intValue(), 42); + } + + @Test + public void defaultProvider3() { + ArgsDefault a = defaultProvider("-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); Assert.assertEquals(a.log.intValue(), 42); } + @Test + public void defaultProvider4() { + ArgsDefault a = defaultProvider("-log", "19", "-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); + Assert.assertEquals(a.log.intValue(), 19); + } + public static void main(String[] args) { // for (Object[] p : f()) { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } - new JCommanderTest().defaultProvider1(); + new JCommanderTest().defaultProvider2(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From eca9dc8ab293c10f16a104e107b402b61c4c76de Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 27 Jul 2010 07:44:31 -0700 Subject: Added PropertyFileDefaultProvider --- .../java/com/beust/jcommander/JCommanderTest.java | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index a48441e..603cf59 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1,5 +1,7 @@ package com.beust.jcommander; +import com.beust.jcommander.defaultprovider.PropertyFileDefaultProvider; + import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -253,16 +255,20 @@ public class JCommanderTest { } private ArgsDefault defaultProvider(String... args) { - ArgsDefault a = new ArgsDefault(); - JCommander jc = new JCommander(a); - jc.setDefaultProvider(new IDefaultProvider() { + return defaultProvider(new IDefaultProvider() { @Override public String getDefaultValueFor(String optionName) { return "-debug".equals(optionName) ? "false" : "42"; } - }); + }, args); + } + + private ArgsDefault defaultProvider(IDefaultProvider provider, String... args) { + ArgsDefault a = new ArgsDefault(); + JCommander jc = new JCommander(a); + jc.setDefaultProvider(provider); jc.parse(args); return a; @@ -304,12 +310,21 @@ public class JCommanderTest { Assert.assertEquals(a.log.intValue(), 19); } + @Test + public void propertyFileDefaultProvider1() { + ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), "f"); + + Assert.assertEquals(a.groups, "unit"); + Assert.assertEquals(a.level, 17); + Assert.assertEquals(a.log.intValue(), 18); + } + public static void main(String[] args) { // for (Object[] p : f()) { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } - new JCommanderTest().defaultProvider2(); + new JCommanderTest().propertyFileDefaultProvider1(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From c63fd2224e04bc4c02b416da83b8e210abfe35c4 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 27 Jul 2010 11:05:19 -0700 Subject: More DefaultProvider tests --- .../com/beust/jcommander/DefaultProviderTest.java | 102 +++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 67 +------------- 2 files changed, 103 insertions(+), 66 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/DefaultProviderTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/DefaultProviderTest.java b/src/test/java/com/beust/jcommander/DefaultProviderTest.java new file mode 100644 index 0000000..d2492db --- /dev/null +++ b/src/test/java/com/beust/jcommander/DefaultProviderTest.java @@ -0,0 +1,102 @@ +package com.beust.jcommander; + +import com.beust.jcommander.defaultprovider.PropertyFileDefaultProvider; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class DefaultProviderTest { + private static final IDefaultProvider DEFAULT_PROVIDER = new IDefaultProvider() { + + @Override + public String getDefaultValueFor(String optionName) { + return "-debug".equals(optionName) ? "false" : "42"; + } + + }; + + private ArgsDefault defaultProvider(IDefaultProvider provider, String... args) { + ArgsDefault a = new ArgsDefault(); + JCommander jc = new JCommander(a); + jc.setDefaultProvider(provider); + + jc.parse(args); + return a; + } + + @Test + public void defaultProvider1() { + ArgsDefault a = defaultProvider(DEFAULT_PROVIDER, "f"); + + Assert.assertEquals(a.groups, "42"); + Assert.assertEquals(a.level, 42); + Assert.assertEquals(a.log.intValue(), 42); + } + + @Test + public void defaultProvider2() { + ArgsDefault a = defaultProvider(DEFAULT_PROVIDER, "-groups", "foo", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 42); + Assert.assertEquals(a.log.intValue(), 42); + } + + @Test + public void defaultProvider3() { + ArgsDefault a = defaultProvider(DEFAULT_PROVIDER, "-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); + Assert.assertEquals(a.log.intValue(), 42); + } + + @Test + public void defaultProvider4() { + ArgsDefault a = defaultProvider(DEFAULT_PROVIDER, + "-log", "19", "-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); + Assert.assertEquals(a.log.intValue(), 19); + } + + @Test + public void propertyFileDefaultProvider1() { + ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), "f"); + + Assert.assertEquals(a.groups, "unit"); + Assert.assertEquals(a.level, 17); + Assert.assertEquals(a.log.intValue(), 18); + } + + @Test + public void propertyFileDefaultProvider2() { + ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), "-groups", "foo", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 17); + Assert.assertEquals(a.log.intValue(), 18); + } + + @Test + public void propertyFileDefaultProvider3() { + ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), + "-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); + Assert.assertEquals(a.log.intValue(), 18); + } + + @Test + public void propertyFileDefaultProvider4() { + ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), + "-log", "19", "-groups", "foo", "-level", "13", "f"); + + Assert.assertEquals(a.groups, "foo"); + Assert.assertEquals(a.level, 13); + Assert.assertEquals(a.log.intValue(), 19); + } + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 603cf59..971ac80 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -254,77 +254,12 @@ public class JCommanderTest { }; } - private ArgsDefault defaultProvider(String... args) { - return defaultProvider(new IDefaultProvider() { - - @Override - public String getDefaultValueFor(String optionName) { - return "-debug".equals(optionName) ? "false" : "42"; - } - - }, args); - } - - private ArgsDefault defaultProvider(IDefaultProvider provider, String... args) { - ArgsDefault a = new ArgsDefault(); - JCommander jc = new JCommander(a); - jc.setDefaultProvider(provider); - - jc.parse(args); - return a; - } - - @Test - public void defaultProvider1() { - ArgsDefault a = defaultProvider("f"); - - Assert.assertEquals(a.groups, "42"); - Assert.assertEquals(a.level, 42); - Assert.assertEquals(a.log.intValue(), 42); - } - - @Test - public void defaultProvider2() { - ArgsDefault a = defaultProvider("-groups", "foo", "f"); - - Assert.assertEquals(a.groups, "foo"); - Assert.assertEquals(a.level, 42); - Assert.assertEquals(a.log.intValue(), 42); - } - - @Test - public void defaultProvider3() { - ArgsDefault a = defaultProvider("-groups", "foo", "-level", "13", "f"); - - Assert.assertEquals(a.groups, "foo"); - Assert.assertEquals(a.level, 13); - Assert.assertEquals(a.log.intValue(), 42); - } - - @Test - public void defaultProvider4() { - ArgsDefault a = defaultProvider("-log", "19", "-groups", "foo", "-level", "13", "f"); - - Assert.assertEquals(a.groups, "foo"); - Assert.assertEquals(a.level, 13); - Assert.assertEquals(a.log.intValue(), 19); - } - - @Test - public void propertyFileDefaultProvider1() { - ArgsDefault a = defaultProvider(new PropertyFileDefaultProvider(), "f"); - - Assert.assertEquals(a.groups, "unit"); - Assert.assertEquals(a.level, 17); - Assert.assertEquals(a.log.intValue(), 18); - } - public static void main(String[] args) { // for (Object[] p : f()) { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } - new JCommanderTest().propertyFileDefaultProvider1(); + new DefaultProviderTest().propertyFileDefaultProvider1(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From 5f57e62a9aad979f2fe17e6d61ce5d05136661db Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 27 Jul 2010 15:02:56 -0700 Subject: Added support for -- --- src/test/java/com/beust/jcommander/JCommanderTest.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 971ac80..8929d0d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -243,6 +243,20 @@ public class JCommanderTest { Assert.assertEquals(s.level.intValue(), 42); } + @Test + public void negativeNumbers() { + Args1 a = new Args1(); + String[] argv = { "-verbose", "--", "-3", "-long", "--", "-4" }; + new JCommander(a, argv); + Assert.assertEquals(a.verbose.intValue(), -3); + Assert.assertEquals(a.l, -4); + } + + @Test + public void requiredMainParameters() { + // + } + @DataProvider public static Object[][] f() { return new Integer[][] { @@ -259,7 +273,7 @@ public class JCommanderTest { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } - new DefaultProviderTest().propertyFileDefaultProvider1(); + new JCommanderTest().negativeNumbers(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From 7e185fed573b35ea0769f59348e640514da392b0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 27 Jul 2010 22:26:37 -0700 Subject: Showing required parameters in usage --- src/test/java/com/beust/jcommander/JCommanderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 971ac80..7817651 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -259,8 +259,8 @@ public class JCommanderTest { // int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } - new DefaultProviderTest().propertyFileDefaultProvider1(); -// new JCommander(new CommandLineArgs2()).usage(); +// new DefaultProviderTest().propertyFileDefaultProvider1(); + new JCommander(new Args1()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From ff21d677513a8fc628476d926a7f9c7a6dec9570 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 27 Jul 2010 22:41:00 -0700 Subject: Usage is now showing required parameters and default value --- src/test/java/com/beust/jcommander/JCommanderTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index e44e92e..be2fdc8 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -274,9 +274,9 @@ public class JCommanderTest { // Assert.assertEquals(tc, ((Integer) p[2]).intValue()); // } // new DefaultProviderTest().propertyFileDefaultProvider1(); -// new JCommander(new Args1()).usage(); - new JCommanderTest().negativeNumbers(); -// new JCommander(new CommandLineArgs2()).usage(); +// new JCommander(new Args1(), "foo"); +// new JCommanderTest().negativeNumbers(); + new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From 4ddd0bb457c9fc2ffbc5693142b2f451dbc4d15d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 07:40:30 -0700 Subject: Added addConverterFactory --- .../com/beust/jcommander/ArgsConverterFactory.java | 12 ++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 32 ++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsConverterFactory.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsConverterFactory.java b/src/test/java/com/beust/jcommander/ArgsConverterFactory.java new file mode 100644 index 0000000..90c2a5d --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsConverterFactory.java @@ -0,0 +1,12 @@ +package com.beust.jcommander; + +import java.io.File; + +public class ArgsConverterFactory { + + @Parameter(names = "-file") + File file; + + @Parameter(names = "-integer") + Integer integer; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index be2fdc8..751c504 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1,13 +1,16 @@ package com.beust.jcommander; -import com.beust.jcommander.defaultprovider.PropertyFileDefaultProvider; +import com.beust.jcommander.converters.FileConverter; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.io.File; import java.util.Arrays; +import java.util.HashMap; import java.util.Locale; +import java.util.Map; import java.util.ResourceBundle; public class JCommanderTest { @@ -252,6 +255,29 @@ public class JCommanderTest { Assert.assertEquals(a.l, -4); } + private static final Map>> MAP = new HashMap() {{ + put(File.class, FileConverter.class); + }}; + + private static final IStringConverterFactory CONVERTER_FACTORY = new IStringConverterFactory() { + + @Override + public Class> getConverter(Class forType) { + return MAP.get(forType); + } + + }; + + @Test + public void converterFactory() { + ArgsConverterFactory a = new ArgsConverterFactory(); + JCommander jc = new JCommander(a); + jc.addConverterFactory(CONVERTER_FACTORY); + jc.parse("-file", "/tmp/a"); + + Assert.assertEquals(a.file.getName(), "a"); + } + @Test public void requiredMainParameters() { // @@ -275,8 +301,8 @@ public class JCommanderTest { // } // new DefaultProviderTest().propertyFileDefaultProvider1(); // new JCommander(new Args1(), "foo"); -// new JCommanderTest().negativeNumbers(); - new JCommander(new CommandLineArgs2()).usage(); + new DefaultProviderTest().defaultProvider1(); +// new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From 103fe3e72907f6f221dda8688e6e6d1b69ddeb73 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 09:16:55 -0700 Subject: Moved tests around --- src/test/java/com/beust/jcommander/Args1.java | 22 ----- src/test/java/com/beust/jcommander/Args2.java | 23 ----- .../com/beust/jcommander/ArgsArityInteger.java | 17 ---- .../java/com/beust/jcommander/ArgsArityString.java | 17 ---- .../com/beust/jcommander/ArgsBooleanArity.java | 6 -- .../java/com/beust/jcommander/ArgsConverter.java | 16 ---- .../com/beust/jcommander/ArgsConverterFactory.java | 12 --- .../java/com/beust/jcommander/ArgsDefault.java | 23 ----- src/test/java/com/beust/jcommander/ArgsI18N1.java | 7 -- src/test/java/com/beust/jcommander/ArgsI18N2.java | 8 -- .../java/com/beust/jcommander/ArgsI18N2New.java | 8 -- src/test/java/com/beust/jcommander/ArgsMaster.java | 11 --- .../com/beust/jcommander/ArgsMultipleUnparsed.java | 15 --- .../java/com/beust/jcommander/ArgsPassword.java | 6 -- .../java/com/beust/jcommander/ArgsPrivate.java | 10 -- src/test/java/com/beust/jcommander/ArgsSlave.java | 11 --- .../java/com/beust/jcommander/ArgsSlaveBogus.java | 11 --- .../java/com/beust/jcommander/CommandLineArgs.java | 101 -------------------- .../com/beust/jcommander/CommandLineArgs2.java | 53 ----------- .../com/beust/jcommander/DefaultProviderTest.java | 1 + .../java/com/beust/jcommander/JCommanderTest.java | 17 ++++ .../java/com/beust/jcommander/SeparatorColon.java | 8 -- .../java/com/beust/jcommander/SeparatorEqual.java | 11 --- .../java/com/beust/jcommander/SeparatorMixed.java | 11 --- src/test/java/com/beust/jcommander/args/Args1.java | 24 +++++ src/test/java/com/beust/jcommander/args/Args2.java | 24 +++++ .../beust/jcommander/args/ArgsArityInteger.java | 19 ++++ .../com/beust/jcommander/args/ArgsArityString.java | 19 ++++ .../beust/jcommander/args/ArgsBooleanArity.java | 8 ++ .../com/beust/jcommander/args/ArgsConverter.java | 17 ++++ .../jcommander/args/ArgsConverterFactory.java | 14 +++ .../com/beust/jcommander/args/ArgsDefault.java | 25 +++++ .../java/com/beust/jcommander/args/ArgsI18N1.java | 9 ++ .../java/com/beust/jcommander/args/ArgsI18N2.java | 11 +++ .../com/beust/jcommander/args/ArgsI18N2New.java | 11 +++ .../java/com/beust/jcommander/args/ArgsMaster.java | 13 +++ .../jcommander/args/ArgsMultipleUnparsed.java | 17 ++++ .../com/beust/jcommander/args/ArgsPassword.java | 8 ++ .../com/beust/jcommander/args/ArgsPrivate.java | 12 +++ .../java/com/beust/jcommander/args/ArgsSlave.java | 13 +++ .../com/beust/jcommander/args/ArgsSlaveBogus.java | 13 +++ .../com/beust/jcommander/args/CommandLineArgs.java | 102 +++++++++++++++++++++ .../beust/jcommander/args/CommandLineArgs2.java | 54 +++++++++++ .../com/beust/jcommander/args/SeparatorColon.java | 11 +++ .../com/beust/jcommander/args/SeparatorEqual.java | 14 +++ .../com/beust/jcommander/args/SeparatorMixed.java | 14 +++ 46 files changed, 470 insertions(+), 407 deletions(-) delete mode 100644 src/test/java/com/beust/jcommander/Args1.java delete mode 100644 src/test/java/com/beust/jcommander/Args2.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsArityInteger.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsArityString.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsBooleanArity.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsConverter.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsConverterFactory.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsDefault.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsI18N1.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsI18N2.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsI18N2New.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsMaster.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsPassword.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsPrivate.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsSlave.java delete mode 100644 src/test/java/com/beust/jcommander/ArgsSlaveBogus.java delete mode 100644 src/test/java/com/beust/jcommander/CommandLineArgs.java delete mode 100644 src/test/java/com/beust/jcommander/CommandLineArgs2.java delete mode 100644 src/test/java/com/beust/jcommander/SeparatorColon.java delete mode 100644 src/test/java/com/beust/jcommander/SeparatorEqual.java delete mode 100644 src/test/java/com/beust/jcommander/SeparatorMixed.java create mode 100644 src/test/java/com/beust/jcommander/args/Args1.java create mode 100644 src/test/java/com/beust/jcommander/args/Args2.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsArityInteger.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsArityString.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsConverter.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsDefault.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsI18N1.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsI18N2.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsI18N2New.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsMaster.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsPassword.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsPrivate.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsSlave.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java create mode 100644 src/test/java/com/beust/jcommander/args/CommandLineArgs.java create mode 100644 src/test/java/com/beust/jcommander/args/CommandLineArgs2.java create mode 100644 src/test/java/com/beust/jcommander/args/SeparatorColon.java create mode 100644 src/test/java/com/beust/jcommander/args/SeparatorEqual.java create mode 100644 src/test/java/com/beust/jcommander/args/SeparatorMixed.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/Args1.java b/src/test/java/com/beust/jcommander/Args1.java deleted file mode 100644 index 6e6074f..0000000 --- a/src/test/java/com/beust/jcommander/Args1.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.beust.jcommander; - -import org.testng.collections.Lists; - -import java.util.List; - -public class Args1 { - @Parameter - public List parameters = Lists.newArrayList(); - - @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) - public Integer verbose = 1; - - @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") - public String groups; - - @Parameter(names = "-debug", description = "Debug mode") - public boolean debug = false; - - @Parameter(names = "-long", description = "A long number") - public long l; -} diff --git a/src/test/java/com/beust/jcommander/Args2.java b/src/test/java/com/beust/jcommander/Args2.java deleted file mode 100644 index 3acf610..0000000 --- a/src/test/java/com/beust/jcommander/Args2.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.beust.jcommander; - -import com.beust.jcommander.internal.Lists; - -import java.util.ArrayList; -import java.util.List; - -public class Args2 { - @Parameter(description = "List of parameters") - public List parameters = Lists.newArrayList(); - - @Parameter(names = {"-log", "-verbose"}, description = "Level of verbosity") - public Integer verbose = 1; - - @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") - public String groups; - - @Parameter(names = "-debug", description = "Debug mode") - public boolean debug = false; - - @Parameter(names = "-host", description = "The host") - public List hosts = new ArrayList(); -} diff --git a/src/test/java/com/beust/jcommander/ArgsArityInteger.java b/src/test/java/com/beust/jcommander/ArgsArityInteger.java deleted file mode 100644 index 36d8749..0000000 --- a/src/test/java/com/beust/jcommander/ArgsArityInteger.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.beust.jcommander; - -import java.util.List; - -/** - * Test parameter arity. - * - * @author cbeust - */ -public class ArgsArityInteger { - - @Parameter(names = "-pairs", arity = 2, description = "Pairs") - public List pairs; - - @Parameter(description = "Rest") - public List rest; -} diff --git a/src/test/java/com/beust/jcommander/ArgsArityString.java b/src/test/java/com/beust/jcommander/ArgsArityString.java deleted file mode 100644 index 281d7d2..0000000 --- a/src/test/java/com/beust/jcommander/ArgsArityString.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.beust.jcommander; - -import java.util.List; - -/** - * Test parameter arity. - * - * @author cbeust - */ -public class ArgsArityString { - - @Parameter(names = "-pairs", arity = 2, description = "Pairs") - public List pairs; - - @Parameter(description = "Rest") - public List rest; -} diff --git a/src/test/java/com/beust/jcommander/ArgsBooleanArity.java b/src/test/java/com/beust/jcommander/ArgsBooleanArity.java deleted file mode 100644 index a352a51..0000000 --- a/src/test/java/com/beust/jcommander/ArgsBooleanArity.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.beust.jcommander; - -public class ArgsBooleanArity { - @Parameter(names = "-debug", arity = 1) - Boolean debug = false; -} diff --git a/src/test/java/com/beust/jcommander/ArgsConverter.java b/src/test/java/com/beust/jcommander/ArgsConverter.java deleted file mode 100644 index 9ccd2e3..0000000 --- a/src/test/java/com/beust/jcommander/ArgsConverter.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.beust.jcommander; - -import com.beust.jcommander.converters.CommaSeparatedConverter; -import com.beust.jcommander.converters.FileConverter; - -import java.io.File; -import java.util.List; - -public class ArgsConverter { - - @Parameter(names = "-file", converter = FileConverter.class) - File file; - - @Parameter(names = "-days", converter = CommaSeparatedConverter.class) - List days; -} diff --git a/src/test/java/com/beust/jcommander/ArgsConverterFactory.java b/src/test/java/com/beust/jcommander/ArgsConverterFactory.java deleted file mode 100644 index 90c2a5d..0000000 --- a/src/test/java/com/beust/jcommander/ArgsConverterFactory.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.beust.jcommander; - -import java.io.File; - -public class ArgsConverterFactory { - - @Parameter(names = "-file") - File file; - - @Parameter(names = "-integer") - Integer integer; -} diff --git a/src/test/java/com/beust/jcommander/ArgsDefault.java b/src/test/java/com/beust/jcommander/ArgsDefault.java deleted file mode 100644 index acf71bb..0000000 --- a/src/test/java/com/beust/jcommander/ArgsDefault.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.beust.jcommander; - -import org.testng.collections.Lists; - -import java.util.List; - -public class ArgsDefault { - @Parameter - public List parameters = Lists.newArrayList(); - - @Parameter(names = "-log", description = "Level of verbosity") - public Integer log = 1; - - @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") - public String groups; - - @Parameter(names = "-debug", description = "Debug mode") - public boolean debug = false; - - @Parameter(names = "-level", description = "A long number") - public long level; - -} diff --git a/src/test/java/com/beust/jcommander/ArgsI18N1.java b/src/test/java/com/beust/jcommander/ArgsI18N1.java deleted file mode 100644 index bda4ed1..0000000 --- a/src/test/java/com/beust/jcommander/ArgsI18N1.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.beust.jcommander; - -public class ArgsI18N1 { - - @Parameter(names = "-host", description = "Host", descriptionKey = "host") - String hostName; -} diff --git a/src/test/java/com/beust/jcommander/ArgsI18N2.java b/src/test/java/com/beust/jcommander/ArgsI18N2.java deleted file mode 100644 index cd608e0..0000000 --- a/src/test/java/com/beust/jcommander/ArgsI18N2.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.beust.jcommander; - -@ResourceBundle("MessageBundle") -public class ArgsI18N2 { - - @Parameter(names = "-host", description = "Host", descriptionKey = "host") - String hostName; -} diff --git a/src/test/java/com/beust/jcommander/ArgsI18N2New.java b/src/test/java/com/beust/jcommander/ArgsI18N2New.java deleted file mode 100644 index a12f121..0000000 --- a/src/test/java/com/beust/jcommander/ArgsI18N2New.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.beust.jcommander; - -@Parameters(resourceBundle = "MessageBundle") -public class ArgsI18N2New { - - @Parameter(names = "-host", description = "Host", descriptionKey = "host") - String hostName; -} diff --git a/src/test/java/com/beust/jcommander/ArgsMaster.java b/src/test/java/com/beust/jcommander/ArgsMaster.java deleted file mode 100644 index 98e5228..0000000 --- a/src/test/java/com/beust/jcommander/ArgsMaster.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.beust.jcommander; - -/** - * Test multi-object parsing, along with ArgsSlave. - * - * @author cbeust - */ -public class ArgsMaster { - @Parameter(names = "-master") - public String master; -} diff --git a/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java b/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java deleted file mode 100644 index a3222f2..0000000 --- a/src/test/java/com/beust/jcommander/ArgsMultipleUnparsed.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.beust.jcommander; - -/** - * Error case if multiple unparsed (without a names attribute) arguments are defined. - * - * @author cbeust - */ -public class ArgsMultipleUnparsed { - - @Parameter(description = "Bogus1") - public String unparsed1; - - @Parameter(description = "Bogus2") - public String unparsed2; -} diff --git a/src/test/java/com/beust/jcommander/ArgsPassword.java b/src/test/java/com/beust/jcommander/ArgsPassword.java deleted file mode 100644 index 1a598a4..0000000 --- a/src/test/java/com/beust/jcommander/ArgsPassword.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.beust.jcommander; - -public class ArgsPassword { - @Parameter(names = "-password", description = "Connection password", password = true) - public String password; -} diff --git a/src/test/java/com/beust/jcommander/ArgsPrivate.java b/src/test/java/com/beust/jcommander/ArgsPrivate.java deleted file mode 100644 index 87ebe5b..0000000 --- a/src/test/java/com/beust/jcommander/ArgsPrivate.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.beust.jcommander; - -public class ArgsPrivate { - @Parameter(names = "-verbose") - private Integer verbose = 1; - - public Integer getVerbose() { - return verbose; - } -} diff --git a/src/test/java/com/beust/jcommander/ArgsSlave.java b/src/test/java/com/beust/jcommander/ArgsSlave.java deleted file mode 100644 index 8f43cc7..0000000 --- a/src/test/java/com/beust/jcommander/ArgsSlave.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.beust.jcommander; - -/** - * Test multi-object parsing, along with ArgsSlave. - * - * @author cbeust - */ -public class ArgsSlave { - @Parameter(names = "-slave") - public String slave; -} diff --git a/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java b/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java deleted file mode 100644 index ed72174..0000000 --- a/src/test/java/com/beust/jcommander/ArgsSlaveBogus.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.beust.jcommander; - -/** - * Same as ArgsMaster class, should cause an error. - * - * @author cbeust - */ -public class ArgsSlaveBogus extends ArgsSlave { - @Parameter(names = "-master") - public String master; -} diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs.java b/src/test/java/com/beust/jcommander/CommandLineArgs.java deleted file mode 100644 index 5adae0f..0000000 --- a/src/test/java/com/beust/jcommander/CommandLineArgs.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.beust.jcommander; - -import com.beust.jcommander.internal.Lists; - -import java.util.List; - -public class CommandLineArgs { - - @Parameter(description = "The XML suite files to run") - public List suiteFiles = Lists.newArrayList(); - - @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") - public Integer verbose; - - @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") - public String groups; - - @Parameter(names = "-excludedgroups", description ="Comma-separated list of group names to be " + - "run") - public String excludedGroups; - - @Parameter(names = "-d", description ="Output directory") - public String outputDirectory; - - @Parameter(names = "-junit", description ="JUnit mode") - public Boolean junit = Boolean.FALSE; - - @Parameter(names = "-listener", description = "List of .class files or list of class names" + - " implementing ITestListener or ISuiteListener") - public String listener; - - @Parameter(names = "-methodselectors", description = "List of .class files or list of class " + - "names implementing IMethodSelector") - public String methodSelectors; - - @Parameter(names = "-objectfactory", description = "List of .class files or list of class " + - "names implementing ITestRunnerFactory") - public String objectFactory; - - @Parameter(names = "-parallel", description = "Parallel mode (methods, tests or classes)") - public String parallelMode; - - @Parameter(names = "-configfailurepolicy", description = "Configuration failure policy (skip or continue)") - public String configFailurePolicy; - - @Parameter(names = "-threadcount", description = "Number of threads to use when running tests " + - "in parallel") - public Integer threadCount; - - @Parameter(names = "-dataproviderthreadcount", description = "Number of threads to use when " + - "running data providers") - public Integer dataProviderThreadCount; - - @Parameter(names = "-suitename", description = "Default name of test suite, if not specified " + - "in suite definition file or source code") - public String suiteName; - - @Parameter(names = "-testname", description = "Default name of test, if not specified in suite" + - "definition file or source code") - public String testName; - - @Parameter(names = "-reporter", description = "Extended configuration for custom report listener") - public String reporter; - - /** - * Used as map key for the complete list of report listeners provided with the above argument - */ - @Parameter(names = "-reporterslist") - public String reportersList; - - @Parameter(names = "-usedefaultlisteners", description = "Whether to use the default listeners") - public String useDefaultListeners = "true"; - - @Parameter(names = "-skipfailedinvocationcounts") - public Boolean skipFailedInvocationCounts; - - @Parameter(names = "-testclass", description = "The list of test classes") - public String testClass; - - @Parameter(names = "-testnames", description = "The list of test names to run") - public String testNames; - - @Parameter(names = "-testjar", description = "") - public String testJar; - - @Parameter(names = "-testRunFactory", description = "") - public String testRunFactory; - - @Parameter(names = "-port", description = "The port") - public Integer port; - - @Parameter(names = "-host", description = "The host") - public String host; - - @Parameter(names = "-master", description ="Host where the master is") - public String master; - - @Parameter(names = "-slave", description ="Host where the slave is") - public String slave; - -} diff --git a/src/test/java/com/beust/jcommander/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/CommandLineArgs2.java deleted file mode 100644 index 75e345f..0000000 --- a/src/test/java/com/beust/jcommander/CommandLineArgs2.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.beust.jcommander; - -import com.beust.jcommander.converters.FileConverter; - -import java.io.File; -import java.util.List; - -public class CommandLineArgs2 { - @Parameter(description = "list of files") - List list; - - @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.", arity = 1) - public boolean verbose = false; - - @Parameter(names = { "-h", "--help" }, description = "show this help.") - public boolean showHelp = false; - - @Parameter(names = { "-F", "--flush-preferences" }, description = "flush gui preferences.") - public boolean flushPreferences = false; - - @Parameter(names = { "-L", "--flush-licensed" }, description = "flush licensed.") - public boolean flushLicensed = false; - - @Parameter(names = { "-I", "--index-file" }, description = "indexes the given file.") - public Long indexFile; - - @Parameter(names = { "-b", "--bonjour" }, description = "enable Bonjour.") - public boolean enableBonjour = false; - - @Parameter(names = { "-m", "--md5" }, description = "create an MD5 checksum for the given file.", converter = FileConverter.class) - public File md5File; - - @Parameter(names = { "-c", "--cat" }, description = "'cat' the given Lilith logfile.", converter = FileConverter.class) - public File catFile; - - @Parameter(names = { "-t", "--tail" }, description = "'tail' the given Lilith logfile.", converter = FileConverter.class) - public File tailFile; - - @Parameter(names = { "-p", "--pattern" }, description = "pattern used by 'cat' or 'tail'.") - public String pattern; - - @Parameter(names = { "-f", "--keep-running" }, description = "keep tailing the given Lilith logfile.") - public boolean keepRunning = false; - - @Parameter(names = { "-n", "--number-of-lines" }, description = "number of entries printed by cat or tail") - public Integer numberOfLines = -1; - - @Parameter(names = { "-e", "--export-preferences" }, description = "export preferences into the given file.") - public String exportPreferencesFile; - - @Parameter(names = { "-i", "--import-preferences" }, description = "import preferences from the given file.") - public String importPreferencesFile; -} diff --git a/src/test/java/com/beust/jcommander/DefaultProviderTest.java b/src/test/java/com/beust/jcommander/DefaultProviderTest.java index d2492db..e185b77 100644 --- a/src/test/java/com/beust/jcommander/DefaultProviderTest.java +++ b/src/test/java/com/beust/jcommander/DefaultProviderTest.java @@ -1,5 +1,6 @@ package com.beust.jcommander; +import com.beust.jcommander.args.ArgsDefault; import com.beust.jcommander.defaultprovider.PropertyFileDefaultProvider; import org.testng.Assert; diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 751c504..bd51148 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1,5 +1,22 @@ package com.beust.jcommander; +import com.beust.jcommander.args.Args1; +import com.beust.jcommander.args.Args2; +import com.beust.jcommander.args.ArgsArityString; +import com.beust.jcommander.args.ArgsBooleanArity; +import com.beust.jcommander.args.ArgsConverter; +import com.beust.jcommander.args.ArgsConverterFactory; +import com.beust.jcommander.args.ArgsI18N1; +import com.beust.jcommander.args.ArgsI18N2; +import com.beust.jcommander.args.ArgsI18N2New; +import com.beust.jcommander.args.ArgsMaster; +import com.beust.jcommander.args.ArgsMultipleUnparsed; +import com.beust.jcommander.args.ArgsPrivate; +import com.beust.jcommander.args.ArgsSlave; +import com.beust.jcommander.args.ArgsSlaveBogus; +import com.beust.jcommander.args.SeparatorColon; +import com.beust.jcommander.args.SeparatorEqual; +import com.beust.jcommander.args.SeparatorMixed; import com.beust.jcommander.converters.FileConverter; import org.testng.Assert; diff --git a/src/test/java/com/beust/jcommander/SeparatorColon.java b/src/test/java/com/beust/jcommander/SeparatorColon.java deleted file mode 100644 index 8dc8421..0000000 --- a/src/test/java/com/beust/jcommander/SeparatorColon.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.beust.jcommander; - -@Parameters(separators = ":") -public class SeparatorColon { - - @Parameter(names = "-verbose", arity = 1) - public boolean verbose = false; -} diff --git a/src/test/java/com/beust/jcommander/SeparatorEqual.java b/src/test/java/com/beust/jcommander/SeparatorEqual.java deleted file mode 100644 index b507501..0000000 --- a/src/test/java/com/beust/jcommander/SeparatorEqual.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.beust.jcommander; - -@Parameters(separators = "=") -public class SeparatorEqual { - - @Parameter(names = "-log") - public Integer log = 2; - - @Parameter(names = "--longoption") - public Integer longOption; -} diff --git a/src/test/java/com/beust/jcommander/SeparatorMixed.java b/src/test/java/com/beust/jcommander/SeparatorMixed.java deleted file mode 100644 index 8229e1f..0000000 --- a/src/test/java/com/beust/jcommander/SeparatorMixed.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.beust.jcommander; - -@Parameters(separators = ":=") -public class SeparatorMixed { - - @Parameter(names = "-level") - public Integer level = 0; - - @Parameter(names = "-long") - public Long l = 0l; -} diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java new file mode 100644 index 0000000..d89ad96 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/Args1.java @@ -0,0 +1,24 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import org.testng.collections.Lists; + +import java.util.List; + +public class Args1 { + @Parameter + public List parameters = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Parameter(names = "-long", description = "A long number") + public long l; +} diff --git a/src/test/java/com/beust/jcommander/args/Args2.java b/src/test/java/com/beust/jcommander/args/Args2.java new file mode 100644 index 0000000..dbcb80c --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/Args2.java @@ -0,0 +1,24 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.internal.Lists; + +import java.util.ArrayList; +import java.util.List; + +public class Args2 { + @Parameter(description = "List of parameters") + public List parameters = Lists.newArrayList(); + + @Parameter(names = {"-log", "-verbose"}, description = "Level of verbosity") + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Parameter(names = "-host", description = "The host") + public List hosts = new ArrayList(); +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java b/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java new file mode 100644 index 0000000..cb21cd3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java @@ -0,0 +1,19 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import java.util.List; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsArityInteger { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public List pairs; + + @Parameter(description = "Rest") + public List rest; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsArityString.java b/src/test/java/com/beust/jcommander/args/ArgsArityString.java new file mode 100644 index 0000000..709290b --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsArityString.java @@ -0,0 +1,19 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import java.util.List; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsArityString { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public List pairs; + + @Parameter(description = "Rest") + public List rest; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java new file mode 100644 index 0000000..8b3c77d --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java @@ -0,0 +1,8 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsBooleanArity { + @Parameter(names = "-debug", arity = 1) + public Boolean debug = false; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java new file mode 100644 index 0000000..04c98cc --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -0,0 +1,17 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.converters.CommaSeparatedConverter; +import com.beust.jcommander.converters.FileConverter; + +import java.io.File; +import java.util.List; + +public class ArgsConverter { + + @Parameter(names = "-file", converter = FileConverter.class) + public File file; + + @Parameter(names = "-days", converter = CommaSeparatedConverter.class) + public List days; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java new file mode 100644 index 0000000..3c5d1d5 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java @@ -0,0 +1,14 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import java.io.File; + +public class ArgsConverterFactory { + + @Parameter(names = "-file") + public File file; + + @Parameter(names = "-integer") + Integer integer; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsDefault.java b/src/test/java/com/beust/jcommander/args/ArgsDefault.java new file mode 100644 index 0000000..6a853a1 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsDefault.java @@ -0,0 +1,25 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import org.testng.collections.Lists; + +import java.util.List; + +public class ArgsDefault { + @Parameter + public List parameters = Lists.newArrayList(); + + @Parameter(names = "-log", description = "Level of verbosity") + public Integer log = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public boolean debug = false; + + @Parameter(names = "-level", description = "A long number") + public long level; + +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N1.java b/src/test/java/com/beust/jcommander/args/ArgsI18N1.java new file mode 100644 index 0000000..ba9018b --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N1.java @@ -0,0 +1,9 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsI18N1 { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java new file mode 100644 index 0000000..dd4baf5 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.ResourceBundle; + +@ResourceBundle("MessageBundle") +public class ArgsI18N2 { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java new file mode 100644 index 0000000..4265160 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(resourceBundle = "MessageBundle") +public class ArgsI18N2New { + + @Parameter(names = "-host", description = "Host", descriptionKey = "host") + String hostName; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsMaster.java b/src/test/java/com/beust/jcommander/args/ArgsMaster.java new file mode 100644 index 0000000..ba78fe5 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsMaster.java @@ -0,0 +1,13 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +/** + * Test multi-object parsing, along with ArgsSlave. + * + * @author cbeust + */ +public class ArgsMaster { + @Parameter(names = "-master") + public String master; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java b/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java new file mode 100644 index 0000000..91583db --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java @@ -0,0 +1,17 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +/** + * Error case if multiple unparsed (without a names attribute) arguments are defined. + * + * @author cbeust + */ +public class ArgsMultipleUnparsed { + + @Parameter(description = "Bogus1") + public String unparsed1; + + @Parameter(description = "Bogus2") + public String unparsed2; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsPassword.java b/src/test/java/com/beust/jcommander/args/ArgsPassword.java new file mode 100644 index 0000000..6fefa17 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsPassword.java @@ -0,0 +1,8 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsPassword { + @Parameter(names = "-password", description = "Connection password", password = true) + public String password; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsPrivate.java b/src/test/java/com/beust/jcommander/args/ArgsPrivate.java new file mode 100644 index 0000000..885418c --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsPrivate.java @@ -0,0 +1,12 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsPrivate { + @Parameter(names = "-verbose") + private Integer verbose = 1; + + public Integer getVerbose() { + return verbose; + } +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsSlave.java b/src/test/java/com/beust/jcommander/args/ArgsSlave.java new file mode 100644 index 0000000..4c5d318 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsSlave.java @@ -0,0 +1,13 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +/** + * Test multi-object parsing, along with ArgsSlave. + * + * @author cbeust + */ +public class ArgsSlave { + @Parameter(names = "-slave") + public String slave; +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java b/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java new file mode 100644 index 0000000..5615984 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java @@ -0,0 +1,13 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +/** + * Same as ArgsMaster class, should cause an error. + * + * @author cbeust + */ +public class ArgsSlaveBogus extends ArgsSlave { + @Parameter(names = "-master") + public String master; +} diff --git a/src/test/java/com/beust/jcommander/args/CommandLineArgs.java b/src/test/java/com/beust/jcommander/args/CommandLineArgs.java new file mode 100644 index 0000000..6374a72 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/CommandLineArgs.java @@ -0,0 +1,102 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.internal.Lists; + +import java.util.List; + +public class CommandLineArgs { + + @Parameter(description = "The XML suite files to run") + public List suiteFiles = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") + public Integer verbose; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public String groups; + + @Parameter(names = "-excludedgroups", description ="Comma-separated list of group names to be " + + "run") + public String excludedGroups; + + @Parameter(names = "-d", description ="Output directory") + public String outputDirectory; + + @Parameter(names = "-junit", description ="JUnit mode") + public Boolean junit = Boolean.FALSE; + + @Parameter(names = "-listener", description = "List of .class files or list of class names" + + " implementing ITestListener or ISuiteListener") + public String listener; + + @Parameter(names = "-methodselectors", description = "List of .class files or list of class " + + "names implementing IMethodSelector") + public String methodSelectors; + + @Parameter(names = "-objectfactory", description = "List of .class files or list of class " + + "names implementing ITestRunnerFactory") + public String objectFactory; + + @Parameter(names = "-parallel", description = "Parallel mode (methods, tests or classes)") + public String parallelMode; + + @Parameter(names = "-configfailurepolicy", description = "Configuration failure policy (skip or continue)") + public String configFailurePolicy; + + @Parameter(names = "-threadcount", description = "Number of threads to use when running tests " + + "in parallel") + public Integer threadCount; + + @Parameter(names = "-dataproviderthreadcount", description = "Number of threads to use when " + + "running data providers") + public Integer dataProviderThreadCount; + + @Parameter(names = "-suitename", description = "Default name of test suite, if not specified " + + "in suite definition file or source code") + public String suiteName; + + @Parameter(names = "-testname", description = "Default name of test, if not specified in suite" + + "definition file or source code") + public String testName; + + @Parameter(names = "-reporter", description = "Extended configuration for custom report listener") + public String reporter; + + /** + * Used as map key for the complete list of report listeners provided with the above argument + */ + @Parameter(names = "-reporterslist") + public String reportersList; + + @Parameter(names = "-usedefaultlisteners", description = "Whether to use the default listeners") + public String useDefaultListeners = "true"; + + @Parameter(names = "-skipfailedinvocationcounts") + public Boolean skipFailedInvocationCounts; + + @Parameter(names = "-testclass", description = "The list of test classes") + public String testClass; + + @Parameter(names = "-testnames", description = "The list of test names to run") + public String testNames; + + @Parameter(names = "-testjar", description = "") + public String testJar; + + @Parameter(names = "-testRunFactory", description = "") + public String testRunFactory; + + @Parameter(names = "-port", description = "The port") + public Integer port; + + @Parameter(names = "-host", description = "The host") + public String host; + + @Parameter(names = "-master", description ="Host where the master is") + public String master; + + @Parameter(names = "-slave", description ="Host where the slave is") + public String slave; + +} diff --git a/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java new file mode 100644 index 0000000..ce1b4cf --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java @@ -0,0 +1,54 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.converters.FileConverter; + +import java.io.File; +import java.util.List; + +public class CommandLineArgs2 { + @Parameter(description = "list of files") + List list; + + @Parameter(names = { "-v", "--verbose" }, description = "print verbose log messages.", arity = 1) + public boolean verbose = false; + + @Parameter(names = { "-h", "--help" }, description = "show this help.") + public boolean showHelp = false; + + @Parameter(names = { "-F", "--flush-preferences" }, description = "flush gui preferences.") + public boolean flushPreferences = false; + + @Parameter(names = { "-L", "--flush-licensed" }, description = "flush licensed.") + public boolean flushLicensed = false; + + @Parameter(names = { "-I", "--index-file" }, description = "indexes the given file.") + public Long indexFile; + + @Parameter(names = { "-b", "--bonjour" }, description = "enable Bonjour.") + public boolean enableBonjour = false; + + @Parameter(names = { "-m", "--md5" }, description = "create an MD5 checksum for the given file.", converter = FileConverter.class) + public File md5File; + + @Parameter(names = { "-c", "--cat" }, description = "'cat' the given Lilith logfile.", converter = FileConverter.class) + public File catFile; + + @Parameter(names = { "-t", "--tail" }, description = "'tail' the given Lilith logfile.", converter = FileConverter.class) + public File tailFile; + + @Parameter(names = { "-p", "--pattern" }, description = "pattern used by 'cat' or 'tail'.") + public String pattern; + + @Parameter(names = { "-f", "--keep-running" }, description = "keep tailing the given Lilith logfile.") + public boolean keepRunning = false; + + @Parameter(names = { "-n", "--number-of-lines" }, description = "number of entries printed by cat or tail") + public Integer numberOfLines = -1; + + @Parameter(names = { "-e", "--export-preferences" }, description = "export preferences into the given file.") + public String exportPreferencesFile; + + @Parameter(names = { "-i", "--import-preferences" }, description = "import preferences from the given file.") + public String importPreferencesFile; +} diff --git a/src/test/java/com/beust/jcommander/args/SeparatorColon.java b/src/test/java/com/beust/jcommander/args/SeparatorColon.java new file mode 100644 index 0000000..7ef2e98 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/SeparatorColon.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(separators = ":") +public class SeparatorColon { + + @Parameter(names = "-verbose", arity = 1) + public boolean verbose = false; +} diff --git a/src/test/java/com/beust/jcommander/args/SeparatorEqual.java b/src/test/java/com/beust/jcommander/args/SeparatorEqual.java new file mode 100644 index 0000000..42b47f3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/SeparatorEqual.java @@ -0,0 +1,14 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(separators = "=") +public class SeparatorEqual { + + @Parameter(names = "-log") + public Integer log = 2; + + @Parameter(names = "--longoption") + public Integer longOption; +} diff --git a/src/test/java/com/beust/jcommander/args/SeparatorMixed.java b/src/test/java/com/beust/jcommander/args/SeparatorMixed.java new file mode 100644 index 0000000..4717b1e --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/SeparatorMixed.java @@ -0,0 +1,14 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(separators = ":=") +public class SeparatorMixed { + + @Parameter(names = "-level") + public Integer level = 0; + + @Parameter(names = "-long") + public Long l = 0l; +} -- cgit v1.2.3 From 67b245733f986c6b514f9121702d0c4289e3ae2d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 09:23:50 -0700 Subject: Converter factory test with HostPort --- .../com/beust/jcommander/ConverterFactoryTest.java | 54 ++++++++++++++++++++++ src/test/java/com/beust/jcommander/HostPort.java | 6 +++ .../java/com/beust/jcommander/JCommanderTest.java | 23 --------- .../jcommander/args/ArgsConverterFactory.java | 10 ++-- 4 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ConverterFactoryTest.java create mode 100644 src/test/java/com/beust/jcommander/HostPort.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java new file mode 100644 index 0000000..0081926 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java @@ -0,0 +1,54 @@ +package com.beust.jcommander; + +import com.beust.jcommander.args.ArgsConverterFactory; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.HashMap; +import java.util.Map; + +/** + * Test the converter factory feature. + * + * @author cbeust + */ +public class ConverterFactoryTest { + private static final Map>> MAP = new HashMap() {{ + put(HostPort.class, HostPortConverter.class); + }}; + + private static final IStringConverterFactory CONVERTER_FACTORY = new IStringConverterFactory() { + + @Override + public Class> getConverter(Class forType) { + return MAP.get(forType); + } + + }; + + @Test + public void converterFactory() { + ArgsConverterFactory a = new ArgsConverterFactory(); + JCommander jc = new JCommander(a); + jc.addConverterFactory(CONVERTER_FACTORY); + jc.parse("-hostport", "example.com:8080"); + + Assert.assertEquals(a.hostPort.host, "example.com"); + Assert.assertEquals(a.hostPort.port.intValue(), 8080); + } + +} + +class HostPortConverter implements IStringConverter { + + @Override + public HostPort convert(String value) { + HostPort result = new HostPort(); + String[] s = value.split(":"); + result.host = s[0]; + result.port = Integer.parseInt(s[1]); + + return result; + } +} \ No newline at end of file diff --git a/src/test/java/com/beust/jcommander/HostPort.java b/src/test/java/com/beust/jcommander/HostPort.java new file mode 100644 index 0000000..6737d7c --- /dev/null +++ b/src/test/java/com/beust/jcommander/HostPort.java @@ -0,0 +1,6 @@ +package com.beust.jcommander; + +public class HostPort { + public String host; + public Integer port; +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index bd51148..0d4e2ca 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -272,29 +272,6 @@ public class JCommanderTest { Assert.assertEquals(a.l, -4); } - private static final Map>> MAP = new HashMap() {{ - put(File.class, FileConverter.class); - }}; - - private static final IStringConverterFactory CONVERTER_FACTORY = new IStringConverterFactory() { - - @Override - public Class> getConverter(Class forType) { - return MAP.get(forType); - } - - }; - - @Test - public void converterFactory() { - ArgsConverterFactory a = new ArgsConverterFactory(); - JCommander jc = new JCommander(a); - jc.addConverterFactory(CONVERTER_FACTORY); - jc.parse("-file", "/tmp/a"); - - Assert.assertEquals(a.file.getName(), "a"); - } - @Test public void requiredMainParameters() { // diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java index 3c5d1d5..56f29c0 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java @@ -1,14 +1,10 @@ package com.beust.jcommander.args; +import com.beust.jcommander.HostPort; import com.beust.jcommander.Parameter; -import java.io.File; - public class ArgsConverterFactory { - @Parameter(names = "-file") - public File file; - - @Parameter(names = "-integer") - Integer integer; + @Parameter(names = "-hostport") + public HostPort hostPort; } -- cgit v1.2.3 From d556f4a527306a9769776d1cbb2fccac98618bc9 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 09:49:20 -0700 Subject: Dash dash tests --- src/test/java/com/beust/jcommander/JCommanderTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 0d4e2ca..5f9718f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -17,6 +17,7 @@ import com.beust.jcommander.args.ArgsSlaveBogus; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; +import com.beust.jcommander.args.SlashSeparator; import com.beust.jcommander.converters.FileConverter; import org.testng.Assert; @@ -264,12 +265,12 @@ public class JCommanderTest { } @Test - public void negativeNumbers() { - Args1 a = new Args1(); - String[] argv = { "-verbose", "--", "-3", "-long", "--", "-4" }; + public void dashDash() { + SlashSeparator a = new SlashSeparator(); + String[] argv = { "/verbose", "/file", "--", "/tmp/a" }; new JCommander(a, argv); - Assert.assertEquals(a.verbose.intValue(), -3); - Assert.assertEquals(a.l, -4); + Assert.assertTrue(a.verbose); + Assert.assertEquals(a.file, "/tmp/a"); } @Test @@ -295,7 +296,7 @@ public class JCommanderTest { // } // new DefaultProviderTest().propertyFileDefaultProvider1(); // new JCommander(new Args1(), "foo"); - new DefaultProviderTest().defaultProvider1(); + new JCommanderTest().converterArgs(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From f14a46abd32b378ec56a672a2da0b926c5d7276d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 10:13:55 -0700 Subject: Flexible prefixes --- src/test/java/com/beust/jcommander/JCommanderTest.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5f9718f..bb3fd4d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -290,13 +290,9 @@ public class JCommanderTest { } public static void main(String[] args) { -// for (Object[] p : f()) { -// int tc = JCommander.getTabCount((Integer) p[0], (Integer) p[1]); -// Assert.assertEquals(tc, ((Integer) p[2]).intValue()); -// } -// new DefaultProviderTest().propertyFileDefaultProvider1(); + new JCommanderTest().separatorBoth(); +// new DefaultProviderTest().defaultProvider1(); // new JCommander(new Args1(), "foo"); - new JCommanderTest().converterArgs(); // new JCommander(new CommandLineArgs2()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; -- cgit v1.2.3 From 858c0e61453c4b3a8663d9094f38b6aba493d753 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 10:20:46 -0700 Subject: Better tests, updated CHANGELOG --- src/test/java/com/beust/jcommander/JCommanderTest.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index bb3fd4d..64ab738 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -267,12 +267,20 @@ public class JCommanderTest { @Test public void dashDash() { SlashSeparator a = new SlashSeparator(); - String[] argv = { "/verbose", "/file", "--", "/tmp/a" }; + String[] argv = { "/verbose", "/file", "/tmp/a" }; new JCommander(a, argv); Assert.assertTrue(a.verbose); Assert.assertEquals(a.file, "/tmp/a"); } + @Test + public void negativeNumber() { + Args1 a = new Args1(); + String[] argv = { "-verbose", "-3" }; + new JCommander(a, argv); + Assert.assertEquals(a.verbose.intValue(), -3); + } + @Test public void requiredMainParameters() { // @@ -290,7 +298,7 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().separatorBoth(); + new JCommanderTest().negativeNumber(); // new DefaultProviderTest().defaultProvider1(); // new JCommander(new Args1(), "foo"); // new JCommander(new CommandLineArgs2()).usage(); -- cgit v1.2.3 From 788450fd1d9535fda9e9051dbe2c9c180faa8df4 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 10:20:59 -0700 Subject: SlashSeparator update --- .../java/com/beust/jcommander/args/SlashSeparator.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/SlashSeparator.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/SlashSeparator.java b/src/test/java/com/beust/jcommander/args/SlashSeparator.java new file mode 100644 index 0000000..d212956 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/SlashSeparator.java @@ -0,0 +1,14 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(optionPrefixes = "/") +public class SlashSeparator { + + @Parameter(names = "/verbose") + public boolean verbose = false; + + @Parameter(names = "/file") + public String file; +} -- cgit v1.2.3 From 426bf32155b30f5c1819a00d88c16944c01e5a52 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 10:24:38 -0700 Subject: Test rename --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 64ab738..f37666d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -265,7 +265,7 @@ public class JCommanderTest { } @Test - public void dashDash() { + public void slashParameters() { SlashSeparator a = new SlashSeparator(); String[] argv = { "/verbose", "/file", "/tmp/a" }; new JCommander(a, argv); -- cgit v1.2.3 From 0235dc8adeed6c78d7f65a5766cd1886ef6e7b18 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 22:12:26 -0700 Subject: Documented the new features --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index f37666d..b318b5f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -5,7 +5,6 @@ import com.beust.jcommander.args.Args2; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsConverter; -import com.beust.jcommander.args.ArgsConverterFactory; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; @@ -18,17 +17,14 @@ import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; import com.beust.jcommander.args.SlashSeparator; -import com.beust.jcommander.converters.FileConverter; import org.testng.Assert; +import org.testng.CommandLineArgs; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; -import java.io.File; import java.util.Arrays; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import java.util.ResourceBundle; public class JCommanderTest { @@ -298,10 +294,10 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().negativeNumber(); +// new JCommanderTest().negativeNumber(); // new DefaultProviderTest().defaultProvider1(); // new JCommander(new Args1(), "foo"); -// new JCommander(new CommandLineArgs2()).usage(); + new JCommander(new Args1()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; -- cgit v1.2.3 From cbcfeaa4b5ad13774579c8a4c2f230ee1362b67a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Jul 2010 22:21:05 -0700 Subject: Removed unused import --- src/test/java/com/beust/jcommander/JCommanderTest.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index b318b5f..3d3a7ff 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -19,7 +19,6 @@ import com.beust.jcommander.args.SeparatorMixed; import com.beust.jcommander.args.SlashSeparator; import org.testng.Assert; -import org.testng.CommandLineArgs; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; -- cgit v1.2.3 From 1eb22b901f731760a479740312337471363febff Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 29 Jul 2010 12:57:34 -0700 Subject: Moved findConverter to JCommander --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 +++++++--- .../com/beust/jcommander/args/ArgsMainParameter.java | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsMainParameter.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 3d3a7ff..9a9d7f1 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -8,6 +8,7 @@ import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; +import com.beust.jcommander.args.ArgsMainParameter; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; @@ -293,10 +294,13 @@ public class JCommanderTest { } public static void main(String[] args) { -// new JCommanderTest().negativeNumber(); + new JCommanderTest().listParameters(); + new JCommanderTest().converterArgs(); // new DefaultProviderTest().defaultProvider1(); -// new JCommander(new Args1(), "foo"); - new JCommander(new Args1()).usage(); +// ArgsMainParameter a = new ArgsMainParameter(); +// new JCommander(a, "ex1:10", "ex2:20"); +// System.out.println(a.parameters.get(0).host); +// new JCommander(new Args1()).usage(); // Separator a = new Separator(); // String[] argv = new String[] { "-n", "foo" }; // String[] argv = new String[] { "-v", "t" }; diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java new file mode 100644 index 0000000..78a1510 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java @@ -0,0 +1,18 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.HostPort; +import com.beust.jcommander.Parameter; + +import org.testng.collections.Lists; + +import java.util.List; + +/** + * A class with main parameter that is not a List + * + * @author cbeust + */ +public class ArgsMainParameter { + @Parameter + public List parameters = Lists.newArrayList(); +} -- cgit v1.2.3 From 484d81b494104aa2b684dab7825466c7b98b744b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 29 Jul 2010 13:59:22 -0700 Subject: Main parameters now use converters --- .../java/com/beust/jcommander/ConverterFactoryTest.java | 13 +++++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java index 0081926..2db3c73 100644 --- a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java +++ b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java @@ -1,6 +1,7 @@ package com.beust.jcommander; import com.beust.jcommander.args.ArgsConverterFactory; +import com.beust.jcommander.args.ArgsMainParameter; import org.testng.Assert; import org.testng.annotations.Test; @@ -38,6 +39,18 @@ public class ConverterFactoryTest { Assert.assertEquals(a.hostPort.port.intValue(), 8080); } + @Test + public void mainWithHostPortParameters() { + ArgsMainParameter a = new ArgsMainParameter(); + JCommander jc = new JCommander(a); + jc.addConverterFactory(CONVERTER_FACTORY); + jc.parse("a.com:10", "b.com:20"); + Assert.assertEquals(a.parameters.get(0).host, "a.com"); + Assert.assertEquals(a.parameters.get(0).port.intValue(), 10); + Assert.assertEquals(a.parameters.get(1).host, "b.com"); + Assert.assertEquals(a.parameters.get(1).port.intValue(), 20); + } + } class HostPortConverter implements IStringConverter { diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9a9d7f1..ee07155 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -294,8 +294,7 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().listParameters(); - new JCommanderTest().converterArgs(); + new ConverterFactoryTest().mainWithHostPortParameters(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); // new JCommander(a, "ex1:10", "ex2:20"); -- cgit v1.2.3 From 6f6f43684c3079b1590139a3bc01213977e8a82c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 29 Jul 2010 17:18:24 -0700 Subject: More tests for main parametesr with converters --- .../com/beust/jcommander/ConverterFactoryTest.java | 44 +++++++++++----------- .../com/beust/jcommander/HostPortConverter.java | 14 +++++++ .../java/com/beust/jcommander/JCommanderTest.java | 4 +- .../beust/jcommander/args/ArgsMainParameter.java | 18 --------- .../beust/jcommander/args/ArgsMainParameter1.java | 23 +++++++++++ .../beust/jcommander/args/ArgsMainParameter2.java | 24 ++++++++++++ .../java/com/beust/jcommander/args/IHostPorts.java | 9 +++++ 7 files changed, 95 insertions(+), 41 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/HostPortConverter.java delete mode 100644 src/test/java/com/beust/jcommander/args/ArgsMainParameter.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java create mode 100644 src/test/java/com/beust/jcommander/args/IHostPorts.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java index 2db3c73..5dc613d 100644 --- a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java +++ b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java @@ -1,7 +1,9 @@ package com.beust.jcommander; import com.beust.jcommander.args.ArgsConverterFactory; -import com.beust.jcommander.args.ArgsMainParameter; +import com.beust.jcommander.args.ArgsMainParameter1; +import com.beust.jcommander.args.ArgsMainParameter2; +import com.beust.jcommander.args.IHostPorts; import org.testng.Assert; import org.testng.annotations.Test; @@ -29,7 +31,7 @@ public class ConverterFactoryTest { }; @Test - public void converterFactory() { + public void parameterWithHostPortParameters() { ArgsConverterFactory a = new ArgsConverterFactory(); JCommander jc = new JCommander(a); jc.addConverterFactory(CONVERTER_FACTORY); @@ -39,29 +41,29 @@ public class ConverterFactoryTest { Assert.assertEquals(a.hostPort.port.intValue(), 8080); } - @Test - public void mainWithHostPortParameters() { - ArgsMainParameter a = new ArgsMainParameter(); + /** + * Test that main parameters can be used with string converters, + * either with a factory or from the annotation. + */ + private void mainWithHostPortParameters(IStringConverterFactory f, IHostPorts a) { JCommander jc = new JCommander(a); - jc.addConverterFactory(CONVERTER_FACTORY); + if (f != null) jc.addConverterFactory(f); jc.parse("a.com:10", "b.com:20"); - Assert.assertEquals(a.parameters.get(0).host, "a.com"); - Assert.assertEquals(a.parameters.get(0).port.intValue(), 10); - Assert.assertEquals(a.parameters.get(1).host, "b.com"); - Assert.assertEquals(a.parameters.get(1).port.intValue(), 20); + Assert.assertEquals(a.getHostPorts().get(0).host, "a.com"); + Assert.assertEquals(a.getHostPorts().get(0).port.intValue(), 10); + Assert.assertEquals(a.getHostPorts().get(1).host, "b.com"); + Assert.assertEquals(a.getHostPorts().get(1).port.intValue(), 20); } -} + @Test + public void mainWithoutFactory() { + mainWithHostPortParameters(null, new ArgsMainParameter1()); + } -class HostPortConverter implements IStringConverter { + @Test + public void mainWithFactory() { + mainWithHostPortParameters(CONVERTER_FACTORY, new ArgsMainParameter2()); + } - @Override - public HostPort convert(String value) { - HostPort result = new HostPort(); - String[] s = value.split(":"); - result.host = s[0]; - result.port = Integer.parseInt(s[1]); +} - return result; - } -} \ No newline at end of file diff --git a/src/test/java/com/beust/jcommander/HostPortConverter.java b/src/test/java/com/beust/jcommander/HostPortConverter.java new file mode 100644 index 0000000..b718da4 --- /dev/null +++ b/src/test/java/com/beust/jcommander/HostPortConverter.java @@ -0,0 +1,14 @@ +package com.beust.jcommander; + +public class HostPortConverter implements IStringConverter { + + @Override + public HostPort convert(String value) { + HostPort result = new HostPort(); + String[] s = value.split(":"); + result.host = s[0]; + result.port = Integer.parseInt(s[1]); + + return result; + } +} \ No newline at end of file diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index ee07155..b8e8c64 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -8,7 +8,7 @@ import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; -import com.beust.jcommander.args.ArgsMainParameter; +import com.beust.jcommander.args.ArgsMainParameter1; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; @@ -294,7 +294,7 @@ public class JCommanderTest { } public static void main(String[] args) { - new ConverterFactoryTest().mainWithHostPortParameters(); +// new ConverterFactoryTest().mainWithHostPortParameters(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); // new JCommander(a, "ex1:10", "ex2:20"); diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java deleted file mode 100644 index 78a1510..0000000 --- a/src/test/java/com/beust/jcommander/args/ArgsMainParameter.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.beust.jcommander.args; - -import com.beust.jcommander.HostPort; -import com.beust.jcommander.Parameter; - -import org.testng.collections.Lists; - -import java.util.List; - -/** - * A class with main parameter that is not a List - * - * @author cbeust - */ -public class ArgsMainParameter { - @Parameter - public List parameters = Lists.newArrayList(); -} diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java new file mode 100644 index 0000000..19d17e3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java @@ -0,0 +1,23 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.HostPort; +import com.beust.jcommander.Parameter; + +import org.testng.collections.Lists; + +import java.util.List; + +/** + * A class with main parameter that is not a List + * + * @author cbeust + */ +public class ArgsMainParameter1 implements IHostPorts { + @Parameter + public List parameters = Lists.newArrayList(); + + @Override + public List getHostPorts() { + return parameters; + } +} diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java new file mode 100644 index 0000000..332e47e --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java @@ -0,0 +1,24 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.HostPort; +import com.beust.jcommander.HostPortConverter; +import com.beust.jcommander.Parameter; + +import org.testng.collections.Lists; + +import java.util.List; + +/** + * A class with main parameter that is not a List + * + * @author cbeust + */ +public class ArgsMainParameter2 implements IHostPorts { + @Parameter(converter = HostPortConverter.class) + public List parameters = Lists.newArrayList(); + + @Override + public List getHostPorts() { + return parameters; + } +} diff --git a/src/test/java/com/beust/jcommander/args/IHostPorts.java b/src/test/java/com/beust/jcommander/args/IHostPorts.java new file mode 100644 index 0000000..ba48734 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/IHostPorts.java @@ -0,0 +1,9 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.HostPort; + +import java.util.List; + +public interface IHostPorts { + List getHostPorts(); +} -- cgit v1.2.3 From 5187242fcad293107312ef97c0d6552dfa5e3574 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 31 Jul 2010 09:44:36 -0700 Subject: Implemented commands. --- .../java/com/beust/jcommander/JCommanderTest.java | 37 +++++++++++++++++++++- .../java/com/beust/jcommander/args/CommandAdd.java | 15 +++++++++ .../com/beust/jcommander/args/CommandCommit.java | 19 +++++++++++ .../com/beust/jcommander/args/CommandMain.java | 9 ++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/args/CommandAdd.java create mode 100644 src/test/java/com/beust/jcommander/args/CommandCommit.java create mode 100644 src/test/java/com/beust/jcommander/args/CommandMain.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index b8e8c64..cab1d7a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -8,12 +8,14 @@ import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; -import com.beust.jcommander.args.ArgsMainParameter1; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; +import com.beust.jcommander.args.CommandAdd; +import com.beust.jcommander.args.CommandCommit; +import com.beust.jcommander.args.CommandMain; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; @@ -277,6 +279,38 @@ public class JCommanderTest { Assert.assertEquals(a.verbose.intValue(), -3); } + @Test + public void commandTest1() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("add", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "add"); + Assert.assertEquals(add.interactive.booleanValue(), true); + Assert.assertEquals(add.patterns, Arrays.asList("A.java")); + } + + @Test + public void commandTest2() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); + + Assert.assertTrue(cm.verbose); + Assert.assertEquals(jc.getParsedCommand(), "commit"); + Assert.assertTrue(commit.amend); + Assert.assertEquals(commit.author, "cbeust"); + Assert.assertEquals(commit.files, Arrays.asList("A.java", "B.java")); + } + @Test public void requiredMainParameters() { // @@ -294,6 +328,7 @@ public class JCommanderTest { } public static void main(String[] args) { + new JCommanderTest().commandTest2(); // new ConverterFactoryTest().mainWithHostPortParameters(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); diff --git a/src/test/java/com/beust/jcommander/args/CommandAdd.java b/src/test/java/com/beust/jcommander/args/CommandAdd.java new file mode 100644 index 0000000..1ff2c85 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/CommandAdd.java @@ -0,0 +1,15 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +import java.util.List; + +public class CommandAdd { + + @Parameter + public List patterns; + + @Parameter(names = "-i") + public Boolean interactive = false; + +} diff --git a/src/test/java/com/beust/jcommander/args/CommandCommit.java b/src/test/java/com/beust/jcommander/args/CommandCommit.java new file mode 100644 index 0000000..dd55ae6 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/CommandCommit.java @@ -0,0 +1,19 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +import java.util.List; + +@Parameters(separators = "=") +public class CommandCommit { + + @Parameter + public List files; + + @Parameter(names = "--amend", description = "Amend") + public Boolean amend = false; + + @Parameter(names = "--author") + public String author; +} diff --git a/src/test/java/com/beust/jcommander/args/CommandMain.java b/src/test/java/com/beust/jcommander/args/CommandMain.java new file mode 100644 index 0000000..1ba8812 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/CommandMain.java @@ -0,0 +1,9 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class CommandMain { + + @Parameter(names = "-v") + public Boolean verbose = false; +} -- cgit v1.2.3 From d9912518ee6f7aeb843c4977f780fee30fad32d7 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 31 Jul 2010 09:59:30 -0700 Subject: Moved command tests --- .../java/com/beust/jcommander/JCommanderTest.java | 37 +------------------ .../java/com/beust/jcommander/args/CommandAdd.java | 15 -------- .../com/beust/jcommander/args/CommandCommit.java | 19 ---------- .../com/beust/jcommander/args/CommandMain.java | 9 ----- .../com/beust/jcommander/command/CommandAdd.java | 15 ++++++++ .../beust/jcommander/command/CommandCommit.java | 19 ++++++++++ .../com/beust/jcommander/command/CommandMain.java | 9 +++++ .../com/beust/jcommander/command/CommandTest.java | 43 ++++++++++++++++++++++ 8 files changed, 87 insertions(+), 79 deletions(-) delete mode 100644 src/test/java/com/beust/jcommander/args/CommandAdd.java delete mode 100644 src/test/java/com/beust/jcommander/args/CommandCommit.java delete mode 100644 src/test/java/com/beust/jcommander/args/CommandMain.java create mode 100644 src/test/java/com/beust/jcommander/command/CommandAdd.java create mode 100644 src/test/java/com/beust/jcommander/command/CommandCommit.java create mode 100644 src/test/java/com/beust/jcommander/command/CommandMain.java create mode 100644 src/test/java/com/beust/jcommander/command/CommandTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index cab1d7a..c413e34 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -13,9 +13,6 @@ import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; -import com.beust.jcommander.args.CommandAdd; -import com.beust.jcommander.args.CommandCommit; -import com.beust.jcommander.args.CommandMain; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; @@ -279,38 +276,6 @@ public class JCommanderTest { Assert.assertEquals(a.verbose.intValue(), -3); } - @Test - public void commandTest1() { - CommandMain cm = new CommandMain(); - JCommander jc = new JCommander(cm); - CommandAdd add = new CommandAdd(); - jc.addCommand("add", add); - CommandCommit commit = new CommandCommit(); - jc.addCommand("commit", commit); - jc.parse("add", "-i", "A.java"); - - Assert.assertEquals(jc.getParsedCommand(), "add"); - Assert.assertEquals(add.interactive.booleanValue(), true); - Assert.assertEquals(add.patterns, Arrays.asList("A.java")); - } - - @Test - public void commandTest2() { - CommandMain cm = new CommandMain(); - JCommander jc = new JCommander(cm); - CommandAdd add = new CommandAdd(); - jc.addCommand("add", add); - CommandCommit commit = new CommandCommit(); - jc.addCommand("commit", commit); - jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); - - Assert.assertTrue(cm.verbose); - Assert.assertEquals(jc.getParsedCommand(), "commit"); - Assert.assertTrue(commit.amend); - Assert.assertEquals(commit.author, "cbeust"); - Assert.assertEquals(commit.files, Arrays.asList("A.java", "B.java")); - } - @Test public void requiredMainParameters() { // @@ -328,7 +293,7 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().commandTest2(); +// new JCommanderTest().commandTest2(); // new ConverterFactoryTest().mainWithHostPortParameters(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); diff --git a/src/test/java/com/beust/jcommander/args/CommandAdd.java b/src/test/java/com/beust/jcommander/args/CommandAdd.java deleted file mode 100644 index 1ff2c85..0000000 --- a/src/test/java/com/beust/jcommander/args/CommandAdd.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.beust.jcommander.args; - -import com.beust.jcommander.Parameter; - -import java.util.List; - -public class CommandAdd { - - @Parameter - public List patterns; - - @Parameter(names = "-i") - public Boolean interactive = false; - -} diff --git a/src/test/java/com/beust/jcommander/args/CommandCommit.java b/src/test/java/com/beust/jcommander/args/CommandCommit.java deleted file mode 100644 index dd55ae6..0000000 --- a/src/test/java/com/beust/jcommander/args/CommandCommit.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.beust.jcommander.args; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; - -import java.util.List; - -@Parameters(separators = "=") -public class CommandCommit { - - @Parameter - public List files; - - @Parameter(names = "--amend", description = "Amend") - public Boolean amend = false; - - @Parameter(names = "--author") - public String author; -} diff --git a/src/test/java/com/beust/jcommander/args/CommandMain.java b/src/test/java/com/beust/jcommander/args/CommandMain.java deleted file mode 100644 index 1ba8812..0000000 --- a/src/test/java/com/beust/jcommander/args/CommandMain.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.beust.jcommander.args; - -import com.beust.jcommander.Parameter; - -public class CommandMain { - - @Parameter(names = "-v") - public Boolean verbose = false; -} diff --git a/src/test/java/com/beust/jcommander/command/CommandAdd.java b/src/test/java/com/beust/jcommander/command/CommandAdd.java new file mode 100644 index 0000000..227a8f2 --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandAdd.java @@ -0,0 +1,15 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.Parameter; + +import java.util.List; + +public class CommandAdd { + + @Parameter + public List patterns; + + @Parameter(names = "-i") + public Boolean interactive = false; + +} diff --git a/src/test/java/com/beust/jcommander/command/CommandCommit.java b/src/test/java/com/beust/jcommander/command/CommandCommit.java new file mode 100644 index 0000000..c328756 --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandCommit.java @@ -0,0 +1,19 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +import java.util.List; + +@Parameters(separators = "=") +public class CommandCommit { + + @Parameter + public List files; + + @Parameter(names = "--amend", description = "Amend") + public Boolean amend = false; + + @Parameter(names = "--author") + public String author; +} diff --git a/src/test/java/com/beust/jcommander/command/CommandMain.java b/src/test/java/com/beust/jcommander/command/CommandMain.java new file mode 100644 index 0000000..aea3beb --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandMain.java @@ -0,0 +1,9 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.Parameter; + +public class CommandMain { + + @Parameter(names = "-v") + public Boolean verbose = false; +} diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java new file mode 100644 index 0000000..ebdf1da --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -0,0 +1,43 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.JCommander; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Arrays; + +public class CommandTest { + @Test + public void commandTest1() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("add", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "add"); + Assert.assertEquals(add.interactive.booleanValue(), true); + Assert.assertEquals(add.patterns, Arrays.asList("A.java")); + } + + @Test + public void commandTest2() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); + + Assert.assertTrue(cm.verbose); + Assert.assertEquals(jc.getParsedCommand(), "commit"); + Assert.assertTrue(commit.amend); + Assert.assertEquals(commit.author, "cbeust"); + Assert.assertEquals(commit.files, Arrays.asList("A.java", "B.java")); + } + +} -- cgit v1.2.3 From 3477b0f9a636d6e9be7dbc56d185cab426dc70bf Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 1 Aug 2010 15:15:57 -0700 Subject: Displaying correct usage for commands --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- src/test/java/com/beust/jcommander/command/CommandAdd.java | 2 +- src/test/java/com/beust/jcommander/command/CommandCommit.java | 2 +- src/test/java/com/beust/jcommander/command/CommandTest.java | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c413e34..9146fd3 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -294,7 +294,7 @@ public class JCommanderTest { public static void main(String[] args) { // new JCommanderTest().commandTest2(); -// new ConverterFactoryTest().mainWithHostPortParameters(); +// new CommandTest().commandTest2(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); // new JCommander(a, "ex1:10", "ex2:20"); diff --git a/src/test/java/com/beust/jcommander/command/CommandAdd.java b/src/test/java/com/beust/jcommander/command/CommandAdd.java index 227a8f2..230b92b 100644 --- a/src/test/java/com/beust/jcommander/command/CommandAdd.java +++ b/src/test/java/com/beust/jcommander/command/CommandAdd.java @@ -6,7 +6,7 @@ import java.util.List; public class CommandAdd { - @Parameter + @Parameter(description = "Add file contents to the index") public List patterns; @Parameter(names = "-i") diff --git a/src/test/java/com/beust/jcommander/command/CommandCommit.java b/src/test/java/com/beust/jcommander/command/CommandCommit.java index c328756..1c22b72 100644 --- a/src/test/java/com/beust/jcommander/command/CommandCommit.java +++ b/src/test/java/com/beust/jcommander/command/CommandCommit.java @@ -8,7 +8,7 @@ import java.util.List; @Parameters(separators = "=") public class CommandCommit { - @Parameter + @Parameter(description = "Record changes to the repository") public List files; @Parameter(names = "--amend", description = "Amend") diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index ebdf1da..f01a082 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -32,6 +32,9 @@ public class CommandTest { CommandCommit commit = new CommandCommit(); jc.addCommand("commit", commit); jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); +// jc.usage(); +// jc.usage("add"); +// jc.usage("commit"); Assert.assertTrue(cm.verbose); Assert.assertEquals(jc.getParsedCommand(), "commit"); -- cgit v1.2.3 From b7e9d9cfe060b02437f867716a8902cc466b0776 Mon Sep 17 00:00:00 2001 From: Guillaume Sauthier Date: Wed, 4 Aug 2010 13:25:24 +0200 Subject: Add inheritance support --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 ++++++++++ src/test/java/com/beust/jcommander/args/ArgsInherited.java | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsInherited.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9146fd3..a9b6802 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -8,6 +8,7 @@ import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; +import com.beust.jcommander.args.ArgsInherited; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; @@ -268,6 +269,15 @@ public class JCommanderTest { Assert.assertEquals(a.file, "/tmp/a"); } + @Test + public void inheritance() { + ArgsInherited args = new ArgsInherited(); + String[] argv = { "-log", "3", "-child", "2" }; + new JCommander(args, argv); + Assert.assertEquals(args.child.intValue(), 2); + Assert.assertEquals(args.log.intValue(), 3); + } + @Test public void negativeNumber() { Args1 a = new Args1(); diff --git a/src/test/java/com/beust/jcommander/args/ArgsInherited.java b/src/test/java/com/beust/jcommander/args/ArgsInherited.java new file mode 100644 index 0000000..0a4a83c --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsInherited.java @@ -0,0 +1,10 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsInherited extends ArgsDefault { + + @Parameter(names = "-child", description = "Child parameter") + public Integer child = 1; + +} -- cgit v1.2.3 From 58a4af720c30d8dba072a96e3713577c8d30aeae Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 5 Aug 2010 21:28:33 -0700 Subject: Added license headers with mvn -P license license:format --- .../com/beust/jcommander/ConverterFactoryTest.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/DefaultProviderTest.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/HostPort.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/HostPortConverter.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/JCommanderTest.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/args/Args1.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/args/Args2.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/ArgsArityInteger.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/ArgsArityString.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/ArgsBooleanArity.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsConverter.java | 18 ++++++++++++++++++ .../beust/jcommander/args/ArgsConverterFactory.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsDefault.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/args/ArgsI18N1.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/args/ArgsI18N2.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsI18N2New.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/ArgsMainParameter1.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/ArgsMainParameter2.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsMaster.java | 18 ++++++++++++++++++ .../beust/jcommander/args/ArgsMultipleUnparsed.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsPassword.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsPrivate.java | 18 ++++++++++++++++++ src/test/java/com/beust/jcommander/args/ArgsSlave.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/ArgsSlaveBogus.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/CommandLineArgs.java | 18 ++++++++++++++++++ .../com/beust/jcommander/args/CommandLineArgs2.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/IHostPorts.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/SeparatorColon.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/SeparatorEqual.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/SeparatorMixed.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/args/SlashSeparator.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/command/CommandAdd.java | 18 ++++++++++++++++++ .../com/beust/jcommander/command/CommandCommit.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/command/CommandMain.java | 18 ++++++++++++++++++ .../java/com/beust/jcommander/command/CommandTest.java | 18 ++++++++++++++++++ 35 files changed, 630 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java index 5dc613d..a93f27c 100644 --- a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java +++ b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander; import com.beust.jcommander.args.ArgsConverterFactory; diff --git a/src/test/java/com/beust/jcommander/DefaultProviderTest.java b/src/test/java/com/beust/jcommander/DefaultProviderTest.java index e185b77..171d116 100644 --- a/src/test/java/com/beust/jcommander/DefaultProviderTest.java +++ b/src/test/java/com/beust/jcommander/DefaultProviderTest.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander; import com.beust.jcommander.args.ArgsDefault; diff --git a/src/test/java/com/beust/jcommander/HostPort.java b/src/test/java/com/beust/jcommander/HostPort.java index 6737d7c..e0e5289 100644 --- a/src/test/java/com/beust/jcommander/HostPort.java +++ b/src/test/java/com/beust/jcommander/HostPort.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander; public class HostPort { diff --git a/src/test/java/com/beust/jcommander/HostPortConverter.java b/src/test/java/com/beust/jcommander/HostPortConverter.java index b718da4..5f55474 100644 --- a/src/test/java/com/beust/jcommander/HostPortConverter.java +++ b/src/test/java/com/beust/jcommander/HostPortConverter.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander; public class HostPortConverter implements IStringConverter { diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9146fd3..ea41b9a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander; import com.beust.jcommander.args.Args1; diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java index d89ad96..5d5b1b0 100644 --- a/src/test/java/com/beust/jcommander/args/Args1.java +++ b/src/test/java/com/beust/jcommander/args/Args1.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/Args2.java b/src/test/java/com/beust/jcommander/args/Args2.java index dbcb80c..89f622b 100644 --- a/src/test/java/com/beust/jcommander/args/Args2.java +++ b/src/test/java/com/beust/jcommander/args/Args2.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java b/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java index cb21cd3..9c1611f 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java +++ b/src/test/java/com/beust/jcommander/args/ArgsArityInteger.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsArityString.java b/src/test/java/com/beust/jcommander/args/ArgsArityString.java index 709290b..056ae85 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsArityString.java +++ b/src/test/java/com/beust/jcommander/args/ArgsArityString.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java index 8b3c77d..242e347 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java +++ b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index 04c98cc..8d88022 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java index 56f29c0..f8463a0 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverterFactory.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.HostPort; diff --git a/src/test/java/com/beust/jcommander/args/ArgsDefault.java b/src/test/java/com/beust/jcommander/args/ArgsDefault.java index 6a853a1..1adcd73 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsDefault.java +++ b/src/test/java/com/beust/jcommander/args/ArgsDefault.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N1.java b/src/test/java/com/beust/jcommander/args/ArgsI18N1.java index ba9018b..80e29e2 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsI18N1.java +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N1.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java index dd4baf5..772d041 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsI18N2.java +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java index 4265160..1f55306 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java index 19d17e3..b223fd9 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.HostPort; diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java index 332e47e..739c13e 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.HostPort; diff --git a/src/test/java/com/beust/jcommander/args/ArgsMaster.java b/src/test/java/com/beust/jcommander/args/ArgsMaster.java index ba78fe5..ebcba67 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMaster.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMaster.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java b/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java index 91583db..f7b0628 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMultipleUnparsed.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsPassword.java b/src/test/java/com/beust/jcommander/args/ArgsPassword.java index 6fefa17..06c468e 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsPassword.java +++ b/src/test/java/com/beust/jcommander/args/ArgsPassword.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsPrivate.java b/src/test/java/com/beust/jcommander/args/ArgsPrivate.java index 885418c..16e4b4e 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsPrivate.java +++ b/src/test/java/com/beust/jcommander/args/ArgsPrivate.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsSlave.java b/src/test/java/com/beust/jcommander/args/ArgsSlave.java index 4c5d318..dabeb57 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsSlave.java +++ b/src/test/java/com/beust/jcommander/args/ArgsSlave.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java b/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java index 5615984..1abdf1f 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java +++ b/src/test/java/com/beust/jcommander/args/ArgsSlaveBogus.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/CommandLineArgs.java b/src/test/java/com/beust/jcommander/args/CommandLineArgs.java index 6374a72..7c8414f 100644 --- a/src/test/java/com/beust/jcommander/args/CommandLineArgs.java +++ b/src/test/java/com/beust/jcommander/args/CommandLineArgs.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java b/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java index ce1b4cf..ac62792 100644 --- a/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java +++ b/src/test/java/com/beust/jcommander/args/CommandLineArgs2.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/IHostPorts.java b/src/test/java/com/beust/jcommander/args/IHostPorts.java index ba48734..2020c77 100644 --- a/src/test/java/com/beust/jcommander/args/IHostPorts.java +++ b/src/test/java/com/beust/jcommander/args/IHostPorts.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.HostPort; diff --git a/src/test/java/com/beust/jcommander/args/SeparatorColon.java b/src/test/java/com/beust/jcommander/args/SeparatorColon.java index 7ef2e98..ab454fc 100644 --- a/src/test/java/com/beust/jcommander/args/SeparatorColon.java +++ b/src/test/java/com/beust/jcommander/args/SeparatorColon.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/SeparatorEqual.java b/src/test/java/com/beust/jcommander/args/SeparatorEqual.java index 42b47f3..a135207 100644 --- a/src/test/java/com/beust/jcommander/args/SeparatorEqual.java +++ b/src/test/java/com/beust/jcommander/args/SeparatorEqual.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/SeparatorMixed.java b/src/test/java/com/beust/jcommander/args/SeparatorMixed.java index 4717b1e..aa2641f 100644 --- a/src/test/java/com/beust/jcommander/args/SeparatorMixed.java +++ b/src/test/java/com/beust/jcommander/args/SeparatorMixed.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/args/SlashSeparator.java b/src/test/java/com/beust/jcommander/args/SlashSeparator.java index d212956..64d3930 100644 --- a/src/test/java/com/beust/jcommander/args/SlashSeparator.java +++ b/src/test/java/com/beust/jcommander/args/SlashSeparator.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/command/CommandAdd.java b/src/test/java/com/beust/jcommander/command/CommandAdd.java index 230b92b..0e07da5 100644 --- a/src/test/java/com/beust/jcommander/command/CommandAdd.java +++ b/src/test/java/com/beust/jcommander/command/CommandAdd.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.command; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/command/CommandCommit.java b/src/test/java/com/beust/jcommander/command/CommandCommit.java index 1c22b72..52fcba3 100644 --- a/src/test/java/com/beust/jcommander/command/CommandCommit.java +++ b/src/test/java/com/beust/jcommander/command/CommandCommit.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.command; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/command/CommandMain.java b/src/test/java/com/beust/jcommander/command/CommandMain.java index aea3beb..b2c32f4 100644 --- a/src/test/java/com/beust/jcommander/command/CommandMain.java +++ b/src/test/java/com/beust/jcommander/command/CommandMain.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.command; import com.beust.jcommander.Parameter; diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index f01a082..3f59e19 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.command; import com.beust.jcommander.JCommander; -- cgit v1.2.3 From bd5ce9c45c1c30dfed8a553602c127104f254c9f Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 5 Aug 2010 21:34:37 -0700 Subject: Added inheritance support (Guillaume Sauthier) --- .../java/com/beust/jcommander/args/ArgsInherited.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsInherited.java b/src/test/java/com/beust/jcommander/args/ArgsInherited.java index 0a4a83c..abc0e82 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsInherited.java +++ b/src/test/java/com/beust/jcommander/args/ArgsInherited.java @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.beust.jcommander.args; import com.beust.jcommander.Parameter; -- cgit v1.2.3 From 2384cc9b2d354441c7faef9d6703baf307c65d45 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 5 Aug 2010 21:59:22 -0700 Subject: Added overloaded versions of usage() with StringBuilders --- src/test/java/com/beust/jcommander/command/CommandTest.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index 3f59e19..363d241 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -50,9 +50,11 @@ public class CommandTest { CommandCommit commit = new CommandCommit(); jc.addCommand("commit", commit); jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); -// jc.usage(); -// jc.usage("add"); -// jc.usage("commit"); + + jc.setProgramName("TestCommander"); + jc.usage(); + jc.usage("add"); + jc.usage("commit"); Assert.assertTrue(cm.verbose); Assert.assertEquals(jc.getParsedCommand(), "commit"); @@ -61,4 +63,7 @@ public class CommandTest { Assert.assertEquals(commit.files, Arrays.asList("A.java", "B.java")); } + public static void main(String[] args) { + new CommandTest().commandTest2(); + } } -- cgit v1.2.3 From 30417dcf4561b3fe8d9848f5a4d5c654fd015340 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 5 Aug 2010 22:02:16 -0700 Subject: Commented out a few lines --- src/test/java/com/beust/jcommander/command/CommandTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index 363d241..0bedeeb 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -51,10 +51,10 @@ public class CommandTest { jc.addCommand("commit", commit); jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); - jc.setProgramName("TestCommander"); - jc.usage(); - jc.usage("add"); - jc.usage("commit"); +// jc.setProgramName("TestCommander"); +// jc.usage(); +// jc.usage("add"); +// jc.usage("commit"); Assert.assertTrue(cm.verbose); Assert.assertEquals(jc.getParsedCommand(), "commit"); -- cgit v1.2.3 From 72cacbaebb04753ddba0c8dc0f9328310e8cb222 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 15 Aug 2010 17:23:00 -0700 Subject: Added: now throwing an exception if required main parameters are not supplied --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index cc7cc38..6d55ed1 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -30,6 +30,7 @@ import com.beust.jcommander.args.ArgsInherited; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; +import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; import com.beust.jcommander.args.SeparatorColon; @@ -304,9 +305,11 @@ public class JCommanderTest { Assert.assertEquals(a.verbose.intValue(), -3); } - @Test + @Test(expectedExceptions = ParameterException.class) public void requiredMainParameters() { - // + ArgsRequired a = new ArgsRequired(); + String[] argv = {}; + new JCommander(a, argv); } @DataProvider @@ -321,7 +324,7 @@ public class JCommanderTest { } public static void main(String[] args) { -// new JCommanderTest().commandTest2(); + new JCommanderTest().requiredMainParameters(); // new CommandTest().commandTest2(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); -- cgit v1.2.3 From 0bf62c0269798a001ef93dcf9bb9776a95f6052f Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 16 Aug 2010 19:49:42 -0700 Subject: Renaming --- .../com/beust/jcommander/args/ArgsRequired.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsRequired.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsRequired.java b/src/test/java/com/beust/jcommander/args/ArgsRequired.java new file mode 100644 index 0000000..69cb814 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsRequired.java @@ -0,0 +1,31 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.internal.Lists; + +import java.util.List; + +public class ArgsRequired { + + @Parameter(description = "List of files", required = true) + public List parameters = Lists.newArrayList(); + +} -- cgit v1.2.3 From a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 16 Aug 2010 21:48:14 -0700 Subject: Updated CHANGELOG --- src/test/java/com/beust/jcommander/JCommanderTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 6d55ed1..7ca1261 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -312,6 +312,19 @@ public class JCommanderTest { new JCommander(a, argv); } + @Test + public void usageShouldNotChange() { + JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"}); + StringBuilder sb = new StringBuilder(); + jc.usage(sb); + String expected = sb.toString(); + jc = new JCommander(new Args1(), new String[]{"-debug", "-log", "2", "-long", "5"}); + sb = new StringBuilder(); + jc.usage(sb); + String actual = sb.toString(); + Assert.assertEquals(actual, expected); + } + @DataProvider public static Object[][] f() { return new Integer[][] { -- cgit v1.2.3 From dda1651c0b74aa9e8d225096f1d531871460e692 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 25 Aug 2010 18:54:58 -0700 Subject: Added: @Parameters(commandDescription = "command description") --- src/test/java/com/beust/jcommander/JCommanderTest.java | 15 +++++++++++++-- .../java/com/beust/jcommander/command/CommandAdd.java | 4 +++- .../java/com/beust/jcommander/command/CommandCommit.java | 4 ++-- .../java/com/beust/jcommander/command/CommandMain.java | 2 +- 4 files changed, 19 insertions(+), 6 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7ca1261..ca8c97d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -37,6 +37,9 @@ import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; import com.beust.jcommander.args.SlashSeparator; +import com.beust.jcommander.command.CommandAdd; +import com.beust.jcommander.command.CommandCommit; +import com.beust.jcommander.command.CommandMain; import org.testng.Assert; import org.testng.annotations.DataProvider; @@ -337,8 +340,16 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().requiredMainParameters(); -// new CommandTest().commandTest2(); + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.usage(); + +// new JCommanderTest().requiredMainParameters(); +// new CommandTest().commandTest1(); // new DefaultProviderTest().defaultProvider1(); // ArgsMainParameter a = new ArgsMainParameter(); // new JCommander(a, "ex1:10", "ex2:20"); diff --git a/src/test/java/com/beust/jcommander/command/CommandAdd.java b/src/test/java/com/beust/jcommander/command/CommandAdd.java index 0e07da5..733e490 100644 --- a/src/test/java/com/beust/jcommander/command/CommandAdd.java +++ b/src/test/java/com/beust/jcommander/command/CommandAdd.java @@ -19,12 +19,14 @@ package com.beust.jcommander.command; import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; import java.util.List; +@Parameters(commandDescription = "Add file contents to the index") public class CommandAdd { - @Parameter(description = "Add file contents to the index") + @Parameter(description = "Patterns of files to be added") public List patterns; @Parameter(names = "-i") diff --git a/src/test/java/com/beust/jcommander/command/CommandCommit.java b/src/test/java/com/beust/jcommander/command/CommandCommit.java index 52fcba3..2934a89 100644 --- a/src/test/java/com/beust/jcommander/command/CommandCommit.java +++ b/src/test/java/com/beust/jcommander/command/CommandCommit.java @@ -23,10 +23,10 @@ import com.beust.jcommander.Parameters; import java.util.List; -@Parameters(separators = "=") +@Parameters(separators = "=", commandDescription = "Record changes to the repository") public class CommandCommit { - @Parameter(description = "Record changes to the repository") + @Parameter(description = "List of files") public List files; @Parameter(names = "--amend", description = "Amend") diff --git a/src/test/java/com/beust/jcommander/command/CommandMain.java b/src/test/java/com/beust/jcommander/command/CommandMain.java index b2c32f4..c205116 100644 --- a/src/test/java/com/beust/jcommander/command/CommandMain.java +++ b/src/test/java/com/beust/jcommander/command/CommandMain.java @@ -22,6 +22,6 @@ import com.beust.jcommander.Parameter; public class CommandMain { - @Parameter(names = "-v") + @Parameter(names = "-v", description = "Verbose mode") public Boolean verbose = false; } -- cgit v1.2.3 From 4c020da73b8b25773bba8553263cf1954c718573 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 31 Aug 2010 22:23:52 -0700 Subject: Added: Command usages are now shown in the order they were added to the JCommander object. --- .../java/com/beust/jcommander/JCommanderTest.java | 42 ++++++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index ca8c97d..29f2d1f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -46,7 +46,9 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.Arrays; +import java.util.Iterator; import java.util.Locale; +import java.util.Map; import java.util.ResourceBundle; public class JCommanderTest { @@ -328,6 +330,31 @@ public class JCommanderTest { Assert.assertEquals(actual, expected); } + private void verifyCommandOrdering(String[] commandNames, Object[] commands) { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + + for (int i = 0; i < commands.length; i++) { + jc.addCommand(commandNames[i], commands[i]); + } + + Map c = jc.getCommands(); + Assert.assertEquals(c.size(), commands.length); + + Iterator it = c.keySet().iterator(); + for (int i = 0; i < commands.length; i++) { + Assert.assertEquals(it.next(), commandNames[i]); + } + } + + @Test + public void commandsShouldBeShownInOrderOfInsertion() { + verifyCommandOrdering(new String[] { "add", "commit" }, + new Object[] { new CommandAdd(), new CommandCommit() }); + verifyCommandOrdering(new String[] { "commit", "add" }, + new Object[] { new CommandCommit(), new CommandAdd() }); + } + @DataProvider public static Object[][] f() { return new Integer[][] { @@ -340,13 +367,14 @@ public class JCommanderTest { } public static void main(String[] args) { - CommandMain cm = new CommandMain(); - JCommander jc = new JCommander(cm); - CommandAdd add = new CommandAdd(); - jc.addCommand("add", add); - CommandCommit commit = new CommandCommit(); - jc.addCommand("commit", commit); - jc.usage(); + new JCommanderTest().commandsShouldBeShownInOrderOfInsertion(); +// CommandMain cm = new CommandMain(); +// JCommander jc = new JCommander(cm); +// CommandAdd add = new CommandAdd(); +// jc.addCommand("add", add); +// CommandCommit commit = new CommandCommit(); +// jc.addCommand("commit", commit); +// jc.usage(); // new JCommanderTest().requiredMainParameters(); // new CommandTest().commandTest1(); -- cgit v1.2.3 From ed891ffa6a8894150718d11df446269365bed216 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 4 Sep 2010 20:10:17 -0700 Subject: Now working with Java 5 --- src/test/java/com/beust/jcommander/JCommanderTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 29f2d1f..e755e7f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -29,6 +29,7 @@ import com.beust.jcommander.args.ArgsI18N2New; import com.beust.jcommander.args.ArgsInherited; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; +import com.beust.jcommander.args.ArgsPassword; import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; @@ -367,7 +368,11 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().commandsShouldBeShownInOrderOfInsertion(); + ArgsPassword a = new ArgsPassword(); + JCommander jc = new JCommander(a); + jc.parse("-password"); + System.out.println("Password:" + a.password); +// new JCommanderTest().commandsShouldBeShownInOrderOfInsertion(); // CommandMain cm = new CommandMain(); // JCommander jc = new JCommander(cm); // CommandAdd add = new CommandAdd(); -- cgit v1.2.3 From e5799d36df3ceddb4b71b5f786e343c1c1e0d027 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 11 Oct 2010 11:17:20 -0700 Subject: Fixed ArrayIndexOutOfBoundsException. --- .../java/com/beust/jcommander/JCommanderTest.java | 56 ++++++++++++++++++---- .../java/com/beust/jcommander/args/Arity1.java | 9 ++++ 2 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/Arity1.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index e755e7f..56cc638 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -18,6 +18,10 @@ package com.beust.jcommander; +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; import com.beust.jcommander.args.ArgsArityString; @@ -34,6 +38,7 @@ import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; +import com.beust.jcommander.args.Arity1; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; @@ -42,10 +47,6 @@ import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; -import org.testng.Assert; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - import java.util.Arrays; import java.util.Iterator; import java.util.Locale; @@ -186,7 +187,7 @@ public class JCommanderTest { } @Test(expectedExceptions = ParameterException.class) - public void arity1Fail() { + public void arity2Fail() { ArgsArityString args = new ArgsArityString(); String[] argv = { "-pairs", "pair0" }; new JCommander(args, argv); @@ -367,11 +368,48 @@ public class JCommanderTest { }; } + @Test(expectedExceptions = ParameterException.class) + public void arity1Fail() { + final Arity1 arguments = new Arity1(); + final JCommander jCommander = new JCommander(arguments); + final String[] commands = { + "-inspect" + }; + jCommander.parse(commands); + System.out.println("Inspect:" + arguments.inspect); + Assert.assertTrue(arguments.inspect); + } + + @Test(expectedExceptions = ParameterException.class) + public void arity1Success1() { + final Arity1 arguments = new Arity1(); + final JCommander jCommander = new JCommander(arguments); + final String[] commands = { + "-inspect", "true" + }; + jCommander.parse(commands); + System.out.println("Inspect:" + arguments.inspect); + Assert.assertTrue(arguments.inspect); + } + + @Test(expectedExceptions = ParameterException.class) + public void arity1Success2() { + final Arity1 arguments = new Arity1(); + final JCommander jCommander = new JCommander(arguments); + final String[] commands = { + "-inspect", "false" + }; + jCommander.parse(commands); + System.out.println("Inspect:" + arguments.inspect); + Assert.assertFalse(arguments.inspect); + } + public static void main(String[] args) { - ArgsPassword a = new ArgsPassword(); - JCommander jc = new JCommander(a); - jc.parse("-password"); - System.out.println("Password:" + a.password); +// new JCommanderTest().arity1(); +// ArgsPassword a = new ArgsPassword(); +// JCommander jc = new JCommander(a); +// jc.parse("-password"); +// System.out.println("Password:" + a.password); // new JCommanderTest().commandsShouldBeShownInOrderOfInsertion(); // CommandMain cm = new CommandMain(); // JCommander jc = new JCommander(cm); diff --git a/src/test/java/com/beust/jcommander/args/Arity1.java b/src/test/java/com/beust/jcommander/args/Arity1.java new file mode 100644 index 0000000..8cbf086 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/Arity1.java @@ -0,0 +1,9 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class Arity1 +{ + @Parameter(arity = 1, names = "-inspect", description = "", required = false) + public boolean inspect; +} -- cgit v1.2.3 From 1c5e7d362685371709595fe3d2e65ceadbdfcffc Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 11 Oct 2010 11:27:30 -0700 Subject: Disable new tests because TestNG depends on the older version of JCommander. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 56cc638..91851e3 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -368,7 +368,7 @@ public class JCommanderTest { }; } - @Test(expectedExceptions = ParameterException.class) +// @Test(expectedExceptions = ParameterException.class) public void arity1Fail() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -380,7 +380,7 @@ public class JCommanderTest { Assert.assertTrue(arguments.inspect); } - @Test(expectedExceptions = ParameterException.class) +// @Test(expectedExceptions = ParameterException.class) public void arity1Success1() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -392,7 +392,7 @@ public class JCommanderTest { Assert.assertTrue(arguments.inspect); } - @Test(expectedExceptions = ParameterException.class) +// @Test(expectedExceptions = ParameterException.class) public void arity1Success2() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -405,7 +405,7 @@ public class JCommanderTest { } public static void main(String[] args) { -// new JCommanderTest().arity1(); + new JCommanderTest().arity1Success2(); // ArgsPassword a = new ArgsPassword(); // JCommander jc = new JCommander(a); // jc.parse("-password"); -- cgit v1.2.3 From b828856eb3f2d04ebc118babb4068419fce5b3bd Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 27 Nov 2010 10:12:14 -0800 Subject: Added: Boolean parameters with arity 0 (e.g. "foo -debug") --- .../java/com/beust/jcommander/JCommanderTest.java | 37 ++++++++++++++++------ .../beust/jcommander/args/ArgsBooleanArity0.java | 26 +++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsBooleanArity0.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 91851e3..f4bd300 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -18,14 +18,11 @@ package com.beust.jcommander; -import org.testng.Assert; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; +import com.beust.jcommander.args.ArgsBooleanArity0; import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; @@ -33,7 +30,6 @@ import com.beust.jcommander.args.ArgsI18N2New; import com.beust.jcommander.args.ArgsInherited; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; -import com.beust.jcommander.args.ArgsPassword; import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; @@ -47,6 +43,10 @@ import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + import java.util.Arrays; import java.util.Iterator; import java.util.Locale; @@ -218,10 +218,28 @@ public class JCommanderTest { Assert.assertEquals(args.days.get(1), "Thursday"); } - public void booleanArity() { + private void argsBoolean1(String[] params, Boolean expected) { ArgsBooleanArity args = new ArgsBooleanArity(); - new JCommander(args, "-debug", "true"); - Assert.assertEquals(args.debug, Boolean.TRUE); + new JCommander(args, params); + Assert.assertEquals(args.debug, expected); + } + + private void argsBoolean0(String[] params, Boolean expected) { + ArgsBooleanArity0 args = new ArgsBooleanArity0(); + new JCommander(args, params); + Assert.assertEquals(args.debug, expected); + } + + @Test + public void booleanArity1() { + argsBoolean1(new String[] {}, Boolean.FALSE); + argsBoolean1(new String[] { "-debug", "true" }, Boolean.TRUE); + } + + @Test + public void booleanArity0() { + argsBoolean0(new String[] {}, Boolean.FALSE); + argsBoolean0(new String[] { "-debug"}, Boolean.TRUE); } @Test(expectedExceptions = ParameterException.class) @@ -405,7 +423,8 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().arity1Success2(); + new JCommanderTest().booleanArity0(); + new JCommanderTest().booleanArity1(); // ArgsPassword a = new ArgsPassword(); // JCommander jc = new JCommander(a); // jc.parse("-password"); diff --git a/src/test/java/com/beust/jcommander/args/ArgsBooleanArity0.java b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity0.java new file mode 100644 index 0000000..62895ec --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsBooleanArity0.java @@ -0,0 +1,26 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsBooleanArity0 { + @Parameter(names = "-debug", arity = 0) + public Boolean debug = false; +} -- cgit v1.2.3 From 0dcc308f1c08b831376a3e153e2a1ed1a6166697 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 27 Nov 2010 12:53:20 -0800 Subject: Better usage(). Now sorting correctly and aligning -- options on the same column. --- .../java/com/beust/jcommander/JCommanderTest.java | 8 ++++++-- src/test/java/com/beust/jcommander/args/Args3.java | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/Args3.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index f4bd300..b4fa641 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -20,6 +20,7 @@ package com.beust.jcommander; import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; +import com.beust.jcommander.args.Args3; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; @@ -423,8 +424,11 @@ public class JCommanderTest { } public static void main(String[] args) { - new JCommanderTest().booleanArity0(); - new JCommanderTest().booleanArity1(); +// new JCommanderTest().booleanArity0(); +// new JCommanderTest().booleanArity1(); + Args3 a = new Args3(); + JCommander jc = new JCommander(a); + jc.usage(); // ArgsPassword a = new ArgsPassword(); // JCommander jc = new JCommander(a); // jc.parse("-password"); diff --git a/src/test/java/com/beust/jcommander/args/Args3.java b/src/test/java/com/beust/jcommander/args/Args3.java new file mode 100644 index 0000000..a1a4011 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/Args3.java @@ -0,0 +1,21 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class Args3 { + + @Parameter(names = "--classpath", description = "The classpath") + public String classpath; + + @Parameter(names = { "-c", "--convention" }, description = "The convention") + public String convention; + + @Parameter(names = { "-d", "--destination" }, description = "The destination to go to") + public String destination; + + @Parameter(names = "--configure", description = "How to configure") + public String configure; + + @Parameter(names = "--filespec") + public String filespec; +} -- cgit v1.2.3 From a0f0aae9343685b767d6b7e11b399276f90f47e7 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 27 Nov 2010 15:58:40 -0800 Subject: Better formatting of usage(). --- src/test/java/com/beust/jcommander/args/Args3.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/Args3.java b/src/test/java/com/beust/jcommander/args/Args3.java index a1a4011..5fbaac0 100644 --- a/src/test/java/com/beust/jcommander/args/Args3.java +++ b/src/test/java/com/beust/jcommander/args/Args3.java @@ -4,7 +4,11 @@ import com.beust.jcommander.Parameter; public class Args3 { - @Parameter(names = "--classpath", description = "The classpath") + @Parameter(names = "--classpath", description = "The classpath. This is a very long " + + "description in order to test the line wrapping. Let's see how this works." + + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor" + + " incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis " + + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.") public String classpath; @Parameter(names = { "-c", "--convention" }, description = "The convention") -- cgit v1.2.3 From 9c170b3038460fde4999afc7af7bb5d31e3f1e47 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 28 Nov 2010 12:00:17 -0800 Subject: Alphabetical usage. --- .../java/com/beust/jcommander/JCommanderTest.java | 4 ++-- src/test/java/com/beust/jcommander/args/Args3.java | 25 ---------------------- .../beust/jcommander/args/ArgsLongDescription.java | 25 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 27 deletions(-) delete mode 100644 src/test/java/com/beust/jcommander/args/Args3.java create mode 100644 src/test/java/com/beust/jcommander/args/ArgsLongDescription.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index b4fa641..36b1a9d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -20,7 +20,7 @@ package com.beust.jcommander; import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; -import com.beust.jcommander.args.Args3; +import com.beust.jcommander.args.ArgsLongDescription; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; @@ -426,7 +426,7 @@ public class JCommanderTest { public static void main(String[] args) { // new JCommanderTest().booleanArity0(); // new JCommanderTest().booleanArity1(); - Args3 a = new Args3(); + ArgsLongDescription a = new ArgsLongDescription(); JCommander jc = new JCommander(a); jc.usage(); // ArgsPassword a = new ArgsPassword(); diff --git a/src/test/java/com/beust/jcommander/args/Args3.java b/src/test/java/com/beust/jcommander/args/Args3.java deleted file mode 100644 index 5fbaac0..0000000 --- a/src/test/java/com/beust/jcommander/args/Args3.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.beust.jcommander.args; - -import com.beust.jcommander.Parameter; - -public class Args3 { - - @Parameter(names = "--classpath", description = "The classpath. This is a very long " - + "description in order to test the line wrapping. Let's see how this works." - + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor" - + " incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis " - + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.") - public String classpath; - - @Parameter(names = { "-c", "--convention" }, description = "The convention") - public String convention; - - @Parameter(names = { "-d", "--destination" }, description = "The destination to go to") - public String destination; - - @Parameter(names = "--configure", description = "How to configure") - public String configure; - - @Parameter(names = "--filespec") - public String filespec; -} diff --git a/src/test/java/com/beust/jcommander/args/ArgsLongDescription.java b/src/test/java/com/beust/jcommander/args/ArgsLongDescription.java new file mode 100644 index 0000000..e961016 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsLongDescription.java @@ -0,0 +1,25 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsLongDescription { + + @Parameter(names = "--classpath", description = "The classpath. This is a very long " + + "description in order to test the line wrapping. Let's see how this works." + + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor" + + " incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis " + + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.") + public String classpath = "/tmp"; + + @Parameter(names = { "-c", "--convention" }, description = "The convention", required = true) + public String convention = "Java"; + + @Parameter(names = { "-d", "--destination" }, description = "The destination to go to") + public String destination; + + @Parameter(names = "--configure", description = "How to configure") + public String configure; + + @Parameter(names = "--filespec") + public String filespec; +} -- cgit v1.2.3 From c1d51baff4fb68b90b2f9cdfea512c84ab94eb42 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 15 Dec 2010 09:49:08 -0800 Subject: Removed @Override to guarantee JDK 1.5 compilation. --- src/test/java/com/beust/jcommander/ConverterFactoryTest.java | 1 - src/test/java/com/beust/jcommander/DefaultProviderTest.java | 1 - src/test/java/com/beust/jcommander/HostPortConverter.java | 1 - src/test/java/com/beust/jcommander/JCommanderTest.java | 11 ++++++----- .../java/com/beust/jcommander/args/ArgsMainParameter1.java | 1 - .../java/com/beust/jcommander/args/ArgsMainParameter2.java | 1 - 6 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java index a93f27c..e02166e 100644 --- a/src/test/java/com/beust/jcommander/ConverterFactoryTest.java +++ b/src/test/java/com/beust/jcommander/ConverterFactoryTest.java @@ -41,7 +41,6 @@ public class ConverterFactoryTest { private static final IStringConverterFactory CONVERTER_FACTORY = new IStringConverterFactory() { - @Override public Class> getConverter(Class forType) { return MAP.get(forType); } diff --git a/src/test/java/com/beust/jcommander/DefaultProviderTest.java b/src/test/java/com/beust/jcommander/DefaultProviderTest.java index 171d116..45ab6b6 100644 --- a/src/test/java/com/beust/jcommander/DefaultProviderTest.java +++ b/src/test/java/com/beust/jcommander/DefaultProviderTest.java @@ -27,7 +27,6 @@ import org.testng.annotations.Test; public class DefaultProviderTest { private static final IDefaultProvider DEFAULT_PROVIDER = new IDefaultProvider() { - @Override public String getDefaultValueFor(String optionName) { return "-debug".equals(optionName) ? "false" : "42"; } diff --git a/src/test/java/com/beust/jcommander/HostPortConverter.java b/src/test/java/com/beust/jcommander/HostPortConverter.java index 5f55474..5409d21 100644 --- a/src/test/java/com/beust/jcommander/HostPortConverter.java +++ b/src/test/java/com/beust/jcommander/HostPortConverter.java @@ -20,7 +20,6 @@ package com.beust.jcommander; public class HostPortConverter implements IStringConverter { - @Override public HostPort convert(String value) { HostPort result = new HostPort(); String[] s = value.split(":"); diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 36b1a9d..f0573db 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -237,7 +237,8 @@ public class JCommanderTest { argsBoolean1(new String[] { "-debug", "true" }, Boolean.TRUE); } - @Test + @Test(enabled = false, + description = "Disabled because of JCommander -> TestNG -> JCommander dependency") public void booleanArity0() { argsBoolean0(new String[] {}, Boolean.FALSE); argsBoolean0(new String[] { "-debug"}, Boolean.TRUE); @@ -424,11 +425,11 @@ public class JCommanderTest { } public static void main(String[] args) { -// new JCommanderTest().booleanArity0(); + new JCommanderTest().booleanArity0(); // new JCommanderTest().booleanArity1(); - ArgsLongDescription a = new ArgsLongDescription(); - JCommander jc = new JCommander(a); - jc.usage(); +// ArgsLongDescription a = new ArgsLongDescription(); +// JCommander jc = new JCommander(a); +// jc.usage(); // ArgsPassword a = new ArgsPassword(); // JCommander jc = new JCommander(a); // jc.parse("-password"); diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java index b223fd9..cd5c52d 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter1.java @@ -34,7 +34,6 @@ public class ArgsMainParameter1 implements IHostPorts { @Parameter public List parameters = Lists.newArrayList(); - @Override public List getHostPorts() { return parameters; } diff --git a/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java index 739c13e..57422e3 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java +++ b/src/test/java/com/beust/jcommander/args/ArgsMainParameter2.java @@ -35,7 +35,6 @@ public class ArgsMainParameter2 implements IHostPorts { @Parameter(converter = HostPortConverter.class) public List parameters = Lists.newArrayList(); - @Override public List getHostPorts() { return parameters; } -- cgit v1.2.3 From 460998fec3b06bf45b024c645b5b5e854de68c24 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 15 Dec 2010 16:23:18 -0800 Subject: Added class level @Test. --- .../java/com/beust/jcommander/JCommanderTest.java | 42 +++------------------- 1 file changed, 5 insertions(+), 37 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index f0573db..d661ccd 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -54,8 +54,8 @@ import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; +@Test public class JCommanderTest { - @Test public void simpleArgs() { Args1 args = new Args1(); String[] argv = { "-debug", "-log", "2", "-groups", "unit", "a", "b", "c" }; @@ -71,7 +71,6 @@ public class JCommanderTest { * Make sure that if there are args with multiple names (e.g. "-log" and "-verbose"), * the usage will only display it once. */ - @Test public void repeatedArgs() { Args1 args = new Args1(); String[] argv = { "-log", "2" }; @@ -99,12 +98,10 @@ public class JCommanderTest { Assert.assertEquals(args.verbose.intValue(), 2); } - @Test public void multipleNames1() { multipleNames("-log"); } - @Test public void multipleNames2() { multipleNames("-verbose"); } @@ -122,17 +119,14 @@ public class JCommanderTest { Assert.assertEquals(pd.getDescription(), expectedString); } - @Test public void i18nNoLocale() { i18n1("MessageBundle", null, "Host"); } - @Test public void i18nUsLocale() { i18n1("MessageBundle", new Locale("en", "US"), "Host"); } - @Test public void i18nFrLocale() { i18n1("MessageBundle", new Locale("fr", "FR"), "Hôte"); } @@ -145,17 +139,14 @@ public class JCommanderTest { Assert.assertEquals(pd.getDescription(), "Hôte"); } - @Test public void i18nWithResourceAnnotation() { i18n2(new ArgsI18N2()); } - @Test public void i18nWithResourceAnnotationNew() { i18n2(new ArgsI18N2New()); } - @Test public void multiObjects() { ArgsMaster m = new ArgsMaster(); ArgsSlave s = new ArgsSlave(); @@ -174,7 +165,6 @@ public class JCommanderTest { new JCommander(new Object[] { m , s }, argv); } - @Test public void arityString() { ArgsArityString args = new ArgsArityString(); String[] argv = { "-pairs", "pair0", "pair1", "rest" }; @@ -201,14 +191,12 @@ public class JCommanderTest { new JCommander(args, argv); } - @Test public void privateArgs() { ArgsPrivate args = new ArgsPrivate(); new JCommander(args, "-verbose", "3"); Assert.assertEquals(args.getVerbose().intValue(), 3); } - @Test public void converterArgs() { ArgsConverter args = new ArgsConverter(); String fileName = "a"; @@ -231,14 +219,11 @@ public class JCommanderTest { Assert.assertEquals(args.debug, expected); } - @Test public void booleanArity1() { argsBoolean1(new String[] {}, Boolean.FALSE); argsBoolean1(new String[] { "-debug", "true" }, Boolean.TRUE); } - @Test(enabled = false, - description = "Disabled because of JCommander -> TestNG -> JCommander dependency") public void booleanArity0() { argsBoolean0(new String[] {}, Boolean.FALSE); argsBoolean0(new String[] { "-debug"}, Boolean.TRUE); @@ -251,7 +236,6 @@ public class JCommanderTest { new JCommander(args, argv); } - @Test(expectedExceptions = ParameterException.class) public void badParameterShouldThrowParameter2Exception() { Args1 args = new Args1(); @@ -259,7 +243,6 @@ public class JCommanderTest { new JCommander(args, argv); } - @Test public void listParameters() { Args2 a = new Args2(); String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"}; @@ -270,7 +253,6 @@ public class JCommanderTest { Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c")); } - @Test public void separatorEqual() { SeparatorEqual s = new SeparatorEqual(); String[] argv = { "-log=3", "--longoption=10" }; @@ -279,7 +261,6 @@ public class JCommanderTest { Assert.assertEquals(s.longOption.intValue(), 10); } - @Test public void separatorColon() { SeparatorColon s = new SeparatorColon(); String[] argv = { "-verbose:true" }; @@ -287,7 +268,6 @@ public class JCommanderTest { Assert.assertTrue(s.verbose); } - @Test public void separatorBoth() { SeparatorColon s = new SeparatorColon(); SeparatorEqual s2 = new SeparatorEqual(); @@ -297,7 +277,6 @@ public class JCommanderTest { Assert.assertEquals(s2.log.intValue(), 3); } - @Test public void separatorMixed1() { SeparatorMixed s = new SeparatorMixed(); String[] argv = { "-long:1", "-level=42" }; @@ -306,7 +285,6 @@ public class JCommanderTest { Assert.assertEquals(s.level.intValue(), 42); } - @Test public void slashParameters() { SlashSeparator a = new SlashSeparator(); String[] argv = { "/verbose", "/file", "/tmp/a" }; @@ -315,7 +293,6 @@ public class JCommanderTest { Assert.assertEquals(a.file, "/tmp/a"); } - @Test public void inheritance() { ArgsInherited args = new ArgsInherited(); String[] argv = { "-log", "3", "-child", "2" }; @@ -324,7 +301,6 @@ public class JCommanderTest { Assert.assertEquals(args.log.intValue(), 3); } - @Test public void negativeNumber() { Args1 a = new Args1(); String[] argv = { "-verbose", "-3" }; @@ -339,7 +315,6 @@ public class JCommanderTest { new JCommander(a, argv); } - @Test public void usageShouldNotChange() { JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"}); StringBuilder sb = new StringBuilder(); @@ -369,7 +344,6 @@ public class JCommanderTest { } } - @Test public void commandsShouldBeShownInOrderOfInsertion() { verifyCommandOrdering(new String[] { "add", "commit" }, new Object[] { new CommandAdd(), new CommandCommit() }); @@ -388,7 +362,7 @@ public class JCommanderTest { }; } -// @Test(expectedExceptions = ParameterException.class) + @Test(expectedExceptions = ParameterException.class) public void arity1Fail() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -396,11 +370,8 @@ public class JCommanderTest { "-inspect" }; jCommander.parse(commands); - System.out.println("Inspect:" + arguments.inspect); - Assert.assertTrue(arguments.inspect); } -// @Test(expectedExceptions = ParameterException.class) public void arity1Success1() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -408,11 +379,9 @@ public class JCommanderTest { "-inspect", "true" }; jCommander.parse(commands); - System.out.println("Inspect:" + arguments.inspect); Assert.assertTrue(arguments.inspect); } -// @Test(expectedExceptions = ParameterException.class) public void arity1Success2() { final Arity1 arguments = new Arity1(); final JCommander jCommander = new JCommander(arguments); @@ -420,12 +389,11 @@ public class JCommanderTest { "-inspect", "false" }; jCommander.parse(commands); - System.out.println("Inspect:" + arguments.inspect); Assert.assertFalse(arguments.inspect); } - public static void main(String[] args) { - new JCommanderTest().booleanArity0(); +// public static void main(String[] args) { +// new JCommanderTest().arity1Fail(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); @@ -456,7 +424,7 @@ public class JCommanderTest { // String[] argv = { "-log=10" }; // JCommander jc = new JCommander(a, argv); // Assert.assertEquals(a.log.intValue(), 10); - } +// } // Tests: // required unparsed parameter -- cgit v1.2.3 From f2cd60c1f0e475201b9d24b486df920ff1d02ac5 Mon Sep 17 00:00:00 2001 From: Russell Egan Date: Thu, 23 Dec 2010 14:37:30 -0500 Subject: parse() should check if createDescriptions was already called When using main parameters, createDescriptions can't be called twice, but it is possible to do so by using combinations of usage() and parse() --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index d661ccd..3af64ff 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -29,6 +29,7 @@ import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; import com.beust.jcommander.args.ArgsInherited; +import com.beust.jcommander.args.ArgsMainParameter1; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; import com.beust.jcommander.args.ArgsPrivate; @@ -315,6 +316,15 @@ public class JCommanderTest { new JCommander(a, argv); } + @Test + public void noParseConstructor() { + JCommander jCommander = new JCommander(new ArgsMainParameter1()); + jCommander.usage(); + // Before fix, this parse would throw an exception, because it calls createDescription, which + // was already called by usage(), and can only be called once. + jCommander.parse(); + } + public void usageShouldNotChange() { JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"}); StringBuilder sb = new StringBuilder(); -- cgit v1.2.3 From dae46a1c4166085b56a78669050dc19938735a41 Mon Sep 17 00:00:00 2001 From: Russell Egan Date: Thu, 23 Dec 2010 14:38:47 -0500 Subject: Added a constructor which takes a resource bundle, but doesn't parse immediately. This is useful when you want to interrogate some options even when required options are missing. --- .../java/com/beust/jcommander/JCommanderTest.java | 21 +++++++++++++++ .../java/com/beust/jcommander/args/ArgsHelp.java | 30 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsHelp.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 3af64ff..eba6cfe 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -20,6 +20,7 @@ package com.beust.jcommander; import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; +import com.beust.jcommander.args.ArgsHelp; import com.beust.jcommander.args.ArgsLongDescription; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; @@ -148,6 +149,26 @@ public class JCommanderTest { i18n2(new ArgsI18N2New()); } + /** + * Test a use case where there are required parameters, but you still want + * to interrogate the options which are specified. + */ + @Test + public void usageWithRequiredArgsAndResourceBundle() { + System.out.println("In the test"); + ArgsHelp argsHelp = new ArgsHelp(); + JCommander jc = new JCommander(new Object[]{argsHelp, new ArgsRequired()}, java.util.ResourceBundle.getBundle("MessageBundle")); + // Should be able to display usage without triggering validation + jc.usage(); + try { + jc.parse("-h"); + Assert.fail("Should have thrown a required parameter exception"); + } catch (ParameterException e) { + Assert.assertTrue(e.getMessage().contains("are required")); + } + Assert.assertTrue(argsHelp.help); + } + public void multiObjects() { ArgsMaster m = new ArgsMaster(); ArgsSlave s = new ArgsSlave(); diff --git a/src/test/java/com/beust/jcommander/args/ArgsHelp.java b/src/test/java/com/beust/jcommander/args/ArgsHelp.java new file mode 100644 index 0000000..4baaddd --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsHelp.java @@ -0,0 +1,30 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +/** + * Test a help option which overrides other options and option validations + */ +public class ArgsHelp { + + @Parameter(names = "-h", description = "Display help") + public boolean help; +} -- cgit v1.2.3 From 21059374aa90082d8d0b94c758a0041c2c6b06de Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 23 Dec 2010 12:22:20 -0800 Subject: A few changes on top of ansel1's patch. --- .../java/com/beust/jcommander/JCommanderTest.java | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index eba6cfe..5c5ac34 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -149,15 +149,22 @@ public class JCommanderTest { i18n2(new ArgsI18N2New()); } + public void noParseConstructor() { + JCommander jCommander = new JCommander(new ArgsMainParameter1()); + jCommander.usage(); + // Before fix, this parse would throw an exception, because it calls createDescription, which + // was already called by usage(), and can only be called once. + jCommander.parse(); + } + /** * Test a use case where there are required parameters, but you still want * to interrogate the options which are specified. */ - @Test public void usageWithRequiredArgsAndResourceBundle() { - System.out.println("In the test"); ArgsHelp argsHelp = new ArgsHelp(); - JCommander jc = new JCommander(new Object[]{argsHelp, new ArgsRequired()}, java.util.ResourceBundle.getBundle("MessageBundle")); + JCommander jc = new JCommander(new Object[]{argsHelp, new ArgsRequired()}, + java.util.ResourceBundle.getBundle("MessageBundle")); // Should be able to display usage without triggering validation jc.usage(); try { @@ -337,15 +344,6 @@ public class JCommanderTest { new JCommander(a, argv); } - @Test - public void noParseConstructor() { - JCommander jCommander = new JCommander(new ArgsMainParameter1()); - jCommander.usage(); - // Before fix, this parse would throw an exception, because it calls createDescription, which - // was already called by usage(), and can only be called once. - jCommander.parse(); - } - public void usageShouldNotChange() { JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"}); StringBuilder sb = new StringBuilder(); -- cgit v1.2.3 From b5598e97aa7d22a933223f6211d50329b1a20308 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 4 Jan 2011 13:02:48 -0800 Subject: Added testng.xml and now running the tests directly with TestNG instead of Maven. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5c5ac34..31f409e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -20,12 +20,11 @@ package com.beust.jcommander; import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args2; -import com.beust.jcommander.args.ArgsHelp; -import com.beust.jcommander.args.ArgsLongDescription; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; import com.beust.jcommander.args.ArgsConverter; +import com.beust.jcommander.args.ArgsHelp; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; @@ -151,7 +150,7 @@ public class JCommanderTest { public void noParseConstructor() { JCommander jCommander = new JCommander(new ArgsMainParameter1()); - jCommander.usage(); + jCommander.usage(new StringBuilder()); // Before fix, this parse would throw an exception, because it calls createDescription, which // was already called by usage(), and can only be called once. jCommander.parse(); @@ -166,7 +165,7 @@ public class JCommanderTest { JCommander jc = new JCommander(new Object[]{argsHelp, new ArgsRequired()}, java.util.ResourceBundle.getBundle("MessageBundle")); // Should be able to display usage without triggering validation - jc.usage(); + jc.usage(new StringBuilder()); try { jc.parse("-h"); Assert.fail("Should have thrown a required parameter exception"); -- cgit v1.2.3 From e2d8da7b584b6a13c23de32ce2df0799a4d3513d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 24 Jan 2011 14:01:29 -0800 Subject: Fixed: NPE with calling getCommandDescription() of an unknown command --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 31f409e..f2dfc68 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -89,6 +89,16 @@ public class JCommanderTest { new JCommander(args, argv); } + /** + * Getting the description of a nonexistent command should throw an exception. + */ + @Test(expectedExceptions = ParameterException.class) + public void nonexistentCommandShouldThrow() { + String[] argv = { }; + JCommander jc = new JCommander(new Object(), argv); + jc.getCommandDescription("foo"); + } + /** * Required options with multiple names should work with all names. */ -- cgit v1.2.3 From 804498ec24662928bf06efcee6584d55fca3d898 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 24 Jan 2011 14:44:15 -0800 Subject: Double check that the type of a main parameter is a List. --- .../beust/jcommander/ArgsRequiredWrongMain.java | 6 ++++++ .../java/com/beust/jcommander/JCommanderTest.java | 24 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsRequiredWrongMain.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsRequiredWrongMain.java b/src/test/java/com/beust/jcommander/ArgsRequiredWrongMain.java new file mode 100644 index 0000000..c2124d9 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsRequiredWrongMain.java @@ -0,0 +1,6 @@ +package com.beust.jcommander; + +public class ArgsRequiredWrongMain { + @Parameter(required = true) + public String[] file; +} \ No newline at end of file diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index f2dfc68..8e2a48a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -45,12 +45,15 @@ import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; +import org.omg.PortableServer.POAPackage.WrongAdapter; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; @@ -430,8 +433,24 @@ public class JCommanderTest { Assert.assertFalse(arguments.inspect); } -// public static void main(String[] args) { -// new JCommanderTest().arity1Fail(); + @Parameters(commandDescription = "Help for the given commands.") + public static class Help { + public static final String NAME = "help"; + + @Parameter(description = "List of commands.") + public List commands=new ArrayList(); + } + + @Test(expectedExceptions = ParameterException.class, + description = "Verify that the main parameter's type is checked to be a List") + public void wrongMainTypeShouldThrow() { + JCommander jc = new JCommander(new ArgsRequiredWrongMain()); + jc.parse(new String[] { "f1", "f2" }); + } + + @Test(enabled = false) + public static void main(String[] args) { + new JCommander(new Help()).usage(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); @@ -463,6 +482,7 @@ public class JCommanderTest { // JCommander jc = new JCommander(a, argv); // Assert.assertEquals(a.log.intValue(), 10); // } + } // Tests: // required unparsed parameter -- cgit v1.2.3 From c512c633a76a8bfe5a8eda8c6198cce7af4c5eaf Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 24 Jan 2011 14:52:47 -0800 Subject: Fixed OOM reported by huxi. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 ++++++++- .../java/com/beust/jcommander/args/ArgsOutOfMemory.java | 13 +++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsOutOfMemory.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 8e2a48a..9dabd57 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -32,6 +32,7 @@ import com.beust.jcommander.args.ArgsInherited; import com.beust.jcommander.args.ArgsMainParameter1; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; +import com.beust.jcommander.args.ArgsOutOfMemory; import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; @@ -448,9 +449,15 @@ public class JCommanderTest { jc.parse(new String[] { "f1", "f2" }); } + @Test(description = "This used to run out of memory") + public void oom() { + JCommander jc = new JCommander(new ArgsOutOfMemory()); + jc.usage(new StringBuilder()); + } + @Test(enabled = false) public static void main(String[] args) { - new JCommander(new Help()).usage(); + new JCommanderTest().oom(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); diff --git a/src/test/java/com/beust/jcommander/args/ArgsOutOfMemory.java b/src/test/java/com/beust/jcommander/args/ArgsOutOfMemory.java new file mode 100644 index 0000000..f059ebb --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsOutOfMemory.java @@ -0,0 +1,13 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; + +public class ArgsOutOfMemory +{ + @Parameter(names = { "-p", "--pattern" }, + description = "pattern used by 'tail'. See http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout and http://logback.qos.ch/manual/layouts.html#AccessPatternLayout") + public String pattern; + + @Parameter(names = "-q", description = "Filler arg") + public String filler; +} -- cgit v1.2.3 From cfbeb8905f1166e5fd03624a34571d6ae5ab321d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 9 Mar 2011 11:24:15 -0800 Subject: First pass at implementing validators. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 18 ++++++++++++++++-- .../java/com/beust/jcommander/args/ArgsValidate1.java | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsValidate1.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9dabd57..627a95b 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -37,6 +37,7 @@ import com.beust.jcommander.args.ArgsPrivate; import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; +import com.beust.jcommander.args.ArgsValidate1; import com.beust.jcommander.args.Arity1; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; @@ -46,7 +47,6 @@ import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; -import org.omg.PortableServer.POAPackage.WrongAdapter; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -455,9 +455,23 @@ public class JCommanderTest { jc.usage(new StringBuilder()); } + @Test + public void getParametersShouldNotNpe() { + JCommander jc = new JCommander(new Args1()); + List parameters = jc.getParameters(); + } + + @Test(expectedExceptions = ParameterException.class) + public void validationShouldWork1() { + ArgsValidate1 a = new ArgsValidate1(); + JCommander jc = new JCommander(a); + jc.parse(new String[] { "-age", "-2 "}); + System.out.println("Age:" + a.age); + } + @Test(enabled = false) public static void main(String[] args) { - new JCommanderTest().oom(); + new JCommanderTest().validationShouldWork1(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); diff --git a/src/test/java/com/beust/jcommander/args/ArgsValidate1.java b/src/test/java/com/beust/jcommander/args/ArgsValidate1.java new file mode 100644 index 0000000..5274220 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsValidate1.java @@ -0,0 +1,10 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.validators.PositiveInteger; + +public class ArgsValidate1 { + + @Parameter(names = "-age", validateWith = PositiveInteger.class) + public Integer age; +} -- cgit v1.2.3 From 91b83b28a07d3ab0df7880b473e37b2b978c6a99 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 10 Mar 2011 10:44:54 -0800 Subject: Suppress a few warnings. --- src/test/java/com/beust/jcommander/args/ArgsI18N2.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java index 772d041..1ccfd43 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsI18N2.java +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2.java @@ -21,6 +21,7 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; import com.beust.jcommander.ResourceBundle; +@SuppressWarnings("deprecation") @ResourceBundle("MessageBundle") public class ArgsI18N2 { -- cgit v1.2.3 From e1d494d69d20c1afab9ff29a9fd31e48ba71cc7c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 10 Mar 2011 10:45:34 -0800 Subject: Better test case for the validator. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 627a95b..293e976 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -461,12 +461,18 @@ public class JCommanderTest { List parameters = jc.getParameters(); } - @Test(expectedExceptions = ParameterException.class) public void validationShouldWork1() { + ArgsValidate1 a = new ArgsValidate1(); + JCommander jc = new JCommander(a); + jc.parse(new String[] { "-age", "2 "}); + Assert.assertEquals(a.age, new Integer(2)); + } + + @Test(expectedExceptions = ParameterException.class) + public void validationShouldWork2() { ArgsValidate1 a = new ArgsValidate1(); JCommander jc = new JCommander(a); jc.parse(new String[] { "-age", "-2 "}); - System.out.println("Age:" + a.age); } @Test(enabled = false) -- cgit v1.2.3 From 8877f663e79381340b329180922d7ac448e26317 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 10 Mar 2011 11:04:38 -0800 Subject: Fixed: Exception when using an @ file with empty lines between options. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 293e976..9985d49 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -51,6 +51,9 @@ import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -475,9 +478,20 @@ public class JCommanderTest { jc.parse(new String[] { "-age", "-2 "}); } + public void atFileCanContainEmptyLines() throws IOException { + File f = File.createTempFile("JCommander", null); + f.deleteOnExit(); + FileWriter fw = new FileWriter(f); + fw.write("-log\n"); + fw.write("\n"); + fw.write("2\n"); + fw.close(); + new JCommander(new Args1(), "@" + f.getAbsolutePath()); + } + @Test(enabled = false) - public static void main(String[] args) { - new JCommanderTest().validationShouldWork1(); + public static void main(String[] args) throws Exception { + new JCommanderTest().atFileCanContainEmptyLines(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); -- cgit v1.2.3 From 4804ce09adb4fe1227850edc5ef4545528704678 Mon Sep 17 00:00:00 2001 From: rodionmoiseev Date: Sat, 28 May 2011 19:15:08 +0900 Subject: Added support for command aliases, e.g. "ci" for "commit" command, etc. Any number of aliases can be optionally specified to the addCommand() method. In usage output commands containing aliases will be formatted with a post-fixed comma-separated list of aliases in brackets, e.g. commit(ci,cmt). usage(String) series of methods also accept both commands and aliases. All existing API should be compatible with previous versions. --- .../beust/jcommander/command/CommandAliasTest.java | 174 +++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/command/CommandAliasTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandAliasTest.java b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java new file mode 100644 index 0000000..eddcb0a --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java @@ -0,0 +1,174 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.command; + +import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Tests command alias functionality + * + * @author rodionmoiseev + */ +public class CommandAliasTest { + @Test + public void oneCommandWithSingleAlias() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add, "a"); + jc.parse("a", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "add"); + Assert.assertEquals(jc.getParsedAlias(), "a"); + Assert.assertEquals(add.interactive.booleanValue(), true); + Assert.assertEquals(add.patterns, Arrays.asList("A.java")); + } + + @Test + public void oneCommandWithMultipleAliases_commit_ci() { + testCommitWithAlias("ci"); + } + + @Test + public void oneCommandWithMultipleAliases_commit_cmt() { + testCommitWithAlias("cmt"); + } + + private void testCommitWithAlias(String alias) { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit, "ci", "cmt"); + jc.parse(alias, "--amend", "--author", "jack", "file1.txt"); + + Assert.assertEquals(jc.getParsedCommand(), "commit"); + Assert.assertEquals(jc.getParsedAlias(), alias); + Assert.assertEquals(commit.amend.booleanValue(), true); + Assert.assertEquals(commit.author, "jack"); + Assert.assertEquals(commit.files, Arrays.asList("file1.txt")); + } + + @Test + public void twoCommandsWithAliases() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add, "a"); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit, "ci", "cmt"); + jc.parse("a", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "add"); + Assert.assertEquals(add.interactive.booleanValue(), true); + Assert.assertEquals(add.patterns, Arrays.asList("A.java")); + } + + @Test + public void clashingAliasesAreNotAllowed() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add, "xx"); + CommandCommit commit = new CommandCommit(); + try { + jc.addCommand("commit", commit, "ci", "xx"); + Assert.fail("Should not be able to register clashing alias 'xx'"); + } catch (ParameterException pe) { + //Make sure the message mentions that "xx" aliases is already + //defined for "add" command + Assert.assertTrue(pe.getMessage().contains("xx")); + Assert.assertTrue(pe.getMessage().contains("add")); + } + } + + @Test + public void mainCommandReturnsNullsForGetCommandAndGetParsedAlias() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + Assert.assertNull(jc.getParsedCommand()); + Assert.assertNull(jc.getParsedAlias()); + } + + @Test + public void usageCanBeRetrievedWithBothCommandAndAlias() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit, "ci", "cmt"); + StringBuilder out = new StringBuilder(); + jc.usage("commit", out); + patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 1); + + out = new StringBuilder(); + jc.usage("ci", out); + patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 1); + + out = new StringBuilder(); + jc.usage("cmt", out); + patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 1); + } + + @Test + public void usageDisplaysCommandWithAliasesOnlyOnce() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit, "ci", "cmt"); + StringBuilder out = new StringBuilder(); + jc.usage(out); + patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 1); + } + + /** + * Visually test the formatting for "prettiness" + */ + @Test + public void formattingLooksNice(){ + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add, "a"); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit, "ci", "cmt"); + StringBuilder sb = new StringBuilder(); + jc.usage(sb); + System.out.println("--- usage() formatting ---"); + System.out.println(sb.toString()); + + sb = new StringBuilder(); + jc.usage("commit", sb); + System.out.println("--- usage('commit') formatting ---"); + System.out.println(sb.toString()); + } + + private void patternMatchesTimes(String pattern, String input, int times) { + Matcher m = Pattern.compile(pattern).matcher(input); + int matches = 0; + while (m.find()) + matches++; + Assert.assertEquals(matches, times); + } +} -- cgit v1.2.3 From b9893ab2c4547b75942f73f96d20b37d1e245689 Mon Sep 17 00:00:00 2001 From: rodionmoiseev Date: Sun, 29 May 2011 11:37:46 +0900 Subject: Fixed issue #64 (wrong default value behaviour in for list parameters), and added support for Set parameters. Fix for #64: * ParameterDescription#m_assigned flag was being set too early, meaning it could become true even in case of an exception. To fix, moved it to the end of the try block. * Now we can use m_assigned, to test if the fields is being set for the first time, and use it to clear default values for collection parameters. Added support for Set type parameters, and provided a clearer exception for unsupported Collection type parameters (before the fix, a ClassCastException would be thrown). Additional support for Stack and Queue types could be added but would require a little more testing. Not sure of how useful Queues and Stacks would be anyway. --- .../com/beust/jcommander/DefaultValueTest.java | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/DefaultValueTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/DefaultValueTest.java b/src/test/java/com/beust/jcommander/DefaultValueTest.java new file mode 100644 index 0000000..3b1f29c --- /dev/null +++ b/src/test/java/com/beust/jcommander/DefaultValueTest.java @@ -0,0 +1,113 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander; + +import com.beust.jcommander.internal.Lists; +import com.beust.jcommander.internal.Sets; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +/** + * Test behaviour of default parameter values + * @author rodionmoiseev + */ +public class DefaultValueTest { + @Test + public void emptyDefaultValueForListParameterStaysEmptyIfNotAssignedOrIsSetOtherwise() { + MyOptsWithEmptyDefaults opts = new MyOptsWithEmptyDefaults(); + JCommander cmd = new JCommander(opts); + cmd.parse(new String[]{"-a", "anotherValue"}); + Assert.assertEquals(opts.list.size(), 1); + Assert.assertEquals(opts.list.get(0), "anotherValue"); + Assert.assertEquals(opts.set.size(), 0); + } + + @Test + public void defaultValueForListParametersGetsOverwrittenWithSpecifiedValueOrStaysAsDefaultOtherwise() { + MyOptsWithDefaultValues opts = new MyOptsWithDefaultValues(); + JCommander cmd = new JCommander(opts); + cmd.parse(new String[]{"-a", "anotherValue"}); + Assert.assertEquals(opts.list.size(), 1); + Assert.assertEquals(opts.list.get(0), "anotherValue"); + Assert.assertEquals(opts.set.size(), 1); + Assert.assertEquals(opts.set.iterator().next(), "defaultValue"); + } + + @Test + public void anyNumberOfValuesCanBeSetToListParameters_ForEmptyDefaults(){ + MyOptsWithEmptyDefaults opts = new MyOptsWithEmptyDefaults(); + testSettingMultipleValuesToListTypeParameters(opts); + } + + @Test + public void anyNumberOfValuesCanBeSetToListParameters_ForNonEmptyDefaults(){ + MyOptsWithDefaultValues opts = new MyOptsWithDefaultValues(); + testSettingMultipleValuesToListTypeParameters(opts); + } + + private void testSettingMultipleValuesToListTypeParameters(MyOpts opts) { + JCommander cmd = new JCommander(opts); + cmd.parse(new String[]{"-a", "anotherValue", "-a", "anotherValue2", + "-b", "anotherValue3", "-b", "anotherValue4"}); + Assert.assertEquals(opts.list.size(), 2); + Assert.assertEquals(opts.list.get(0), "anotherValue"); + Assert.assertEquals(opts.list.get(1), "anotherValue2"); + Assert.assertEquals(opts.set.size(), 2); + Iterator arg2it = opts.set.iterator(); + Assert.assertEquals(arg2it.next(), "anotherValue3"); + Assert.assertEquals(arg2it.next(), "anotherValue4"); + } + + public static class MyOpts { + @Parameter(names = "-a") + public List list; + @Parameter(names = "-b") + public Set set; + } + + public static final class MyOptsWithDefaultValues extends MyOpts { + public MyOptsWithDefaultValues(){ + this.list = singletonList("defaultValue"); + this.set = singletonSet("defaultValue"); + } + } + + public static final class MyOptsWithEmptyDefaults extends MyOpts { + public MyOptsWithEmptyDefaults(){ + this.list = Lists.newArrayList(); + this.set = Sets.newLinkedHashSet(); + } + } + + public static final List singletonList(String value) { + List list = Lists.newArrayList(); + list.add(value); + return list; + } + + public static final Set singletonSet(String value){ + Set set = Sets.newLinkedHashSet(); + set.add(value); + return set; + } +} -- cgit v1.2.3 From 307ad87e19e6c8ae91d7dec7acfe308873097e26 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 31 May 2011 11:31:33 -0700 Subject: Minor fixes on top of rodionmoiseev's patch. - Javadoc update - Disabled a test. --- src/test/java/com/beust/jcommander/command/CommandAliasTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandAliasTest.java b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java index eddcb0a..15d79d4 100644 --- a/src/test/java/com/beust/jcommander/command/CommandAliasTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java @@ -145,7 +145,7 @@ public class CommandAliasTest { /** * Visually test the formatting for "prettiness" */ - @Test + @Test(enabled = false, description = "TODO: test the output instead of displaying it") public void formattingLooksNice(){ CommandMain cm = new CommandMain(); JCommander jc = new JCommander(cm); -- cgit v1.2.3 From fe8a696f6c65438505eb26d8b734d34910932ef7 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 13 Jun 2011 13:35:31 -0700 Subject: Fixed: Default values with a validator were being validate at parse() time instead of creation time. --- .../java/com/beust/jcommander/ArgsValidate2.java | 24 ++++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 8 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/ArgsValidate2.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsValidate2.java b/src/test/java/com/beust/jcommander/ArgsValidate2.java new file mode 100644 index 0000000..f45f5df --- /dev/null +++ b/src/test/java/com/beust/jcommander/ArgsValidate2.java @@ -0,0 +1,24 @@ +package com.beust.jcommander; + +import com.beust.jcommander.converters.FileConverter; + +import java.io.File; + +public class ArgsValidate2 { + public static class FailingValidator implements IParameterValidator { + + public void validate(String name, String value) throws ParameterException { + throw new ParameterException("Validation will always fail:" + name + " " + value); + } + + } + + public static final String POSSIBLE_TEMPLATE_FILE = "mayOrMayNotExist.tempalate"; + + @Parameter(names = { "-template"}, + description = "The default file may or may not exist", + converter = FileConverter.class, + validateWith = FailingValidator.class + ) + public File template = new File(POSSIBLE_TEMPLATE_FILE); +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9985d49..e5822ee 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -471,6 +471,12 @@ public class JCommanderTest { Assert.assertEquals(a.age, new Integer(2)); } + @Test(expectedExceptions = ParameterException.class) + public void validationShouldWorkWithDefaultValues() { + ArgsValidate2 a = new ArgsValidate2(); + new JCommander(a); + } + @Test(expectedExceptions = ParameterException.class) public void validationShouldWork2() { ArgsValidate1 a = new ArgsValidate1(); @@ -491,7 +497,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().atFileCanContainEmptyLines(); + new JCommanderTest().validationShouldWorkWithDefaultValues(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); -- cgit v1.2.3 From c199c87fcd7d702047dd813fbc4224c7d85fd95d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 7 Jul 2011 13:34:54 -0700 Subject: Added: usage() now displays the options for each command as well --- src/test/java/com/beust/jcommander/command/CommandAliasTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandAliasTest.java b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java index 15d79d4..4eee7f2 100644 --- a/src/test/java/com/beust/jcommander/command/CommandAliasTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandAliasTest.java @@ -139,7 +139,9 @@ public class CommandAliasTest { jc.addCommand("commit", commit, "ci", "cmt"); StringBuilder out = new StringBuilder(); jc.usage(out); - patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 1); + // The usage should display this string twice: one as the command name + // and one after Usage: + patternMatchesTimes("commit\\(ci,cmt\\)", out.toString(), 2); } /** @@ -167,8 +169,7 @@ public class CommandAliasTest { private void patternMatchesTimes(String pattern, String input, int times) { Matcher m = Pattern.compile(pattern).matcher(input); int matches = 0; - while (m.find()) - matches++; + while (m.find()) matches++; Assert.assertEquals(matches, times); } } -- cgit v1.2.3 From a247edde9ad9a1a613262e44405a0e561e80386c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 14 Jul 2011 11:18:36 -0700 Subject: First commit to test the issue just fixed. --- src/test/java/com/beust/jcommander/args/ArgsI18N2New.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java index 1f55306..c760973 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java +++ b/src/test/java/com/beust/jcommander/args/ArgsI18N2New.java @@ -21,9 +21,14 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; +import java.util.List; + @Parameters(resourceBundle = "MessageBundle") public class ArgsI18N2New { @Parameter(names = "-host", description = "Host", descriptionKey = "host") String hostName; + + @Parameter(descriptionKey = "files") + List files; } -- cgit v1.2.3 From 2ee07bc8765f4873b69423e6185120d176c49a2b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 27 Jul 2011 10:32:36 -0700 Subject: Fixed: "-args=a=b,b=c" was not being parsed correctly (Michael Lancaster) --- src/test/java/com/beust/jcommander/JCommanderTest.java | 14 +++++++++++++- src/test/java/com/beust/jcommander/args/ArgsEquals.java | 11 +++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsEquals.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index e5822ee..124df7c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -24,6 +24,7 @@ import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; import com.beust.jcommander.args.ArgsConverter; +import com.beust.jcommander.args.ArgsEquals; import com.beust.jcommander.args.ArgsHelp; import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; @@ -495,9 +496,20 @@ public class JCommanderTest { new JCommander(new Args1(), "@" + f.getAbsolutePath()); } + public void handleEqualSigns() { + ArgsEquals a = new ArgsEquals(); + JCommander jc = new JCommander(a); + jc.parse(new String[] { "-args=a=b,b=c" }); + Assert.assertEquals(a.args, "a=b,b=c"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().validationShouldWorkWithDefaultValues(); + new JCommanderTest().handleEqualSigns(); +// PortsArgs a = new PortsArgs(); +// JCommander jc = new JCommander(a); +// jc.usage(); +// new JCommanderTest().validationShouldWorkWithDefaultValues(); // new JCommanderTest().booleanArity1(); // ArgsLongDescription a = new ArgsLongDescription(); // JCommander jc = new JCommander(a); diff --git a/src/test/java/com/beust/jcommander/args/ArgsEquals.java b/src/test/java/com/beust/jcommander/args/ArgsEquals.java new file mode 100644 index 0000000..016166d --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsEquals.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +@Parameters(separators = "=") +public class ArgsEquals { + + @Parameter(names = "-args") + public String args; +} -- cgit v1.2.3 From 876c9776ebe75ca46504847a4807b681ef5d5e4f Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 17 Aug 2011 11:09:57 -0700 Subject: Fixed: Fields of type Set (HashSet and SortedSet) are now supported --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 +++++++++ src/test/java/com/beust/jcommander/args/ArgsWithSet.java | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsWithSet.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 124df7c..87d0626 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -39,6 +39,7 @@ import com.beust.jcommander.args.ArgsRequired; import com.beust.jcommander.args.ArgsSlave; import com.beust.jcommander.args.ArgsSlaveBogus; import com.beust.jcommander.args.ArgsValidate1; +import com.beust.jcommander.args.ArgsWithSet; import com.beust.jcommander.args.Arity1; import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; @@ -62,6 +63,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; +import java.util.TreeSet; @Test public class JCommanderTest { @@ -503,6 +505,13 @@ public class JCommanderTest { Assert.assertEquals(a.args, "a=b,b=c"); } + @SuppressWarnings("serial") + public void handleSets() { + ArgsWithSet a = new ArgsWithSet(); + new JCommander(a, new String[] { "-s", "3,1,2" }); + Assert.assertEquals(a.set, new TreeSet() {{ add(1); add(2); add(3); }}); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { new JCommanderTest().handleEqualSigns(); diff --git a/src/test/java/com/beust/jcommander/args/ArgsWithSet.java b/src/test/java/com/beust/jcommander/args/ArgsWithSet.java new file mode 100644 index 0000000..1e41cd3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsWithSet.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.SetConverter; + +import java.util.SortedSet; + +public class ArgsWithSet { + @Parameter(names = "-s", converter = SetConverter.class) + public SortedSet set; +} \ No newline at end of file -- cgit v1.2.3 From f2430d09b28ed192a4e0f637e264a19d7604d8ba Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 17 Aug 2011 14:10:51 -0700 Subject: Forgot a class. --- src/test/java/com/beust/jcommander/SetConverter.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/SetConverter.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/SetConverter.java b/src/test/java/com/beust/jcommander/SetConverter.java new file mode 100644 index 0000000..c19df11 --- /dev/null +++ b/src/test/java/com/beust/jcommander/SetConverter.java @@ -0,0 +1,16 @@ +package com.beust.jcommander; + +import java.util.SortedSet; +import java.util.TreeSet; + +public class SetConverter implements IStringConverter> { + + public SortedSet convert(String value) { + SortedSet set = new TreeSet(); + String[] values = value.split(","); + for (String num : values) { + set.add(Integer.parseInt(num)); + } + return set; + } +} -- cgit v1.2.3 From 36e3614a3ebf663c723e94f30b873194d33a29d1 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 2 Sep 2011 10:45:48 -0700 Subject: Added float/double tests. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 ++++++--- src/test/java/com/beust/jcommander/args/Args1.java | 10 ++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 87d0626..5e1dc75 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -69,13 +69,16 @@ import java.util.TreeSet; public class JCommanderTest { public void simpleArgs() { Args1 args = new Args1(); - String[] argv = { "-debug", "-log", "2", "-groups", "unit", "a", "b", "c" }; + String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", + "-groups", "unit", "a", "b", "c" }; new JCommander(args, argv); Assert.assertTrue(args.debug); Assert.assertEquals(args.verbose.intValue(), 2); Assert.assertEquals(args.groups, "unit"); Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c")); + Assert.assertEquals(args.floa, 1.2f, 0.1f); + Assert.assertEquals(args.doub, 1.3f, 0.1f); } /** @@ -86,7 +89,7 @@ public class JCommanderTest { Args1 args = new Args1(); String[] argv = { "-log", "2" }; JCommander jc = new JCommander(args, argv); - Assert.assertEquals(jc.getParameters().size(), 4); + Assert.assertEquals(jc.getParameters().size(), 6); } /** @@ -514,7 +517,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().handleEqualSigns(); + new JCommanderTest().repeatedArgs(); // PortsArgs a = new PortsArgs(); // JCommander jc = new JCommander(a); // jc.usage(); diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java index 5d5b1b0..cca53d8 100644 --- a/src/test/java/com/beust/jcommander/args/Args1.java +++ b/src/test/java/com/beust/jcommander/args/Args1.java @@ -18,11 +18,11 @@ package com.beust.jcommander.args; -import com.beust.jcommander.Parameter; +import java.util.List; import org.testng.collections.Lists; -import java.util.List; +import com.beust.jcommander.Parameter; public class Args1 { @Parameter @@ -39,4 +39,10 @@ public class Args1 { @Parameter(names = "-long", description = "A long number") public long l; + + @Parameter(names = "-double", description = "A double number") + public double doub; + + @Parameter(names = "-float", description = "A float number") + public float floa; } -- cgit v1.2.3 From c709e6db81d11fe4aa6c573775ba5577902aa35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Beust?= Date: Mon, 3 Oct 2011 06:53:22 -0700 Subject: Implemented variable arities. --- .../java/com/beust/jcommander/JCommanderTest.java | 29 +++++++++++++++++++++- .../com/beust/jcommander/args/VariableArity.java | 29 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/args/VariableArity.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5e1dc75..2b5fee2 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -45,6 +45,7 @@ import com.beust.jcommander.args.SeparatorColon; import com.beust.jcommander.args.SeparatorEqual; import com.beust.jcommander.args.SeparatorMixed; import com.beust.jcommander.args.SlashSeparator; +import com.beust.jcommander.args.VariableArity; import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; @@ -515,9 +516,35 @@ public class JCommanderTest { Assert.assertEquals(a.set, new TreeSet() {{ add(1); add(2); add(3); }}); } + private static final List V = Arrays.asList("a", "b", "c", "d"); + + @DataProvider + public Object[][] variable() { + return new Object[][] { + new Object[] { 0, V.subList(0, 0), V }, + new Object[] { 1, V.subList(0, 1), V.subList(1, 4) }, + new Object[] { 2, V.subList(0, 2), V.subList(2, 4) }, + new Object[] { 3, V.subList(0, 3), V.subList(3, 4) }, + new Object[] { 4, V.subList(0, 4), V.subList(4, 4) }, + }; + } + + @Test(dataProvider = "variable") + public void variableArity(int count, List var, List main) { + VariableArity va = new VariableArity(count); + new JCommander(va).parse("-variable", "a", "b", "c", "d"); + Assert.assertEquals(var, va.var); + Assert.assertEquals(main, va.main); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().repeatedArgs(); + for (int i = 0; i < 5; i++) { + VariableArity va = new VariableArity(i); + new JCommander(va).parse("-variable", "a", "b", "c", "d"); + System.out.println(va.var + " *** " + va.main); + } +// new JCommanderTest().repeatedArgs(); // PortsArgs a = new PortsArgs(); // JCommander jc = new JCommander(a); // jc.usage(); diff --git a/src/test/java/com/beust/jcommander/args/VariableArity.java b/src/test/java/com/beust/jcommander/args/VariableArity.java new file mode 100644 index 0000000..19611e4 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/VariableArity.java @@ -0,0 +1,29 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.IVariableArity; +import com.beust.jcommander.Parameter; + +import java.util.ArrayList; +import java.util.List; + +public class VariableArity implements IVariableArity { + + private int m_count; + + public VariableArity(int count) { + m_count = count; + } + + @Parameter + public List main = new ArrayList(); + + @Parameter(names = "-variable", variableArity = true) + public List var = new ArrayList(); + + public int processVariableArity(String optionName, String[] options) { + for (int i = 0; i < m_count; i++) { + var.add(options[i]); + } + return m_count; + } +} -- cgit v1.2.3 From 102fba6b0eeafc324b8c7943657382f476d8ad43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Beust?= Date: Wed, 5 Oct 2011 23:16:21 -0700 Subject: Testing the new comparator. --- .../java/com/beust/jcommander/JCommanderTest.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 2b5fee2..2a3fa0b 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -59,6 +59,7 @@ import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -539,11 +540,19 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - for (int i = 0; i < 5; i++) { - VariableArity va = new VariableArity(i); - new JCommander(va).parse("-variable", "a", "b", "c", "d"); - System.out.println(va.var + " *** " + va.main); - } + JCommander j = new JCommander(new Args1()); + j.setParameterDescriptionComparator( + new Comparator() { + public int compare(ParameterDescription p0, ParameterDescription p1) { + return p1.getLongestName().length() - p0.getLongestName().length(); + } + }); + j.usage(); +// for (int i = 0; i < 5; i++) { +// VariableArity va = new VariableArity(i); +// new JCommander(va).parse("-variable", "a", "b", "c", "d"); +// System.out.println(va.var + " *** " + va.main); +// } // new JCommanderTest().repeatedArgs(); // PortsArgs a = new PortsArgs(); // JCommander jc = new JCommander(a); -- cgit v1.2.3 From 0638723e74c48bf8960f1401d0c5d99f9b1292b0 Mon Sep 17 00:00:00 2001 From: Adrian Muraru Date: Thu, 20 Oct 2011 18:57:05 +0300 Subject: Added tests for EnumArgs --- .../java/com/beust/jcommander/JCommanderTest.java | 18 ++++++++- .../java/com/beust/jcommander/args/ArgsEnum.java | 46 ++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsEnum.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 2a3fa0b..4935e5e 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -24,6 +24,7 @@ import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; import com.beust.jcommander.args.ArgsConverter; +import com.beust.jcommander.args.ArgsEnum; import com.beust.jcommander.args.ArgsEquals; import com.beust.jcommander.args.ArgsHelp; import com.beust.jcommander.args.ArgsI18N1; @@ -123,7 +124,7 @@ public class JCommanderTest { new JCommander(args, argv); Assert.assertEquals(args.verbose.intValue(), 2); } - + public void multipleNames1() { multipleNames("-log"); } @@ -538,6 +539,21 @@ public class JCommanderTest { Assert.assertEquals(main, va.main); } + public void enumArgs() { + ArgsEnum args = new ArgsEnum(); + String[] argv = { "-choice", "ONE"}; + new JCommander(args, argv); + + Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); + } + + @Test(expectedExceptions = ParameterException.class) + public void enumArgsFail() { + ArgsEnum args = new ArgsEnum(); + String[] argv = { "-choice", "A" }; + new JCommander(args, argv); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { JCommander j = new JCommander(new Args1()); diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java new file mode 100644 index 0000000..f7db7e5 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -0,0 +1,46 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.args; + +import com.beust.jcommander.JCommander; +import com.beust.jcommander.Parameter; + +import org.testng.Assert; + +/** + * Test parameter arity. + * + * @author cbeust + */ +public class ArgsEnum { + + public enum ChoiceType { ONE, TWO, THREE }; + @Parameter(names = "-choice", description = "Choice parameter") + public ChoiceType choice = ChoiceType.ONE; + + public static void main(String[] args) { + ArgsEnum earg = new ArgsEnum(); + String[] argv = { "-choice", "ONE"}; + new JCommander(earg, argv); + Assert.assertEquals(earg.choice, ArgsEnum.ChoiceType.ONE); + } + +} + + -- cgit v1.2.3 From f2af8149400676221cc155567d6a41b65bec13d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Beust?= Date: Sun, 23 Oct 2011 12:02:09 -0700 Subject: Added: Support for enums (Adrian Muraru). Fixed a few minor thins on top of Adrian's patch. --- src/test/java/com/beust/jcommander/args/ArgsEnum.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java index f7db7e5..1d886e2 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsEnum.java +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -18,15 +18,12 @@ package com.beust.jcommander.args; -import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; -import org.testng.Assert; - /** - * Test parameter arity. + * Test enums. * - * @author cbeust + * @author Adrian Muraru */ public class ArgsEnum { @@ -34,13 +31,6 @@ public class ArgsEnum { @Parameter(names = "-choice", description = "Choice parameter") public ChoiceType choice = ChoiceType.ONE; - public static void main(String[] args) { - ArgsEnum earg = new ArgsEnum(); - String[] argv = { "-choice", "ONE"}; - new JCommander(earg, argv); - Assert.assertEquals(earg.choice, ArgsEnum.ChoiceType.ONE); - } - } -- cgit v1.2.3 From 041bdac9067d4ce9c936ff1c0ae3856f2e240f15 Mon Sep 17 00:00:00 2001 From: Angus Date: Wed, 26 Oct 2011 00:22:53 +0100 Subject: Added support for BigDecimal arguments and related test. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 6 ++++-- src/test/java/com/beust/jcommander/args/Args1.java | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4935e5e..1dd3a25 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -58,6 +58,7 @@ import org.testng.annotations.Test; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -72,7 +73,7 @@ import java.util.TreeSet; public class JCommanderTest { public void simpleArgs() { Args1 args = new Args1(); - String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", + String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", "-bigdecimal", "1.4", "-groups", "unit", "a", "b", "c" }; new JCommander(args, argv); @@ -82,6 +83,7 @@ public class JCommanderTest { Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c")); Assert.assertEquals(args.floa, 1.2f, 0.1f); Assert.assertEquals(args.doub, 1.3f, 0.1f); + Assert.assertEquals(args.bigd, new BigDecimal("1.4")); } /** @@ -92,7 +94,7 @@ public class JCommanderTest { Args1 args = new Args1(); String[] argv = { "-log", "2" }; JCommander jc = new JCommander(args, argv); - Assert.assertEquals(jc.getParameters().size(), 6); + Assert.assertEquals(jc.getParameters().size(), 7); } /** diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java index cca53d8..9e55fb5 100644 --- a/src/test/java/com/beust/jcommander/args/Args1.java +++ b/src/test/java/com/beust/jcommander/args/Args1.java @@ -18,6 +18,7 @@ package com.beust.jcommander.args; +import java.math.BigDecimal; import java.util.List; import org.testng.collections.Lists; @@ -45,4 +46,7 @@ public class Args1 { @Parameter(names = "-float", description = "A float number") public float floa; + + @Parameter(names = "-bigdecimal", description = "A BigDecimal number") + public BigDecimal bigd; } -- cgit v1.2.3 From f923ee57617c8690d293909c53a4e109a8c2ba26 Mon Sep 17 00:00:00 2001 From: Angus Date: Wed, 26 Oct 2011 00:56:51 +0100 Subject: Added support for ISO 8601 Date arguments and related test. We currently only support the format yyyy-MM-dd (as it is all I need right now). In future this should be modified to support all ISO 8601 formats such as yyyy-MM-dd'T'HH:mm:ssZ. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 10 +++++++--- src/test/java/com/beust/jcommander/args/Args1.java | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 1dd3a25..3b5e410 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -59,8 +59,11 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -71,10 +74,10 @@ import java.util.TreeSet; @Test public class JCommanderTest { - public void simpleArgs() { + public void simpleArgs() throws ParseException { Args1 args = new Args1(); String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", "-bigdecimal", "1.4", - "-groups", "unit", "a", "b", "c" }; + "-date", "2011-10-26", "-groups", "unit", "a", "b", "c" }; new JCommander(args, argv); Assert.assertTrue(args.debug); @@ -84,6 +87,7 @@ public class JCommanderTest { Assert.assertEquals(args.floa, 1.2f, 0.1f); Assert.assertEquals(args.doub, 1.3f, 0.1f); Assert.assertEquals(args.bigd, new BigDecimal("1.4")); + Assert.assertEquals(args.date, new SimpleDateFormat("yyyy-MM-dd").parse("2011-10-26")); } /** @@ -94,7 +98,7 @@ public class JCommanderTest { Args1 args = new Args1(); String[] argv = { "-log", "2" }; JCommander jc = new JCommander(args, argv); - Assert.assertEquals(jc.getParameters().size(), 7); + Assert.assertEquals(jc.getParameters().size(), 8); } /** diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java index 9e55fb5..093abec 100644 --- a/src/test/java/com/beust/jcommander/args/Args1.java +++ b/src/test/java/com/beust/jcommander/args/Args1.java @@ -20,6 +20,7 @@ package com.beust.jcommander.args; import java.math.BigDecimal; import java.util.List; +import java.util.Date; import org.testng.collections.Lists; @@ -49,4 +50,7 @@ public class Args1 { @Parameter(names = "-bigdecimal", description = "A BigDecimal number") public BigDecimal bigd; + + @Parameter(names = "-date", description = "An ISO 8601 formatted date.") + public Date date; } -- cgit v1.2.3 From 7021eade4657caf7ae25b19539bdc135619d248c Mon Sep 17 00:00:00 2001 From: Angus Date: Wed, 26 Oct 2011 01:37:42 +0100 Subject: Added CommaSeparatedBaseConverter, some subclasses and tests. Created CommaSeparatedBaseConverter which will make it quicker/easier to parse lists of a particular type into ArrayList. Added CommanSeparatedIntConverter and CommaSeparatedBigDecimalConverter, moved the old CommaSeparatedConverter to CommaSeparatedStringConverter. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 17 +++++++++++++---- .../java/com/beust/jcommander/args/ArgsConverter.java | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 3b5e410..25caf66 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -260,11 +260,20 @@ public class JCommanderTest { public void converterArgs() { ArgsConverter args = new ArgsConverter(); String fileName = "a"; - new JCommander(args, "-file", "/tmp/" + fileName, "-days", "Tuesday,Thursday"); + new JCommander(args, "-file", "/tmp/" + fileName, + "-listStrings", "Tuesday,Thursday", + "-listInts", "-1,8", + "-listBigDecimals", "-11.52,100.12"); Assert.assertEquals(args.file.getName(), fileName); - Assert.assertEquals(args.days.size(), 2); - Assert.assertEquals(args.days.get(0), "Tuesday"); - Assert.assertEquals(args.days.get(1), "Thursday"); + Assert.assertEquals(args.listStrings.size(), 2); + Assert.assertEquals(args.listStrings.get(0), "Tuesday"); + Assert.assertEquals(args.listStrings.get(1), "Thursday"); + Assert.assertEquals(args.listInts.size(), 2); + Assert.assertEquals(args.listInts.get(0).intValue(), -1); + Assert.assertEquals(args.listInts.get(1).intValue(), 8); + Assert.assertEquals(args.listBigDecimals.size(), 2); + Assert.assertEquals(args.listBigDecimals.get(0), new BigDecimal("-11.52")); + Assert.assertEquals(args.listBigDecimals.get(1), new BigDecimal("100.12")); } private void argsBoolean1(String[] params, Boolean expected) { diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index 8d88022..4e32cae 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -19,10 +19,13 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; -import com.beust.jcommander.converters.CommaSeparatedConverter; +import com.beust.jcommander.converters.CommaSeparatedBigDecimalConverter; +import com.beust.jcommander.converters.CommaSeparatedIntConverter; +import com.beust.jcommander.converters.CommaSeparatedStringConverter; import com.beust.jcommander.converters.FileConverter; import java.io.File; +import java.math.BigDecimal; import java.util.List; public class ArgsConverter { @@ -30,6 +33,12 @@ public class ArgsConverter { @Parameter(names = "-file", converter = FileConverter.class) public File file; - @Parameter(names = "-days", converter = CommaSeparatedConverter.class) - public List days; + @Parameter(names = "-listStrings", converter = CommaSeparatedStringConverter.class) + public List listStrings; + + @Parameter(names = "-listInts", converter = CommaSeparatedIntConverter.class) + public List listInts; + + @Parameter(names = "-listBigDecimals", converter = CommaSeparatedBigDecimalConverter.class) + public List listBigDecimals; } -- cgit v1.2.3 From b04b599b25214e01db50b3545160426b7500d895 Mon Sep 17 00:00:00 2001 From: rodionmoiseev Date: Sat, 5 Nov 2011 20:20:53 +0900 Subject: Support for delegated (mixin) parameters (issue #84) Added a new @ParametersDelegate annotation to tell JCommander parser to process all parametrised fields inside the annotated object. Any number of delegated parameters and any amount of nesting is allowed. fixes #84 --- .../beust/jcommander/ParametersDelegateTest.java | 175 +++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/ParametersDelegateTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ParametersDelegateTest.java b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java new file mode 100644 index 0000000..67fb7c4 --- /dev/null +++ b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java @@ -0,0 +1,175 @@ +package com.beust.jcommander; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author rodionmoiseev + */ +public class ParametersDelegateTest { + + @Test + public void delegatingEmptyClassHasNoEffect() { + class EmptyDelegate { + public String nonParamString = "a"; + } + class MainParams { + @Parameter(names = "-a") + public boolean isA; + @Parameter(names = {"-b", "--long-b"}) + public String bValue = ""; + @ParametersDelegate + public EmptyDelegate delegate = new EmptyDelegate(); + } + + MainParams p = new MainParams(); + JCommander cmd = new JCommander(p); + cmd.parse("-a", "-b", "someValue"); + Assert.assertTrue(p.isA); + Assert.assertEquals(p.bValue, "someValue"); + Assert.assertEquals(p.delegate.nonParamString, "a"); + } + + @Test + public void delegatingSetsFieldsOnBothMainParamsAndTheDelegatedParams() { + class ComplexDelegate { + @Parameter(names = "-c") + public boolean isC; + @Parameter(names = {"-d", "--long-d"}) + public Integer d; + } + class MainParams { + @Parameter(names = "-a") + public boolean isA; + @Parameter(names = {"-b", "--long-b"}) + public String bValue = ""; + @ParametersDelegate + public ComplexDelegate delegate = new ComplexDelegate(); + } + + MainParams p = new MainParams(); + JCommander cmd = new JCommander(p); + cmd.parse("-c", "--long-d", "123", "--long-b", "bValue"); + Assert.assertFalse(p.isA); + Assert.assertEquals(p.bValue, "bValue"); + Assert.assertTrue(p.delegate.isC); + Assert.assertEquals(p.delegate.d, Integer.valueOf(123)); + } + + @Test + public void combinedAndNestedDelegates() { + abstract class LeafAbstractDelegate { + abstract float getFloat(); + } + class LeafDelegate { + @Parameter(names = "--list") + public List list = new ArrayList() {{ + add("value1"); + add("value2"); + }}; + @Parameter(names = "--bool") + public boolean bool; + } + class NestedDelegate1 { + @ParametersDelegate + public LeafDelegate leafDelegate = new LeafDelegate(); + @Parameter(names = {"-d", "--long-d"}) + public Integer d; + } + class NestedDelegate2 { + @Parameter(names = "-c") + public boolean isC; + @ParametersDelegate + public NestedDelegate1 nestedDelegate1 = new NestedDelegate1(); + @ParametersDelegate + public LeafAbstractDelegate anonymousDelegate = new LeafAbstractDelegate() { + @Parameter(names = "--anon-float") + public float anon = 999f; + + @Override + float getFloat() { + return anon; + } + }; + } + class MainParams { + @Parameter(names = "-a") + public boolean isA; + @Parameter(names = {"-b", "--long-b"}) + public String bValue = ""; + @ParametersDelegate + public NestedDelegate2 nestedDelegate2 = new NestedDelegate2(); + } + + MainParams p = new MainParams(); + JCommander cmd = new JCommander(p); + cmd.parse("--anon-float 1.2 -d 234 --list a --list b -a".split(" ")); + Assert.assertEquals(p.nestedDelegate2.anonymousDelegate.getFloat(), 1.2f); + Assert.assertEquals(p.nestedDelegate2.nestedDelegate1.leafDelegate.list, new ArrayList() {{ + add("a"); + add("b"); + }}); + Assert.assertFalse(p.nestedDelegate2.nestedDelegate1.leafDelegate.bool); + Assert.assertEquals(p.nestedDelegate2.nestedDelegate1.d, Integer.valueOf(234)); + Assert.assertFalse(p.nestedDelegate2.isC); + Assert.assertTrue(p.isA); + Assert.assertEquals(p.bValue, ""); + } + + @Test + public void commandTest() { + class Delegate { + @Parameter(names = "-a") + public String a = "b"; + } + class Command { + @ParametersDelegate + public Delegate delegate = new Delegate(); + } + + Command c = new Command(); + + JCommander cmd = new JCommander(); + cmd.addCommand("command", c); + + cmd.parse("command -a a".split(" ")); + Assert.assertEquals(c.delegate.a, "a"); + } + + @Test(expectedExceptions = ParameterException.class, + expectedExceptionsMessageRegExp = ".*delegate.*null.*") + public void nullDelegatesAreProhibited() { + class ComplexDelegate { + } + class MainParams { + @ParametersDelegate + public ComplexDelegate delegate; + } + + MainParams p = new MainParams(); + JCommander cmd = new JCommander(p); + cmd.parse(); + } + + @Test(expectedExceptions = ParameterException.class, + expectedExceptionsMessageRegExp = ".*-a.*") + public void duplicateDelegateThrowDuplicateOptionException() { + class Delegate { + @Parameter(names = "-a") + public String a; + } + class MainParams { + @ParametersDelegate + public Delegate d1 = new Delegate(); + @ParametersDelegate + public Delegate d2 = new Delegate(); + } + + MainParams p = new MainParams(); + JCommander cmd = new JCommander(p); + cmd.parse("-a value".split(" ")); + } +} -- cgit v1.2.3 From e58736cbb9a0621698d71ad669adf050c5a82a46 Mon Sep 17 00:00:00 2001 From: rodionmoiseev Date: Tue, 8 Nov 2011 19:55:10 +0900 Subject: Added more parameters delegate tests --- .../beust/jcommander/ParametersDelegateTest.java | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ParametersDelegateTest.java b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java index 67fb7c4..3041438 100644 --- a/src/test/java/com/beust/jcommander/ParametersDelegateTest.java +++ b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java @@ -139,6 +139,29 @@ public class ParametersDelegateTest { Assert.assertEquals(c.delegate.a, "a"); } + @Test + public void mainParametersTest() { + class Delegate { + @Parameter + public List mainParams = new ArrayList(); + } + class Command { + @ParametersDelegate + public Delegate delegate = new Delegate(); + } + + Command c = new Command(); + + JCommander cmd = new JCommander(); + cmd.addCommand("command", c); + + cmd.parse("command main params".split(" ")); + Assert.assertEquals(c.delegate.mainParams, new ArrayList() {{ + add("main"); + add("params"); + }}); + } + @Test(expectedExceptions = ParameterException.class, expectedExceptionsMessageRegExp = ".*delegate.*null.*") public void nullDelegatesAreProhibited() { @@ -172,4 +195,29 @@ public class ParametersDelegateTest { JCommander cmd = new JCommander(p); cmd.parse("-a value".split(" ")); } + + @Test(expectedExceptions = ParameterException.class, expectedExceptionsMessageRegExp = "Only one.*is allowed.*") + public void duplicateMainParametersAreNotAllowed() { + class Delegate1 { + @Parameter + public List mainParams1 = new ArrayList(); + } + class Delegate2 { + @Parameter + public List mainParams2 = new ArrayList(); + } + class Command { + @ParametersDelegate + public Delegate1 delegate1 = new Delegate1(); + @ParametersDelegate + public Delegate2 delegate2 = new Delegate2(); + } + + Command c = new Command(); + + JCommander cmd = new JCommander(); + cmd.addCommand("command", c); + + cmd.parse("command main params".split(" ")); + } } -- cgit v1.2.3 From 3e7cb52cbf4ca537cafb6617b20387225672ad1a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 22 Nov 2011 14:47:22 -0800 Subject: Better handling for fields of type List. --- src/test/java/com/beust/jcommander/HostPort.java | 5 ++ .../com/beust/jcommander/HostPortConverter.java | 1 + .../java/com/beust/jcommander/JCommanderTest.java | 73 +++++++--------------- .../com/beust/jcommander/args/ArgsConverter.java | 9 +-- .../java/com/beust/jcommander/args/ArgsList.java | 49 +++++++++++++++ 5 files changed, 80 insertions(+), 57 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/ArgsList.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/HostPort.java b/src/test/java/com/beust/jcommander/HostPort.java index e0e5289..a18018e 100644 --- a/src/test/java/com/beust/jcommander/HostPort.java +++ b/src/test/java/com/beust/jcommander/HostPort.java @@ -21,4 +21,9 @@ package com.beust.jcommander; public class HostPort { public String host; public Integer port; + @Override + + public String toString() { + return "[Host:" + host + " port:" + port + "]"; + } } diff --git a/src/test/java/com/beust/jcommander/HostPortConverter.java b/src/test/java/com/beust/jcommander/HostPortConverter.java index 5409d21..f45e3ba 100644 --- a/src/test/java/com/beust/jcommander/HostPortConverter.java +++ b/src/test/java/com/beust/jcommander/HostPortConverter.java @@ -28,4 +28,5 @@ public class HostPortConverter implements IStringConverter { return result; } + } \ No newline at end of file diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 25caf66..f336e52 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -31,6 +31,7 @@ import com.beust.jcommander.args.ArgsI18N1; import com.beust.jcommander.args.ArgsI18N2; import com.beust.jcommander.args.ArgsI18N2New; import com.beust.jcommander.args.ArgsInherited; +import com.beust.jcommander.args.ArgsList; import com.beust.jcommander.args.ArgsMainParameter1; import com.beust.jcommander.args.ArgsMaster; import com.beust.jcommander.args.ArgsMultipleUnparsed; @@ -63,8 +64,6 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; -import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -569,57 +568,29 @@ public class JCommanderTest { new JCommander(args, argv); } + public void testListAndSplitters() { + ArgsList al = new ArgsList(); + JCommander j = new JCommander(al); + j.parse("-groups", "a,b", "-ints", "41,42", "-hp", "localhost:1000;example.com:1001", + "-hp2", "localhost:1000,example.com:1001", "-uppercase", "ab,cd"); + Assert.assertEquals(al.groups.get(0), "a"); + Assert.assertEquals(al.groups.get(1), "b"); + Assert.assertEquals(al.ints.get(0).intValue(), 41); + Assert.assertEquals(al.ints.get(1).intValue(), 42); + Assert.assertEquals(al.hostPorts.get(0).host, "localhost"); + Assert.assertEquals(al.hostPorts.get(0).port.intValue(), 1000); + Assert.assertEquals(al.hostPorts.get(1).host, "example.com"); + Assert.assertEquals(al.hostPorts.get(1).port.intValue(), 1001); + Assert.assertEquals(al.hp2.get(1).host, "example.com"); + Assert.assertEquals(al.hp2.get(1).port.intValue(), 1001); + Assert.assertEquals(al.uppercase.get(0), "AB"); + Assert.assertEquals(al.uppercase.get(1), "CD"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - JCommander j = new JCommander(new Args1()); - j.setParameterDescriptionComparator( - new Comparator() { - public int compare(ParameterDescription p0, ParameterDescription p1) { - return p1.getLongestName().length() - p0.getLongestName().length(); - } - }); - j.usage(); -// for (int i = 0; i < 5; i++) { -// VariableArity va = new VariableArity(i); -// new JCommander(va).parse("-variable", "a", "b", "c", "d"); -// System.out.println(va.var + " *** " + va.main); -// } -// new JCommanderTest().repeatedArgs(); -// PortsArgs a = new PortsArgs(); -// JCommander jc = new JCommander(a); -// jc.usage(); -// new JCommanderTest().validationShouldWorkWithDefaultValues(); -// new JCommanderTest().booleanArity1(); -// ArgsLongDescription a = new ArgsLongDescription(); -// JCommander jc = new JCommander(a); -// jc.usage(); -// ArgsPassword a = new ArgsPassword(); -// JCommander jc = new JCommander(a); -// jc.parse("-password"); -// System.out.println("Password:" + a.password); -// new JCommanderTest().commandsShouldBeShownInOrderOfInsertion(); -// CommandMain cm = new CommandMain(); -// JCommander jc = new JCommander(cm); -// CommandAdd add = new CommandAdd(); -// jc.addCommand("add", add); -// CommandCommit commit = new CommandCommit(); -// jc.addCommand("commit", commit); -// jc.usage(); - -// new JCommanderTest().requiredMainParameters(); -// new CommandTest().commandTest1(); -// new DefaultProviderTest().defaultProvider1(); -// ArgsMainParameter a = new ArgsMainParameter(); -// new JCommander(a, "ex1:10", "ex2:20"); -// System.out.println(a.parameters.get(0).host); -// new JCommander(new Args1()).usage(); -// Separator a = new Separator(); -// String[] argv = new String[] { "-n", "foo" }; -// String[] argv = new String[] { "-v", "t" }; -// String[] argv = { "-log=10" }; -// JCommander jc = new JCommander(a, argv); -// Assert.assertEquals(a.log.intValue(), 10); -// } + new JCommanderTest().testListAndSplitters(); + new JCommanderTest().converterArgs(); } // Tests: diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index 4e32cae..159ed78 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -19,9 +19,6 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; -import com.beust.jcommander.converters.CommaSeparatedBigDecimalConverter; -import com.beust.jcommander.converters.CommaSeparatedIntConverter; -import com.beust.jcommander.converters.CommaSeparatedStringConverter; import com.beust.jcommander.converters.FileConverter; import java.io.File; @@ -33,12 +30,12 @@ public class ArgsConverter { @Parameter(names = "-file", converter = FileConverter.class) public File file; - @Parameter(names = "-listStrings", converter = CommaSeparatedStringConverter.class) + @Parameter(names = "-listStrings") public List listStrings; - @Parameter(names = "-listInts", converter = CommaSeparatedIntConverter.class) + @Parameter(names = "-listInts") public List listInts; - @Parameter(names = "-listBigDecimals", converter = CommaSeparatedBigDecimalConverter.class) + @Parameter(names = "-listBigDecimals") public List listBigDecimals; } diff --git a/src/test/java/com/beust/jcommander/args/ArgsList.java b/src/test/java/com/beust/jcommander/args/ArgsList.java new file mode 100644 index 0000000..e827773 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/ArgsList.java @@ -0,0 +1,49 @@ +package com.beust.jcommander.args; + +import com.beust.jcommander.HostPort; +import com.beust.jcommander.HostPortConverter; +import com.beust.jcommander.IStringConverter; +import com.beust.jcommander.Parameter; +import com.beust.jcommander.converters.IParameterSplitter; + +import org.testng.collections.Lists; + +import java.util.Arrays; +import java.util.List; + +public class ArgsList { + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public List groups; + + @Parameter(names = "-ints") + public List ints; + + @Parameter(names = "-hp", converter = HostPortConverter.class, splitter = SemiColonSplitter.class) + public List hostPorts; + + @Parameter(names = "-hp2", converter = HostPortConverter.class) + public List hp2; + + @Parameter(names = "-uppercase", listConverter = UppercaseConverter.class) + public List uppercase; + + public static class UppercaseConverter implements IStringConverter> { + public List convert(String value) { + List result = Lists.newArrayList(); + String[] s = value.split(","); + for (String p : s) { + result.add(p.toUpperCase()); + } + return result; + } + } + + public static class SemiColonSplitter implements IParameterSplitter { + + public List split(String value) { + return Arrays.asList(value.split(";")); + } + + } + +} -- cgit v1.2.3 From 66e78950950fa85f88043ebc7c2b2dc9aa0814af Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 23 Nov 2011 13:15:16 -0800 Subject: Added: @Parameter(commandNames) so that command names can be specified with annotations --- .../com/beust/jcommander/command/CommandTest.java | 26 +++++++++++++++++++++- .../beust/jcommander/command/NamedCommandAdd.java | 17 ++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/command/NamedCommandAdd.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index 0bedeeb..97e0007 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -19,6 +19,7 @@ package com.beust.jcommander.command; import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; import org.testng.Assert; import org.testng.annotations.Test; @@ -26,6 +27,29 @@ import org.testng.annotations.Test; import java.util.Arrays; public class CommandTest { + @Test + public void namedCommandTest1() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + NamedCommandAdd add = new NamedCommandAdd(); + jc.addCommand(add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("add", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "add"); + Assert.assertEquals(add.interactive.booleanValue(), true); + Assert.assertEquals(add.patterns, Arrays.asList("A.java")); + } + + @Test(expectedExceptions = ParameterException.class) + public void shouldComplainIfNoAnnotations() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand(add); + } + @Test public void commandTest1() { CommandMain cm = new CommandMain(); @@ -64,6 +88,6 @@ public class CommandTest { } public static void main(String[] args) { - new CommandTest().commandTest2(); + new CommandTest().shouldComplainIfNoAnnotations(); } } diff --git a/src/test/java/com/beust/jcommander/command/NamedCommandAdd.java b/src/test/java/com/beust/jcommander/command/NamedCommandAdd.java new file mode 100644 index 0000000..0773e18 --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/NamedCommandAdd.java @@ -0,0 +1,17 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +import java.util.List; + +@Parameters(commandNames = "add", commandDescription = "Add file contents to the index") +public class NamedCommandAdd { + + @Parameter(description = "Patterns of files to be added") + public List patterns; + + @Parameter(names = "-i") + public Boolean interactive = false; + +} -- cgit v1.2.3 From 4ba2a3c6a66626c4629266729a16e7f7e07b9ad0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 25 Nov 2011 09:34:05 -0800 Subject: Fixed: Throw if an unknown option is found --- .../java/com/beust/jcommander/JCommanderTest.java | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index f336e52..a77b3fb 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -587,10 +587,35 @@ public class JCommanderTest { Assert.assertEquals(al.uppercase.get(1), "CD"); } + @Test(expectedExceptions = ParameterException.class) + public void shouldThrowIfUnknownOption() { + class A { + @Parameter(names = "-long") + public long l; + } + A a = new A(); + new JCommander(a).parse("-lon", "32"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().testListAndSplitters(); - new JCommanderTest().converterArgs(); +// class A { +// @Parameter +// List parameters; +// +// @Parameter(names = "-long") +// public long l; +// } +// A a = new A(); +// new JCommander(a).parse("-lon", "32"); +// System.out.println(a.l); +// System.out.println(a.parameters); +// ArgsList al = new ArgsList(); +// JCommander j = new JCommander(al); +// j.setColumnSize(40); +// j.usage(); +// new JCommanderTest().testListAndSplitters(); +// new JCommanderTest().converterArgs(); } // Tests: -- cgit v1.2.3 From c3507ebf6d4b118ebeb443f0da87a63543ab395a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 25 Nov 2011 10:47:01 -0800 Subject: Fixed: Main parameters are now validated as well (Connor Mullen). --- .../java/com/beust/jcommander/JCommanderTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index a77b3fb..ed2c779 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -597,8 +597,28 @@ public class JCommanderTest { new JCommander(a).parse("-lon", "32"); } + @Test(expectedExceptions = ParameterException.class) + public void mainParameterShouldBeValidate() { + class V implements IParameterValidator { + + public void validate(String name, String value) throws ParameterException { + Assert.assertEquals("a", value); + } + } + + class A { + @Parameter(validateWith = V.class) + public List m; + } + + A a = new A(); + new JCommander(a).parse("b"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { + + System.out.println("A"); // class A { // @Parameter // List parameters; -- cgit v1.2.3 From 932e1670f1993a228a0d85c8b27cfd4a6a065f6c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 10 Jan 2012 15:13:29 -0800 Subject: First step implementing DynamicParameter. --- .../java/com/beust/jcommander/dynamic/DSimple.java | 13 +++++++++++++ .../jcommander/dynamic/DynamicParameterTest.java | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/dynamic/DSimple.java create mode 100644 src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/dynamic/DSimple.java b/src/test/java/com/beust/jcommander/dynamic/DSimple.java new file mode 100644 index 0000000..4fa7ab3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/dynamic/DSimple.java @@ -0,0 +1,13 @@ +package com.beust.jcommander.dynamic; + +import com.beust.jcommander.DynamicParameter; + +import org.testng.collections.Maps; + +import java.util.Map; + +public class DSimple { + + @DynamicParameter(names = "-D") + public Map params = Maps.newHashMap(); +} diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java new file mode 100644 index 0000000..68445dc --- /dev/null +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -0,0 +1,20 @@ +package com.beust.jcommander.dynamic; + +import com.beust.jcommander.JCommander; +import com.beust.jcommander.internal.Maps; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Map; + +public class DynamicParameterTest { + + @Test + public void simple() { + DSimple ds = new DSimple(); + new JCommander(ds).parse("-Da=b", "-Dc=d"); + Map expected = Maps.newHashMap("a", "b", "c", "d"); + Assert.assertEquals(ds.params, expected); + } +} -- cgit v1.2.3 From 78db59cfd11a5a1fb2eb4602f246b63dea91bf93 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 10 Jan 2012 15:28:43 -0800 Subject: More DynamicParameter work. --- .../java/com/beust/jcommander/dynamic/DynamicParameterTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 68445dc..65cce92 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -13,8 +13,12 @@ public class DynamicParameterTest { @Test public void simple() { DSimple ds = new DSimple(); - new JCommander(ds).parse("-Da=b", "-Dc=d"); + new JCommander(ds).parse("-D", "a=b", "-D", "c=d"); Map expected = Maps.newHashMap("a", "b", "c", "d"); Assert.assertEquals(ds.params, expected); } + + public static void main(String[] args) { + new DynamicParameterTest().simple(); + } } -- cgit v1.2.3 From 043d359ca700da0f541f849157d7db2b1b6f93fb Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 10 Jan 2012 16:07:21 -0800 Subject: Working @DynamicParameter. --- .../java/com/beust/jcommander/dynamic/DSimpleBad.java | 11 +++++++++++ .../beust/jcommander/dynamic/DynamicParameterTest.java | 18 +++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/beust/jcommander/dynamic/DSimpleBad.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/dynamic/DSimpleBad.java b/src/test/java/com/beust/jcommander/dynamic/DSimpleBad.java new file mode 100644 index 0000000..f859029 --- /dev/null +++ b/src/test/java/com/beust/jcommander/dynamic/DSimpleBad.java @@ -0,0 +1,11 @@ +package com.beust.jcommander.dynamic; + +import com.beust.jcommander.DynamicParameter; + +import java.util.List; + +public class DSimpleBad { + + @DynamicParameter(names = "-D") + public List params; +} diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 65cce92..0a7cb25 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -1,6 +1,7 @@ package com.beust.jcommander.dynamic; import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; import com.beust.jcommander.internal.Maps; import org.testng.Assert; @@ -10,6 +11,18 @@ import java.util.Map; public class DynamicParameterTest { + // test using the wrong separator + @Test(expectedExceptions = ParameterException.class) + public void nonMapShouldThrow() { + new JCommander(new DSimpleBad()).parse("-D", "a=b", "-D", "c=d"); + } + + @Test + public void wrongSeparatorShouldThrow() { + DSimple ds = new DSimple(); + new JCommander(ds).parse("-D", "a:b", "-D", "c=d"); + } + @Test public void simple() { DSimple ds = new DSimple(); @@ -19,6 +32,9 @@ public class DynamicParameterTest { } public static void main(String[] args) { - new DynamicParameterTest().simple(); + DynamicParameterTest dpt = new DynamicParameterTest(); +// new DynamicParameterTest().simple(); +// dpt.nonMapShouldThrow(); + dpt.wrongSeparatorShouldThrow(); } } -- cgit v1.2.3 From b71c28f84999d1eeb2251d7c283e9b86fbf6fcba Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 10 Jan 2012 16:11:42 -0800 Subject: More tests. --- src/test/java/com/beust/jcommander/dynamic/DSimple.java | 3 +++ .../beust/jcommander/dynamic/DynamicParameterTest.java | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/dynamic/DSimple.java b/src/test/java/com/beust/jcommander/dynamic/DSimple.java index 4fa7ab3..3d77f32 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DSimple.java +++ b/src/test/java/com/beust/jcommander/dynamic/DSimple.java @@ -10,4 +10,7 @@ public class DSimple { @DynamicParameter(names = "-D") public Map params = Maps.newHashMap(); + + @DynamicParameter(names = "-A", assignment = "@") + public Map params2 = Maps.newHashMap(); } diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 0a7cb25..3d9d5de 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -17,7 +17,7 @@ public class DynamicParameterTest { new JCommander(new DSimpleBad()).parse("-D", "a=b", "-D", "c=d"); } - @Test + @Test(expectedExceptions = ParameterException.class) public void wrongSeparatorShouldThrow() { DSimple ds = new DSimple(); new JCommander(ds).parse("-D", "a:b", "-D", "c=d"); @@ -31,10 +31,19 @@ public class DynamicParameterTest { Assert.assertEquals(ds.params, expected); } + @Test + public void differentAssignment() { + DSimple ds = new DSimple(); + new JCommander(ds).parse("-D", "a=b", "-A", "c@d"); + Assert.assertEquals(ds.params, Maps.newHashMap("a", "b")); + Assert.assertEquals(ds.params2, Maps.newHashMap("c", "d")); + } + public static void main(String[] args) { DynamicParameterTest dpt = new DynamicParameterTest(); -// new DynamicParameterTest().simple(); + dpt.simple(); // dpt.nonMapShouldThrow(); - dpt.wrongSeparatorShouldThrow(); +// dpt.wrongSeparatorShouldThrow(); + dpt.differentAssignment(); } } -- cgit v1.2.3 From 7e743acbff5277d087347bfba2409406865af8a0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 10 Jan 2012 16:48:33 -0800 Subject: Automatic handling of arities for @DynamicParameter. --- .../java/com/beust/jcommander/JCommanderTest.java | 18 ++++++++-------- .../jcommander/dynamic/DynamicParameterTest.java | 24 ++++++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index ed2c779..4f1a6d5 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -619,15 +619,15 @@ public class JCommanderTest { public static void main(String[] args) throws Exception { System.out.println("A"); -// class A { -// @Parameter -// List parameters; -// -// @Parameter(names = "-long") -// public long l; -// } -// A a = new A(); -// new JCommander(a).parse("-lon", "32"); + class A { + @Parameter + List parameters; + + @Parameter(names = "-long") + public long l; + } + A a = new A(); + new JCommander(a).parse("-long", "32"); // System.out.println(a.l); // System.out.println(a.parameters); // ArgsList al = new ArgsList(); diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 3d9d5de..5e1728f 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -7,11 +7,8 @@ import com.beust.jcommander.internal.Maps; import org.testng.Assert; import org.testng.annotations.Test; -import java.util.Map; - public class DynamicParameterTest { - // test using the wrong separator @Test(expectedExceptions = ParameterException.class) public void nonMapShouldThrow() { new JCommander(new DSimpleBad()).parse("-D", "a=b", "-D", "c=d"); @@ -23,12 +20,20 @@ public class DynamicParameterTest { new JCommander(ds).parse("-D", "a:b", "-D", "c=d"); } - @Test - public void simple() { + private void simple(String... parameters) { DSimple ds = new DSimple(); - new JCommander(ds).parse("-D", "a=b", "-D", "c=d"); - Map expected = Maps.newHashMap("a", "b", "c", "d"); - Assert.assertEquals(ds.params, expected); + new JCommander(ds).parse(parameters); + Assert.assertEquals(ds.params, Maps.newHashMap("a", "b", "c", "d")); + } + + @Test + public void simpleWithSpaces() { + simple("-D", "a=b", "-D", "c=d"); + } + + @Test + public void simpleWithoutSpaces() { + simple("-Da=b", "-Dc=d"); } @Test @@ -41,9 +46,10 @@ public class DynamicParameterTest { public static void main(String[] args) { DynamicParameterTest dpt = new DynamicParameterTest(); - dpt.simple(); +// dpt.simple(); // dpt.nonMapShouldThrow(); // dpt.wrongSeparatorShouldThrow(); dpt.differentAssignment(); +// dpt.arity0(); } } -- cgit v1.2.3 From e923414889a04be46c131af01dbe466d10f10721 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 11 Jan 2012 10:22:37 -0800 Subject: Fixed NPE in usage(). --- src/test/java/com/beust/jcommander/dynamic/DSimple.java | 2 +- .../com/beust/jcommander/dynamic/DynamicParameterTest.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/dynamic/DSimple.java b/src/test/java/com/beust/jcommander/dynamic/DSimple.java index 3d77f32..deb5a2b 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DSimple.java +++ b/src/test/java/com/beust/jcommander/dynamic/DSimple.java @@ -8,7 +8,7 @@ import java.util.Map; public class DSimple { - @DynamicParameter(names = "-D") + @DynamicParameter(names = "-D", description = "Dynamic parameters go here") public Map params = Maps.newHashMap(); @DynamicParameter(names = "-A", assignment = "@") diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 5e1728f..190b8b4 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -7,6 +7,7 @@ import com.beust.jcommander.internal.Maps; import org.testng.Assert; import org.testng.annotations.Test; +@Test public class DynamicParameterTest { @Test(expectedExceptions = ParameterException.class) @@ -26,17 +27,19 @@ public class DynamicParameterTest { Assert.assertEquals(ds.params, Maps.newHashMap("a", "b", "c", "d")); } - @Test public void simpleWithSpaces() { simple("-D", "a=b", "-D", "c=d"); } - @Test public void simpleWithoutSpaces() { simple("-Da=b", "-Dc=d"); } - @Test + public void usage() { + DSimple ds = new DSimple(); + new JCommander(ds).usage(new StringBuilder()); + } + public void differentAssignment() { DSimple ds = new DSimple(); new JCommander(ds).parse("-D", "a=b", "-A", "c@d"); @@ -44,12 +47,14 @@ public class DynamicParameterTest { Assert.assertEquals(ds.params2, Maps.newHashMap("c", "d")); } + @Test(enabled = false) public static void main(String[] args) { DynamicParameterTest dpt = new DynamicParameterTest(); // dpt.simple(); // dpt.nonMapShouldThrow(); // dpt.wrongSeparatorShouldThrow(); - dpt.differentAssignment(); +// dpt.differentAssignment(); // dpt.arity0(); + dpt.usage(); } } -- cgit v1.2.3 From 8ad02daa23243bf515009d16205465f1b811da81 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 12 Jan 2012 13:23:58 -0800 Subject: Fixed: Commands with same prefix as options were not working properly. --- .../java/com/beust/jcommander/JCommanderTest.java | 42 ++++++++++++++++------ 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4f1a6d5..02a7099 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -615,19 +615,39 @@ public class JCommanderTest { new JCommander(a).parse("b"); } - @Test(enabled = false) - public static void main(String[] args) throws Exception { + @Parameters(commandNames = { "--configure" }) + public static class ConfigureArgs { + } - System.out.println("A"); - class A { - @Parameter - List parameters; + public static class BaseArgs { + @Parameter(names = { "-h", "--help" }, description = "Show this help screen") + private boolean help = false; - @Parameter(names = "-long") - public long l; - } - A a = new A(); - new JCommander(a).parse("-long", "32"); + @Parameter(names = { "--version", "-version" }, description = "Show the program version") + private boolean version; + } + + public void commandsWithSamePrefixAsOptionsShouldWork() { + BaseArgs a = new BaseArgs(); + ConfigureArgs conf = new ConfigureArgs(); + JCommander jc = new JCommander(a); + jc.addCommand(conf); + jc.parse("--configure"); + } + + @Test(enabled = false) + public static void main(String[] args) throws Exception { +// System.out.println("Help:" + a.help); +// System.out.println("A"); +// class A { +// @Parameter +// List parameters; +// +// @Parameter(names = "-long") +// public long l; +// } +// A a = new A(); +// new JCommander(a).parse("-long", "32"); // System.out.println(a.l); // System.out.println(a.parameters); // ArgsList al = new ArgsList(); -- cgit v1.2.3 From a3199885e5e515af41a01c4d693bf96f1dafbd67 Mon Sep 17 00:00:00 2001 From: Adrian Muraru Date: Sat, 25 Feb 2012 04:28:17 +0200 Subject: [Enum Args] If not set, the description of an enum arg is set to the list of options --- src/test/java/com/beust/jcommander/JCommanderTest.java | 6 +++++- src/test/java/com/beust/jcommander/args/ArgsEnum.java | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 02a7099..d2433e7 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -64,6 +64,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -556,9 +557,12 @@ public class JCommanderTest { public void enumArgs() { ArgsEnum args = new ArgsEnum(); String[] argv = { "-choice", "ONE"}; - new JCommander(args, argv); + JCommander jc = new JCommander(args, argv); Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); + + Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); + } @Test(expectedExceptions = ParameterException.class) diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java index 1d886e2..6661e37 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsEnum.java +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -18,8 +18,13 @@ package com.beust.jcommander.args; +import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; +import org.testng.Assert; + +import java.util.EnumSet; + /** * Test enums. * @@ -28,8 +33,16 @@ import com.beust.jcommander.Parameter; public class ArgsEnum { public enum ChoiceType { ONE, TWO, THREE }; - @Parameter(names = "-choice", description = "Choice parameter") + @Parameter(names = "-choice") public ChoiceType choice = ChoiceType.ONE; + + public static void main(String[] args1) { + ArgsEnum args = new ArgsEnum(); + String[] argv = { "-choice", "ONE"}; + JCommander jc = new JCommander(args, argv); + jc.usage(); + Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); + } } -- cgit v1.2.3 From 39e431ec5e9c2505973a976f62a91e738b85fe4c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 25 Feb 2012 16:43:59 -0800 Subject: Fixed: GITHUB-97: Required password always complains that it is not specified (timoteoponce) --- .../java/com/beust/jcommander/JCommanderTest.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 02a7099..1562b14 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -56,9 +56,11 @@ import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -635,8 +637,35 @@ public class JCommanderTest { jc.parse("--configure"); } + // Tests: + // required unparsed parameter + @Test(enabled = false, + description = "For some reason, this test still asks the password on stdin") + public void askedRequiredPassword() { + class A { + @Parameter(names = { "--password", "-p" }, description = "Private key password", + password = true, required = true) + public String password; + + @Parameter(names = { "--port", "-o" }, description = "Port to bind server to", + required = true) + public int port; + } + A a = new A(); + InputStream stdin = System.in; + try { + System.setIn(new ByteArrayInputStream("password".getBytes())); + new JCommander(a,new String[]{"--port", "7","--password"}); + Assert.assertEquals(a.port, 7); + Assert.assertEquals(a.password, "password"); + } finally { + System.setIn(stdin); + } + } + @Test(enabled = false) public static void main(String[] args) throws Exception { + new JCommanderTest().askedRequiredPassword(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From 8ebf58f752ae0703b70af57cecfe584968442558 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 10 Mar 2012 16:12:16 -0800 Subject: Fixed: GITHUB-108: Dynamic parameters with "=" in them are not parsed correctly (szhem) --- src/test/java/com/beust/jcommander/JCommanderTest.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 1562b14..632158f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -55,6 +55,7 @@ import com.beust.jcommander.command.CommandMain; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.testng.collections.Maps; import java.io.ByteArrayInputStream; import java.io.File; @@ -663,9 +664,21 @@ public class JCommanderTest { } } + public void dynamicParameters() { + class Command { + @DynamicParameter(names = {"-P"}, description = "Additional command parameters") + private Map params = Maps.newHashMap(); + } + JCommander commander = new JCommander(); + Command c = new Command(); + commander.addCommand("command", c); + commander.parse(new String[] { "command", "-Pparam='name=value'" }); + Assert.assertEquals(c.params.get("param"), "'name=value'"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().askedRequiredPassword(); + new JCommanderTest().dynamicParameters(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From ca0789ba868746845d31c2ee9e354d8bfbdeca6e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 18 Apr 2012 10:14:48 -0700 Subject: Fixed: StringIndexOutOfBoundsException if passing an empty parameter (bomanz) --- src/test/java/com/beust/jcommander/JCommanderTest.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 74649b5..9477dac 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -680,9 +680,20 @@ public class JCommanderTest { Assert.assertEquals(c.params.get("param"), "'name=value'"); } + public void exeParser() { + class Params { + @Parameter( names= "-i") + private String inputFile; + } + + String args[] = { "-i", "" }; + Params p = new Params(); + new JCommander(p, args); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().dynamicParameters(); + new JCommanderTest().exeParser(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From 5414de6562cc1a597c0d522fc4889e0f4136306c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 26 Apr 2012 12:28:11 -0700 Subject: Fixed bug with multiple variable arities. --- .../java/com/beust/jcommander/JCommanderTest.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9477dac..1da032a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -55,6 +55,7 @@ import com.beust.jcommander.command.CommandMain; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.testng.collections.Lists; import org.testng.collections.Maps; import java.io.ByteArrayInputStream; @@ -691,9 +692,35 @@ public class JCommanderTest { new JCommander(p, args); } + public void multiList() { + class Params implements IVariableArity { + @Parameter(names = "-paramA", description = "ParamA", variableArity = true) + private List paramA = Lists.newArrayList(); + + @Parameter(names = "-paramB", description = "ParamB", variableArity = true) + private List paramB = Lists.newArrayList(); + + public int processVariableArity(String optionName, String[] options) { + int i = 0; + while (i < options.length && !options[i].startsWith("-")) { + if ("-paramA".equals(optionName)) paramA.add(options[i]); + else paramB.add(options[i]); + i++; + } + return i; + } + } + + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().exeParser(); + new JCommanderTest().multiList(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From 74664b26b3b9cdaec4a683ec9666828cbc856e44 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 26 Apr 2012 12:46:14 -0700 Subject: Better variable arity. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 16 +++------------- .../java/com/beust/jcommander/args/VariableArity.java | 3 --- 2 files changed, 3 insertions(+), 16 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 1da032a..736dc04 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -692,23 +692,13 @@ public class JCommanderTest { new JCommander(p, args); } - public void multiList() { - class Params implements IVariableArity { + public void multiVariableArityList() { + class Params { @Parameter(names = "-paramA", description = "ParamA", variableArity = true) private List paramA = Lists.newArrayList(); @Parameter(names = "-paramB", description = "ParamB", variableArity = true) private List paramB = Lists.newArrayList(); - - public int processVariableArity(String optionName, String[] options) { - int i = 0; - while (i < options.length && !options[i].startsWith("-")) { - if ("-paramA".equals(optionName)) paramA.add(options[i]); - else paramB.add(options[i]); - i++; - } - return i; - } } String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; @@ -720,7 +710,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().multiList(); + new JCommanderTest().multiVariableArityList(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { diff --git a/src/test/java/com/beust/jcommander/args/VariableArity.java b/src/test/java/com/beust/jcommander/args/VariableArity.java index 19611e4..21a861d 100644 --- a/src/test/java/com/beust/jcommander/args/VariableArity.java +++ b/src/test/java/com/beust/jcommander/args/VariableArity.java @@ -21,9 +21,6 @@ public class VariableArity implements IVariableArity { public List var = new ArrayList(); public int processVariableArity(String optionName, String[] options) { - for (int i = 0; i < m_count; i++) { - var.add(options[i]); - } return m_count; } } -- cgit v1.2.3 From 61e65090c5495518a9a521149dbecbd17e1df193 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 26 Apr 2012 13:58:48 -0700 Subject: Command descriptions (@Parameters(resourceBundle)) were not i18n'ed properly. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 736dc04..01b7c1c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -708,9 +708,23 @@ public class JCommanderTest { Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); } + @Test(enabled = false, + description = "Need to double check that the command description is i18n'ed in the usage") + public void commandKey() { + @Parameters(resourceBundle = "MessageBundle", commandDescriptionKey = "command") + class Args { + @Parameter(names="-myoption", descriptionKey="myoption") + private boolean option; + } + JCommander j = new JCommander(); + Args a = new Args(); + j.addCommand("comm", a); + j.usage(); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().multiVariableArityList(); + new JCommanderTest().commandKey(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From fb38f40b769781cb2cd00763865bc0aef59f392a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 2 May 2012 11:52:39 -0700 Subject: Fixed: bug with several multiple arity parameters (VariableArityTest). --- .../com/beust/jcommander/VariableArityTest.java | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/VariableArityTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/VariableArityTest.java b/src/test/java/com/beust/jcommander/VariableArityTest.java new file mode 100644 index 0000000..a90392f --- /dev/null +++ b/src/test/java/com/beust/jcommander/VariableArityTest.java @@ -0,0 +1,66 @@ +package com.beust.jcommander; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class VariableArityTest { + + public static class ModelGenerationConfig { + + @Parameter(names = { "-m", "--matrixData" }, variableArity = true, + description = "File containing a list of instances and their runtimes on various configurations", required = false) + public List modelMatrixFile = new LinkedList(); + + @Parameter(names = { "-f", "--featureData" }, variableArity = true, + description = "File containing a list of instances and their corresponding features", required = true) + public List featureFile = new LinkedList(); + + @Parameter(names = { "-c", "--configData" }, variableArity = true, + description = "File containing a list of configuration parameter values") + public List configFile = new LinkedList(); + + @Parameter(names = { "-o", "--outputFile" }, + description = "File to output the resulting data to. Defaults to ./matrix-generation.zip", required = false) + public String outputFile = "matrix-generation.zip"; + + @Parameter(names = { "--seed" }, description = "Seed used for PRNG [0 means don't use a Seed]") + public long seed = 0; + + public void print() { + System.out.println("modelMatrixFile: " + modelMatrixFile); + System.out.println("featureData: " + featureFile); + System.out.println("configFile: " + configFile); + System.out.println("output: " + outputFile); + System.out.println("seed: " + seed); + + } + } + + @Test + public void verifyVariableArity() { + String input = "-m foo --seed 1024 -c foo -o foo -f foo "; + + String[] split = input.split("\\s+"); + + ModelGenerationConfig config = new ModelGenerationConfig(); + JCommander com = new JCommander(config); + com.setProgramName("modelgen"); + + com.parse(split); + +// config.print(); + Assert.assertNotEquals(config.seed, 0); + Assert.assertEquals(config.modelMatrixFile, Arrays.asList(new String[] { "foo" })); + Assert.assertEquals(config.featureFile, Arrays.asList(new String[] { "foo" })); + Assert.assertEquals(config.seed, 1024); + Assert.assertEquals(config.outputFile, "foo"); + } + + public static void main(String[] args) { + new VariableArityTest().verifyVariableArity(); + } +} \ No newline at end of file -- cgit v1.2.3 From 5219e93646ed740bd837e4e6b6033bc4391135ba Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 2 May 2012 11:58:20 -0700 Subject: Merge. --- .../java/com/beust/jcommander/JCommanderTest.java | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 01b7c1c..89e1c02 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -701,11 +701,21 @@ public class JCommanderTest { private List paramB = Lists.newArrayList(); } - String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; - Params p = new Params(); - new JCommander(p, args).parse(); - Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); - Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + } + + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "-paramA", "a3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2", "a3" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1" })); + } } @Test(enabled = false, @@ -724,7 +734,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().commandKey(); + new JCommanderTest().multiVariableArityList(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From 13a57cd81965605f1050f20ed2d4169e6d6d24df Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 8 May 2012 15:14:12 -0700 Subject: Fixed: 113: getCommandDescription() returns the description of the main parameter instead of that of the command --- .../java/com/beust/jcommander/JCommanderTest.java | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 89e1c02..01b7c1c 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -701,21 +701,11 @@ public class JCommanderTest { private List paramB = Lists.newArrayList(); } - { - String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; - Params p = new Params(); - new JCommander(p, args).parse(); - Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); - Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); - } - - { - String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "-paramA", "a3" }; - Params p = new Params(); - new JCommander(p, args).parse(); - Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2", "a3" })); - Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1" })); - } + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); } @Test(enabled = false, @@ -734,7 +724,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().multiVariableArityList(); + new JCommanderTest().commandKey(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { -- cgit v1.2.3 From 9e22cffb2d22829cb5e2d1bf4d64d87df69d2983 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 15 May 2012 14:49:22 -0700 Subject: Fixed: if using a different option prefix, unknown option are mistakenly reported as "no main parameter defined" (kurmasz) --- .../java/com/beust/jcommander/JCommanderTest.java | 57 +++++++++++++++++----- 1 file changed, 46 insertions(+), 11 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 01b7c1c..7e9a9bd 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -701,11 +701,21 @@ public class JCommanderTest { private List paramB = Lists.newArrayList(); } - String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; - Params p = new Params(); - new JCommander(p, args).parse(); - Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); - Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + } + + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "-paramA", "a3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2", "a3" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1" })); + } } @Test(enabled = false, @@ -722,20 +732,45 @@ public class JCommanderTest { j.usage(); } + public void tmp() { + class A { + @Parameter(names = "-b") + public String b; + } + new JCommander(new A()).parse(""); + } + + public void unknownOptionWithDifferentPrefix() { + @Parameters(optionPrefixes = "/") + class SlashSeparator { + + @Parameter(names = "/verbose") + public boolean verbose = false; + + @Parameter(names = "/file") + public String file; + } + SlashSeparator ss = new SlashSeparator(); + try { + new JCommander(ss).parse("/notAParam"); + } catch (ParameterException ex) { + boolean result = ex.getMessage().contains("Unknown option"); + Assert.assertTrue(result); + } + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().commandKey(); -// System.out.println("Help:" + a.help); -// System.out.println("A"); + new JCommanderTest().unknownOptionWithDifferentPrefix(); // class A { -// @Parameter +// @Parameter(names = "-short", required = true) // List parameters; // -// @Parameter(names = "-long") +// @Parameter(names = "-long", required = true) // public long l; // } // A a = new A(); -// new JCommander(a).parse("-long", "32"); +// new JCommander(a).parse(); // System.out.println(a.l); // System.out.println(a.parameters); // ArgsList al = new ArgsList(); -- cgit v1.2.3 From 5bbf7af0a020eb6da94be078c80300c19b6d77d4 Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Tue, 29 May 2012 13:48:17 -0600 Subject: added echoInput parameter to @Parameter annotation to control whether characters are hidden when entering passwords (only works in Java 6 when password == true) --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 7e9a9bd..60744de 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -666,7 +666,7 @@ public class JCommanderTest { Assert.assertEquals(a.password, "password"); } finally { System.setIn(stdin); - } + } } public void dynamicParameters() { -- cgit v1.2.3 From 9c2bd65ecd9779540bfde5a200ff71d1d503839c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 30 May 2012 22:33:04 -0700 Subject: One more test. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 60744de..8b73c3d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -759,9 +759,23 @@ public class JCommanderTest { } } + public void equalSeparator() { + @Parameters(separators = "=", commandDescription = "My command") + class MyClass { + @Parameter(names = { "-p", "--param" }, required = true, + description = "param desc...") + private String param; + } + + MyClass c = new MyClass(); + String expected = "some=value"; + new JCommander(c).parse("--param=" + expected); + Assert.assertEquals(c.param, expected); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().unknownOptionWithDifferentPrefix(); + new JCommanderTest().equalSeparator(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 074b8af3781fbc976f01b43bc3fa0d8ef0431599 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 31 May 2012 11:51:19 -0700 Subject: Fixed: wasn't handling parameters that start with " but don't end with one correctly --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 8b73c3d..eae0ec8 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -762,15 +762,14 @@ public class JCommanderTest { public void equalSeparator() { @Parameters(separators = "=", commandDescription = "My command") class MyClass { - @Parameter(names = { "-p", "--param" }, required = true, - description = "param desc...") + + @Parameter(names = { "-p", "--param" }, required = true, description = "param desc...") private String param; } - MyClass c = new MyClass(); - String expected = "some=value"; + String expected = "\"hello\"world"; new JCommander(c).parse("--param=" + expected); - Assert.assertEquals(c.param, expected); + Assert.assertEquals(expected, c.param); } @Test(enabled = false) -- cgit v1.2.3 From e903207930001edf324f2623b763df0f75e82a3c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 10 Jun 2012 18:47:55 -0700 Subject: Added: IValueValidator to validate parameter values (typed) as oppoed to IParameterValidator which validates strings --- src/test/java/com/beust/jcommander/ArgsValidate2.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/ArgsValidate2.java b/src/test/java/com/beust/jcommander/ArgsValidate2.java index f45f5df..2b8f07b 100644 --- a/src/test/java/com/beust/jcommander/ArgsValidate2.java +++ b/src/test/java/com/beust/jcommander/ArgsValidate2.java @@ -5,20 +5,20 @@ import com.beust.jcommander.converters.FileConverter; import java.io.File; public class ArgsValidate2 { - public static class FailingValidator implements IParameterValidator { + public static class FailingValidator implements IValueValidator { - public void validate(String name, String value) throws ParameterException { + public void validate(String name, File value) throws ParameterException { throw new ParameterException("Validation will always fail:" + name + " " + value); } } - public static final String POSSIBLE_TEMPLATE_FILE = "mayOrMayNotExist.tempalate"; + public static final String POSSIBLE_TEMPLATE_FILE = "mayOrMayNotExist.template"; @Parameter(names = { "-template"}, description = "The default file may or may not exist", converter = FileConverter.class, - validateWith = FailingValidator.class + validateValueWith = FailingValidator.class ) public File template = new File(POSSIBLE_TEMPLATE_FILE); } -- cgit v1.2.3 From 369d387138b6da9e77e01d82273ef6271580eb47 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 24 Jun 2012 15:12:31 -0700 Subject: Support for setters on top of fields. --- .../java/com/beust/jcommander/JCommanderTest.java | 52 +++++++++++- .../beust/jcommander/ParametersDelegateTest.java | 4 + .../com/beust/jcommander/args/Args1Setter.java | 93 ++++++++++++++++++++++ .../jcommander/dynamic/DynamicParameterTest.java | 4 +- 4 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/args/Args1Setter.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index eae0ec8..2f05590 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -19,6 +19,7 @@ package com.beust.jcommander; import com.beust.jcommander.args.Args1; +import com.beust.jcommander.args.Args1Setter; import com.beust.jcommander.args.Args2; import com.beust.jcommander.args.ArgsArityString; import com.beust.jcommander.args.ArgsBooleanArity; @@ -241,6 +242,38 @@ public class JCommanderTest { Assert.assertEquals(args.rest.get(0), "rest"); } + public void arityStringsSetter() { + class ArgsArityStringSetter { + + @Parameter(names = "-pairs", arity = 2, description = "Pairs") + public void setPairs(List pairs) { + this.pairs = pairs; + } + public List getPairs() { + return this.pairs; + } + public List pairs; + + @Parameter(description = "Rest") + public void setRest(List rest) { + this.rest = rest; + } + public List getRest() { + return this.rest; + } + public List 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"); + } + @Test(expectedExceptions = ParameterException.class) public void arity2Fail() { ArgsArityString args = new ArgsArityString(); @@ -609,6 +642,7 @@ public class JCommanderTest { public void mainParameterShouldBeValidate() { class V implements IParameterValidator { + @Override public void validate(String name, String value) throws ParameterException { Assert.assertEquals("a", value); } @@ -772,9 +806,25 @@ public class JCommanderTest { Assert.assertEquals(expected, c.param); } + public void simpleArgsSetter() throws ParseException { + Args1Setter args = new Args1Setter(); + String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", "-bigdecimal", "1.4", + "-date", "2011-10-26", "-groups", "unit", "a", "b", "c" }; + new JCommander(args, argv); + + Assert.assertTrue(args.debug); + Assert.assertEquals(args.verbose.intValue(), 2); + Assert.assertEquals(args.groups, "unit"); + Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c")); + Assert.assertEquals(args.floa, 1.2f, 0.1f); + Assert.assertEquals(args.doub, 1.3f, 0.1f); + Assert.assertEquals(args.bigd, new BigDecimal("1.4")); + Assert.assertEquals(args.date, new SimpleDateFormat("yyyy-MM-dd").parse("2011-10-26")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().equalSeparator(); + new JCommanderTest().arityStringsSetter(); // class A { // @Parameter(names = "-short", required = true) // List parameters; diff --git a/src/test/java/com/beust/jcommander/ParametersDelegateTest.java b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java index 3041438..46c7c6a 100644 --- a/src/test/java/com/beust/jcommander/ParametersDelegateTest.java +++ b/src/test/java/com/beust/jcommander/ParametersDelegateTest.java @@ -220,4 +220,8 @@ public class ParametersDelegateTest { cmd.parse("command main params".split(" ")); } + + public static void main(String[] args) { + new ParametersDelegateTest().commandTest(); + } } diff --git a/src/test/java/com/beust/jcommander/args/Args1Setter.java b/src/test/java/com/beust/jcommander/args/Args1Setter.java new file mode 100644 index 0000000..10f9ef3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/Args1Setter.java @@ -0,0 +1,93 @@ +/** + * Copyright (C) 2010 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.internal.Lists; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public class Args1Setter { + @Parameter + public void setParameters(List p) { + parameters = p; + } + + public List getParameters() { + return this.parameters; + } + public List parameters = Lists.newArrayList(); + + @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity", required = true) + public void setVerbose(Integer v) { + verbose = v; + } + public Integer verbose = 1; + + @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") + public void setGroups(String g) { + groups = g; + } + + public String groups; + + @Parameter(names = "-debug", description = "Debug mode") + public void setDebug(boolean d) { + debug = d; + } + + public boolean debug = false; + + @Parameter(names = "-long", description = "A long number") + public void setLong(long ll) { + l = ll; + } + + public long l; + + @Parameter(names = "-double", description = "A double number") + public void setDouble(double d) { + doub = d; + } + + public double doub; + + @Parameter(names = "-float", description = "A float number") + public void setFloat(float f) { + floa = f; + } + + public float floa; + + @Parameter(names = "-bigdecimal", description = "A BigDecimal number") + public void setBigDecimal(BigDecimal bd) { + bigd = bd; + } + + public BigDecimal bigd; + + @Parameter(names = "-date", description = "An ISO 8601 formatted date.") + public void setDate(Date d) { + date = d; + } + + public Date date; +} diff --git a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java index 190b8b4..98327bd 100644 --- a/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java +++ b/src/test/java/com/beust/jcommander/dynamic/DynamicParameterTest.java @@ -50,11 +50,11 @@ public class DynamicParameterTest { @Test(enabled = false) public static void main(String[] args) { DynamicParameterTest dpt = new DynamicParameterTest(); -// dpt.simple(); + dpt.simpleWithSpaces(); // dpt.nonMapShouldThrow(); // dpt.wrongSeparatorShouldThrow(); // dpt.differentAssignment(); // dpt.arity0(); - dpt.usage(); +// dpt.usage(); } } -- cgit v1.2.3 From c675ef5201552ed809a1cb12e18f2fc3e25a7c9a Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 4 Jul 2012 13:23:31 -0700 Subject: Added: @Parameter(help = true) --- src/test/java/com/beust/jcommander/JCommanderTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 2f05590..9dba74d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -822,9 +822,24 @@ public class JCommanderTest { Assert.assertEquals(args.date, new SimpleDateFormat("yyyy-MM-dd").parse("2011-10-26")); } + public void verifyHelp() { + class Arg { + @Parameter(names = "--help", help = true) + public boolean help = false; + + @Parameter(names = "file", required = true) + public String file; + } + Arg arg = new Arg(); + String[] argv = { "--help" }; + new JCommander(arg, argv); + + Assert.assertTrue(arg.help); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().arityStringsSetter(); + new JCommanderTest().verifyHelp(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From e0c1cdc5cea32d7551cf92069adfd529fc48a756 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 6 Jul 2012 23:26:16 -0700 Subject: If a setter throws ParameterException, don't wrap it into another ParameterException. --- .../java/com/beust/jcommander/JCommanderTest.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9dba74d..8b1e761 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -837,9 +837,26 @@ public class JCommanderTest { Assert.assertTrue(arg.help); } + 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"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().verifyHelp(); + new JCommanderTest().setterThatThrows(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 1b0c674e93eb5d4a34607797783d163800e73a1e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 7 Jul 2012 08:57:53 -0700 Subject: Moved the method tests in their own class. --- .../java/com/beust/jcommander/JCommanderTest.java | 51 +---------------- .../com/beust/jcommander/MethodSetterTest.java | 66 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 50 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/MethodSetterTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 8b1e761..428fdfe 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -242,38 +242,6 @@ public class JCommanderTest { Assert.assertEquals(args.rest.get(0), "rest"); } - public void arityStringsSetter() { - class ArgsArityStringSetter { - - @Parameter(names = "-pairs", arity = 2, description = "Pairs") - public void setPairs(List pairs) { - this.pairs = pairs; - } - public List getPairs() { - return this.pairs; - } - public List pairs; - - @Parameter(description = "Rest") - public void setRest(List rest) { - this.rest = rest; - } - public List getRest() { - return this.rest; - } - public List 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"); - } - @Test(expectedExceptions = ParameterException.class) public void arity2Fail() { ArgsArityString args = new ArgsArityString(); @@ -837,26 +805,9 @@ public class JCommanderTest { Assert.assertTrue(arg.help); } - 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"); - } - @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().setterThatThrows(); + new JCommanderTest().verifyHelp(); // class A { // @Parameter(names = "-short", required = true) // List parameters; 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..8790e4c --- /dev/null +++ b/src/test/java/com/beust/jcommander/MethodSetterTest.java @@ -0,0 +1,66 @@ +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 pairs) { + this.pairs = pairs; + } + public List getPairs() { + return this.pairs; + } + public List pairs; + + @Parameter(description = "Rest") + public void setRest(List rest) { + this.rest = rest; + } +// public List getRest() { +// return this.rest; +// } + public List 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"); + } + + @Test(enabled = false) + public static void main(String[] args) throws Exception { + new MethodSetterTest().arityStringsSetter(); + } +} -- cgit v1.2.3 From 465c23886b71843fa1987f8b8802a46214d48e23 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 7 Jul 2012 09:02:39 -0700 Subject: Test for getter returning non strings. --- .../java/com/beust/jcommander/MethodSetterTest.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/MethodSetterTest.java b/src/test/java/com/beust/jcommander/MethodSetterTest.java index 8790e4c..8f6320b 100644 --- a/src/test/java/com/beust/jcommander/MethodSetterTest.java +++ b/src/test/java/com/beust/jcommander/MethodSetterTest.java @@ -59,8 +59,27 @@ public class MethodSetterTest { 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)); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new MethodSetterTest().arityStringsSetter(); + new MethodSetterTest().getterReturningNonString(); } } -- cgit v1.2.3 From f4ed64c254096dd10305a92c4d96656048f35b15 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 7 Jul 2012 14:07:14 -0700 Subject: If we have a setter but no getter, try to find a field to calculate the default value. --- .../java/com/beust/jcommander/MethodSetterTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/MethodSetterTest.java b/src/test/java/com/beust/jcommander/MethodSetterTest.java index 8f6320b..f995ad6 100644 --- a/src/test/java/com/beust/jcommander/MethodSetterTest.java +++ b/src/test/java/com/beust/jcommander/MethodSetterTest.java @@ -78,8 +78,23 @@ public class MethodSetterTest { 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().getterReturningNonString(); + new MethodSetterTest().noGetterButWithField(); } } -- cgit v1.2.3 From 94e08e73342f858518b14a70624c38479c0365d3 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 17 Jul 2012 22:25:26 -0700 Subject: Fixed: Parameters with a single double quote were not working properly --- .../java/com/beust/jcommander/JCommanderTest.java | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 428fdfe..0b5a4ad 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -805,6 +805,48 @@ public class JCommanderTest { Assert.assertTrue(arg.help); } + public void helpTest() { + class Arg { + @Parameter(names = { "?", "-help", "--help" }, description = "Shows help", help = true) + private boolean help = false; + } + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "-help" }); + System.out.println(arg.help); + } + + @Test(enabled = false, description = "Should only be enable once multiple parameters are allowed") + public void duplicateParameterNames() { + class ArgBase { + @Parameter(names = { "-host" }) + protected String host; + } + + class Arg1 extends ArgBase {} + Arg1 arg1 = new Arg1(); + + class Arg2 extends ArgBase {} + Arg2 arg2 = new Arg2(); + + JCommander jc = new JCommander(new Object[] { arg1, arg2}); + jc.parse(new String[] { "-host", "foo" }); + Assert.assertEquals(arg1.host, "foo"); + Assert.assertEquals(arg2.host, "foo"); + } + + public void parameterWithOneDoubleQuote() { + @Parameters(separators = "=") + class Arg { + + @Parameter(names = { "-p", "--param" }) + private String param; + } + + JCommander jc = new JCommander(new MyClass()); + jc.parse("-p=\""); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { new JCommanderTest().verifyHelp(); -- cgit v1.2.3 From f65b16085ead5063dbb7c9a6f366ebedb2227f68 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 17 Jul 2012 22:44:09 -0700 Subject: Fixed: Bugs with the PositiveInteger validator --- .../com/beust/jcommander/PositiveIntegerTest.java | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/PositiveIntegerTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/PositiveIntegerTest.java b/src/test/java/com/beust/jcommander/PositiveIntegerTest.java new file mode 100644 index 0000000..ec7d273 --- /dev/null +++ b/src/test/java/com/beust/jcommander/PositiveIntegerTest.java @@ -0,0 +1,65 @@ +package com.beust.jcommander; + +import com.beust.jcommander.validators.PositiveInteger; + +import org.testng.annotations.Test; + +public class PositiveIntegerTest { + + @Test + public void validateTest() { + class Arg { + @Parameter(names = { "-p", "--port" }, description = "Shows help", validateWith = PositiveInteger.class) + private int port = 0; + } + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "-p", "8080" }); + + } + + @Test(expectedExceptions = ParameterException.class) + public void validateTest2() { + class Arg { + @Parameter(names = { "-p", "--port" }, description = "Shows help", validateWith = PositiveInteger.class) + private int port = 0; + } + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "-p", "" }); + } + + @Test(expectedExceptions = ParameterException.class) + public void validateTest3() { + class Arg { + @Parameter(names = { "-p", "--port" }, description = "Shows help", validateWith = PositiveInteger.class) + private int port = 0; + } + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "-p", "-1" }); + } + + @Test(expectedExceptions = ParameterException.class) + public void validateTest4() { + class Arg { + @Parameter(names = { "-p", "--port" }, description = "Port Number", validateWith = PositiveInteger.class) + private int port = 0; + } + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "-p", "abc" }); + } + + @Test(expectedExceptions = ParameterException.class) + public void validateTest5() { + class Arg { + @Parameter(names = { "-p", "--port" }, description = "Port Number", validateWith = PositiveInteger.class) + private int port = 0; + } + + Arg arg = new Arg(); + JCommander jc = new JCommander(arg); + jc.parse(new String[] { "--port", " " }); + } +} \ No newline at end of file -- cgit v1.2.3 From e79760c8a3806df3369adcbaa4dbaeceb93f9a65 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 25 Jul 2012 14:53:22 -0700 Subject: Fixed: Empty string defaults now displayed as "" in the usage --- src/test/java/com/beust/jcommander/JCommanderTest.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 0b5a4ad..c516e0f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -847,9 +847,20 @@ public class JCommanderTest { jc.parse("-p=\""); } + public void emptyStringAsDefault() { + class Arg { + @Parameter(names = "-x") + String s = ""; + } + Arg a = new Arg(); + StringBuilder sb = new StringBuilder(); + new JCommander(a).usage(sb); + Assert.assertTrue(sb.toString().contains("Default: ")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().verifyHelp(); + new JCommanderTest().emptyStringAsDefault(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 1225b8c4595305a86155a32e55d766be769d509f Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 28 Jul 2012 22:26:05 -0700 Subject: Forgot one class. --- src/test/java/com/beust/jcommander/MyClass.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/MyClass.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/MyClass.java b/src/test/java/com/beust/jcommander/MyClass.java new file mode 100644 index 0000000..3bf46b5 --- /dev/null +++ b/src/test/java/com/beust/jcommander/MyClass.java @@ -0,0 +1,14 @@ +package com.beust.jcommander; + +@Parameters(separators = "=") +public class MyClass { + + @Parameter(names = { "-p", "--param" }) + private String param; + + public static void main(String[] args) { + JCommander jCommander = new JCommander(new MyClass()); + jCommander.parse("-p=\""); + } + +} \ No newline at end of file -- cgit v1.2.3 From 0b2c479e2db4ba4ed88952e801f99e594b84a948 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 30 Jul 2012 22:09:57 -0700 Subject: Reformatting. --- src/test/java/com/beust/jcommander/args/ArgsEnum.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java index 6661e37..16643cd 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsEnum.java +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -41,7 +41,8 @@ public class ArgsEnum { String[] argv = { "-choice", "ONE"}; JCommander jc = new JCommander(args, argv); jc.usage(); - Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); + Assert.assertEquals(jc.getParameters().get(0).getDescription(), + "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); } } -- cgit v1.2.3 From 1322b1a0011d7ac5c15f73a062a0e7b4b0879840 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 30 Jul 2012 22:10:09 -0700 Subject: Comment out println. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c516e0f..3c7eba5 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -566,7 +566,8 @@ public class JCommanderTest { Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); - Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); + Assert.assertEquals(jc.getParameters().get(0).getDescription(), + "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); } @@ -813,7 +814,7 @@ public class JCommanderTest { Arg arg = new Arg(); JCommander jc = new JCommander(arg); jc.parse(new String[] { "-help" }); - System.out.println(arg.help); +// System.out.println("helpTest:" + arg.help); } @Test(enabled = false, description = "Should only be enable once multiple parameters are allowed") @@ -860,7 +861,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().emptyStringAsDefault(); + new JCommanderTest().parameterWithOneDoubleQuote(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From a8f4de2555e41fad6cab4fbcff4e91cc32350db7 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 31 Jul 2012 11:24:27 -0700 Subject: Added: JCommander#setCaseSensitiveOptions (default: true) --- .../java/com/beust/jcommander/JCommanderTest.java | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 3c7eba5..c380721 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -859,9 +859,34 @@ public class JCommanderTest { Assert.assertTrue(sb.toString().contains("Default: ")); } + public void caseInsensitiveOption() { + class Arg { + + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.parse(new String[] { "--PARAM", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + public void caseInsensitiveCommand() { + BaseArgs a = new BaseArgs(); + ConfigureArgs conf = new ConfigureArgs(); + JCommander jc = new JCommander(a); + jc.addCommand(conf); + jc.setCaseSensitiveOptions(false); +// jc.setCaseSensitiveCommands(false); + jc.parse("--CONFIGURE"); + String command = jc.getParsedCommand(); + Assert.assertEquals(command, "--configure"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().parameterWithOneDoubleQuote(); + new JCommanderTest().caseInsensitiveCommand(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 2c092c0c1966a21f1b585eac22b4e36045a43549 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 1 Aug 2012 08:50:32 -0700 Subject: Added: JCommander#allowAbbreviatedOptions (default: false) --- .../java/com/beust/jcommander/JCommanderTest.java | 58 +++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c380721..fa79d1f 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -884,9 +884,65 @@ public class JCommanderTest { Assert.assertEquals(command, "--configure"); } + public void abbreviatedOptions() { + class Arg { + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--par", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + public void abbreviatedOptionsCaseInsensitive() { + class Arg { + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--PAR", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + @Test(expectedExceptions = ParameterException.class) + public void ambiguousAbbreviatedOptions() { + class Arg { + @Parameter(names = { "--param" }) + private String param; + @Parameter(names = { "--parb" }) + private String parb; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--par", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + @Test(expectedExceptions = ParameterException.class) + public void ambiguousAbbreviatedOptionsCaseInsensitive() { + class Arg { + @Parameter(names = { "--param" }) + private String param; + @Parameter(names = { "--parb" }) + private String parb; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--PAR", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().caseInsensitiveCommand(); + new JCommanderTest().ambiguousAbbreviatedOptionsCaseInsensitive(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 18acf239feebe9f079a4d31e1852556b7cd2fd4c Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 1 Aug 2012 09:23:01 -0700 Subject: Moved the finder tests in their own class. --- src/test/java/com/beust/jcommander/FinderTest.java | 97 ++++++++++++++++++++++ .../java/com/beust/jcommander/JCommanderTest.java | 83 +----------------- 2 files changed, 98 insertions(+), 82 deletions(-) create mode 100644 src/test/java/com/beust/jcommander/FinderTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/FinderTest.java b/src/test/java/com/beust/jcommander/FinderTest.java new file mode 100644 index 0000000..94bf812 --- /dev/null +++ b/src/test/java/com/beust/jcommander/FinderTest.java @@ -0,0 +1,97 @@ +package com.beust.jcommander; + +import com.beust.jcommander.JCommanderTest.BaseArgs; +import com.beust.jcommander.JCommanderTest.ConfigureArgs; + +import org.testng.Assert; +import org.testng.annotations.Test; + +@Test +public class FinderTest { + public void caseInsensitiveOption() { + class Arg { + + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.parse(new String[] { "--PARAM", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + public void caseInsensitiveCommand() { + BaseArgs a = new BaseArgs(); + ConfigureArgs conf = new ConfigureArgs(); + JCommander jc = new JCommander(a); + jc.addCommand(conf); + jc.setCaseSensitiveOptions(false); +// jc.setCaseSensitiveCommands(false); + jc.parse("--CONFIGURE"); + String command = jc.getParsedCommand(); + Assert.assertEquals(command, "--configure"); + } + + public void abbreviatedOptions() { + class Arg { + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--par", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + public void abbreviatedOptionsCaseInsensitive() { + class Arg { + @Parameter(names = { "-p", "--param" }) + private String param; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--PAR", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + @Test(expectedExceptions = ParameterException.class) + public void ambiguousAbbreviatedOptions() { + class Arg { + @Parameter(names = { "--param" }) + private String param; + @Parameter(names = { "--parb" }) + private String parb; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--par", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + @Test(expectedExceptions = ParameterException.class) + public void ambiguousAbbreviatedOptionsCaseInsensitive() { + class Arg { + @Parameter(names = { "--param" }) + private String param; + @Parameter(names = { "--parb" }) + private String parb; + } + Arg a = new Arg(); + JCommander jc = new JCommander(a); + jc.setCaseSensitiveOptions(false); + jc.setAllowAbbreviatedOptions(true); + jc.parse(new String[] { "--PAR", "foo" }); + Assert.assertEquals(a.param, "foo"); + } + + @Test(enabled = false) + public static void main(String[] args) throws Exception { + new FinderTest().ambiguousAbbreviatedOptionsCaseInsensitive(); + } + +} diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index fa79d1f..741f16a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -859,90 +859,9 @@ public class JCommanderTest { Assert.assertTrue(sb.toString().contains("Default: ")); } - public void caseInsensitiveOption() { - class Arg { - - @Parameter(names = { "-p", "--param" }) - private String param; - } - Arg a = new Arg(); - JCommander jc = new JCommander(a); - jc.setCaseSensitiveOptions(false); - jc.parse(new String[] { "--PARAM", "foo" }); - Assert.assertEquals(a.param, "foo"); - } - - public void caseInsensitiveCommand() { - BaseArgs a = new BaseArgs(); - ConfigureArgs conf = new ConfigureArgs(); - JCommander jc = new JCommander(a); - jc.addCommand(conf); - jc.setCaseSensitiveOptions(false); -// jc.setCaseSensitiveCommands(false); - jc.parse("--CONFIGURE"); - String command = jc.getParsedCommand(); - Assert.assertEquals(command, "--configure"); - } - - public void abbreviatedOptions() { - class Arg { - @Parameter(names = { "-p", "--param" }) - private String param; - } - Arg a = new Arg(); - JCommander jc = new JCommander(a); - jc.setAllowAbbreviatedOptions(true); - jc.parse(new String[] { "--par", "foo" }); - Assert.assertEquals(a.param, "foo"); - } - - public void abbreviatedOptionsCaseInsensitive() { - class Arg { - @Parameter(names = { "-p", "--param" }) - private String param; - } - Arg a = new Arg(); - JCommander jc = new JCommander(a); - jc.setCaseSensitiveOptions(false); - jc.setAllowAbbreviatedOptions(true); - jc.parse(new String[] { "--PAR", "foo" }); - Assert.assertEquals(a.param, "foo"); - } - - @Test(expectedExceptions = ParameterException.class) - public void ambiguousAbbreviatedOptions() { - class Arg { - @Parameter(names = { "--param" }) - private String param; - @Parameter(names = { "--parb" }) - private String parb; - } - Arg a = new Arg(); - JCommander jc = new JCommander(a); - jc.setAllowAbbreviatedOptions(true); - jc.parse(new String[] { "--par", "foo" }); - Assert.assertEquals(a.param, "foo"); - } - - @Test(expectedExceptions = ParameterException.class) - public void ambiguousAbbreviatedOptionsCaseInsensitive() { - class Arg { - @Parameter(names = { "--param" }) - private String param; - @Parameter(names = { "--parb" }) - private String parb; - } - Arg a = new Arg(); - JCommander jc = new JCommander(a); - jc.setCaseSensitiveOptions(false); - jc.setAllowAbbreviatedOptions(true); - jc.parse(new String[] { "--PAR", "foo" }); - Assert.assertEquals(a.param, "foo"); - } - @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().ambiguousAbbreviatedOptionsCaseInsensitive(); +// new JCommanderTest().ambiguousAbbreviatedOptionsCaseInsensitive(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From dbccffb3047aa721e3c09ecda4e6b12a00152dd1 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 1 Aug 2012 10:45:27 -0700 Subject: Refactoring: introducing FuzzyMap and IKey. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 741f16a..2f2d88d 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -861,7 +861,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { -// new JCommanderTest().ambiguousAbbreviatedOptionsCaseInsensitive(); + new JCommanderTest().multiObjectsWithDuplicatesFail(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From f19232f69a08b3fc0242b91ea0095b47f5fad44b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 2 Aug 2012 13:02:56 -0700 Subject: New test. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 2f2d88d..5b41e0b 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -859,9 +859,20 @@ public class JCommanderTest { Assert.assertTrue(sb.toString().contains("Default: ")); } + public void spaces() { + class Arg { + @Parameter(names = "-rule", description = "rule") + private List rules = new ArrayList(); + } + Arg a = new Arg(); + StringBuilder sb = new StringBuilder(); + new JCommander(a, "-rule", "some test"); + Assert.assertEquals(a.rules, Arrays.asList("some test")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().multiObjectsWithDuplicatesFail(); + new JCommanderTest().spaces(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From 5377e48b0f7b1b77aa9d546313b11767559068de Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 7 Aug 2012 04:29:57 -0700 Subject: IParameterValidator2. --- .../java/com/beust/jcommander/JCommanderTest.java | 34 +++++++++++++++++++--- src/test/java/com/beust/jcommander/MyClass.java | 14 +++++++-- 2 files changed, 42 insertions(+), 6 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5b41e0b..22c5082 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -839,11 +839,9 @@ public class JCommanderTest { public void parameterWithOneDoubleQuote() { @Parameters(separators = "=") class Arg { - @Parameter(names = { "-p", "--param" }) private String param; } - JCommander jc = new JCommander(new MyClass()); jc.parse("-p=\""); } @@ -865,14 +863,42 @@ public class JCommanderTest { private List rules = new ArrayList(); } Arg a = new Arg(); - StringBuilder sb = new StringBuilder(); new JCommander(a, "-rule", "some test"); Assert.assertEquals(a.rules, Arrays.asList("some test")); } + static class V2 implements IParameterValidator2 { + final static List names = Lists.newArrayList(); + static boolean validateCalled = false; + + @Override + public void validate(String name, String value) throws ParameterException { + validateCalled = true; + } + + @Override + public void validate(String name, String value, ParameterDescription pd) + throws ParameterException { + names.addAll(Arrays.asList(pd.getParameter().names())); + } + } + + public void validator2() { + class Arg { + @Parameter(names = { "-h", "--host" }, validateWith = V2.class) + String host; + } + Arg a = new Arg(); + V2.names.clear(); + V2.validateCalled = false; + new JCommander(a, "--host", "h"); + Assert.assertEquals(V2.names, Arrays.asList(new String[] { "-h", "--host" })); + Assert.assertTrue(V2.validateCalled); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().spaces(); + new JCommanderTest().parameterWithOneDoubleQuote(); // class A { // @Parameter(names = "-short", required = true) // List parameters; diff --git a/src/test/java/com/beust/jcommander/MyClass.java b/src/test/java/com/beust/jcommander/MyClass.java index 3bf46b5..c2d3371 100644 --- a/src/test/java/com/beust/jcommander/MyClass.java +++ b/src/test/java/com/beust/jcommander/MyClass.java @@ -1,14 +1,24 @@ package com.beust.jcommander; +import org.testng.Assert; + + @Parameters(separators = "=") public class MyClass { - @Parameter(names = { "-p", "--param" }) + @Parameter(names = { "-p", "--param" }, validateWith = MyValidator.class) private String param; public static void main(String[] args) { JCommander jCommander = new JCommander(new MyClass()); - jCommander.parse("-p=\""); + jCommander.parse("--param=value"); + } + + public static class MyValidator implements IParameterValidator { + @Override + public void validate(String name, String value) throws ParameterException { + Assert.assertEquals(value, "\""); + } } } \ No newline at end of file -- cgit v1.2.3 From 8a4c3d11d8d74628fbe55dce61771810a841723e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 16 Aug 2012 10:33:26 -0700 Subject: Don't throw an exception if running in "no validation" mode. --- src/test/java/com/beust/jcommander/CmdTest.java | 86 +++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/CmdTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/CmdTest.java b/src/test/java/com/beust/jcommander/CmdTest.java new file mode 100644 index 0000000..6601193 --- /dev/null +++ b/src/test/java/com/beust/jcommander/CmdTest.java @@ -0,0 +1,86 @@ +package com.beust.jcommander; + +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class CmdTest { + + @Parameters(commandNames = "--cmd-one") + public static class CmdOne { + } + + @Parameters(commandNames = "--cmd-two") + class CmdTwo { + @Parameter + List params = new java.util.LinkedList(); + } + + public String parseArgs(boolean withDefault, String[] args) { + JCommander jc = new JCommander(); + jc.addCommand(new CmdOne()); + jc.addCommand(new CmdTwo()); + + if (withDefault) { + // First check if a command was given, when not prepend default + // command (--cmd-two") + // In version up to 1.23 JCommander throws an Exception in this + // line, + // which might be incorrect, at least its not reasonable if the + // method + // is named "WithoutValidation". + jc.parseWithoutValidation(args); + if (jc.getParsedCommand() == null) { + LinkedList newArgs = new LinkedList(); + newArgs.add("--cmd-two"); + newArgs.addAll(Arrays.asList(args)); + jc.parse(newArgs.toArray(new String[0])); + } + } else { + jc.parse(args); + } + return jc.getParsedCommand(); + } + + @DataProvider + public Object[][] testData() { + return new Object[][] { + new Object[] { "--cmd-one", false, new String[] { "--cmd-one" } }, + new Object[] { "--cmd-two", false, new String[] { "--cmd-two" } }, + new Object[] { "--cmd-two", false, + new String[] { "--cmd-two", "param1", "param2" } }, + // This is the relevant test case to test default commands + new Object[] { "--cmd-two", true, + new String[] { "param1", "param2" } } }; + } + + @Test(dataProvider = "testData") + public void testArgsWithoutDefaultCmd(String expected, + boolean requireDefault, String[] args) { + if (!requireDefault) { + Assert.assertEquals(parseArgs(false, args), expected); + } + } + + @Test(dataProvider = "testData", expectedExceptions = MissingCommandException.class) + public void testArgsWithoutDefaultCmdFail(String expected, + boolean requireDefault, String[] args) { + if (requireDefault) { + parseArgs(false, args); + } else { + throw new MissingCommandException("irrelevant test case"); + } + } + + // We do not expect a MissingCommandException! + @Test(dataProvider = "testData") + public void testArgsWithDefaultCmd(String expected, boolean requireDefault, + String[] args) { + Assert.assertEquals(parseArgs(true, args), expected); + } + +} \ No newline at end of file -- cgit v1.2.3 From c36c84f608a9a0f3877b37e2889bff6d8a1da88d Mon Sep 17 00:00:00 2001 From: Sergey Tyurin Date: Mon, 17 Sep 2012 22:03:11 +0600 Subject: Fix usage() to print missing new-line characters. The change affects the result of usage() when: - there are commands and no main parameters - there are commands without parameters --- .../java/com/beust/jcommander/JCommanderTest.java | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 22c5082..b705bfa 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -895,6 +895,56 @@ public class JCommanderTest { Assert.assertEquals(V2.names, Arrays.asList(new String[] { "-h", "--host" })); Assert.assertTrue(V2.validateCalled); } + + public void usageCommandsUnderUsage() { + class Arg { + } + @Parameters(commandDescription = "command a") + class ArgCommandA { + @Parameter(description = "command a parameters") + List parameters; + } + @Parameters(commandDescription = "command b") + class ArgCommandB { + @Parameter(description = "command b parameters") + List parameters; + } + + Arg a = new Arg(); + + JCommander c = new JCommander(a); + c.addCommand("a", new ArgCommandA()); + c.addCommand("b", new ArgCommandB()); + + StringBuilder sb = new StringBuilder(); + c.usage(sb); + Assert.assertTrue(sb.toString().contains("[command options]\n Commands:")); + } + + public void usageWithEmpytLine() { + class Arg { + } + @Parameters(commandDescription = "command a") + class ArgCommandA { + @Parameter(description = "command a parameters") + List parameters; + } + @Parameters(commandDescription = "command b") + class ArgCommandB { + @Parameter(description = "command b parameters") + List parameters; + } + + Arg a = new Arg(); + + JCommander c = new JCommander(a); + c.addCommand("a", new ArgCommandA()); + c.addCommand("b", new ArgCommandB()); + + StringBuilder sb = new StringBuilder(); + c.usage(sb); + Assert.assertTrue(sb.toString().contains("command a parameters\n\n b")); + } @Test(enabled = false) public static void main(String[] args) throws Exception { -- cgit v1.2.3 From c421118d3104c0594dbe207c8443e51022422d32 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 17 Sep 2012 23:01:04 -0700 Subject: Added JCommander#setNoThrow() and JCommander#getUnknownArgs(). --- .../java/com/beust/jcommander/JCommanderTest.java | 65 +++++++++++++--------- 1 file changed, 40 insertions(+), 25 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 22c5082..ff001e3 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -18,6 +18,28 @@ package com.beust.jcommander; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.EnumSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.TreeSet; + +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args1Setter; import com.beust.jcommander.args.Args2; @@ -52,30 +74,8 @@ import com.beust.jcommander.args.VariableArity; import com.beust.jcommander.command.CommandAdd; import com.beust.jcommander.command.CommandCommit; import com.beust.jcommander.command.CommandMain; - -import org.testng.Assert; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; -import org.testng.collections.Lists; -import org.testng.collections.Maps; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.EnumSet; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.ResourceBundle; -import java.util.TreeSet; +import com.beust.jcommander.internal.Lists; +import com.beust.jcommander.internal.Maps; @Test public class JCommanderTest { @@ -891,11 +891,26 @@ public class JCommanderTest { Arg a = new Arg(); V2.names.clear(); V2.validateCalled = false; - new JCommander(a, "--host", "h"); + JCommander jc = new JCommander(a, "--host", "h"); + jc.setNoThrow(true); Assert.assertEquals(V2.names, Arrays.asList(new String[] { "-h", "--host" })); Assert.assertTrue(V2.validateCalled); } + public void partialValidation() { + class Arg { + @Parameter(names = { "-h", "--host" }) + String host; + } + Arg a = new Arg(); + JCommander jc = new JCommander(); + jc.setNoThrow(true); + jc.addObject(a); + jc.parse("-a", "foo", "-h", "host"); + Assert.assertEquals(a.host, "host"); + Assert.assertEquals(jc.getUnknownArgs(), Lists.newArrayList("-a", "foo")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { new JCommanderTest().parameterWithOneDoubleQuote(); -- cgit v1.2.3 From 406904b81e91c3160646388b26f7c167fa7dd3ea Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 18 Sep 2012 18:44:38 -0700 Subject: Rename: noThrow -> acceptUnknownOption. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 9426fd1..cab19be 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -892,7 +892,7 @@ public class JCommanderTest { V2.names.clear(); V2.validateCalled = false; JCommander jc = new JCommander(a, "--host", "h"); - jc.setNoThrow(true); + jc.setAcceptUnknownOptions(true); Assert.assertEquals(V2.names, Arrays.asList(new String[] { "-h", "--host" })); Assert.assertTrue(V2.validateCalled); } @@ -954,7 +954,7 @@ public class JCommanderTest { } Arg a = new Arg(); JCommander jc = new JCommander(); - jc.setNoThrow(true); + jc.setAcceptUnknownOptions(true); jc.addObject(a); jc.parse("-a", "foo", "-h", "host"); Assert.assertEquals(a.host, "host"); -- cgit v1.2.3 From 31f61c5de3753a86d58a5bf2399ea5ea7312d35b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 18 Sep 2012 22:12:45 -0700 Subject: Renaming. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index cab19be..5199cad 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -958,7 +958,7 @@ public class JCommanderTest { jc.addObject(a); jc.parse("-a", "foo", "-h", "host"); Assert.assertEquals(a.host, "host"); - Assert.assertEquals(jc.getUnknownArgs(), Lists.newArrayList("-a", "foo")); + Assert.assertEquals(jc.getUnknownOptions(), Lists.newArrayList("-a", "foo")); } @Test(enabled = false) -- cgit v1.2.3 From 5fc805c44e904eb37f24217676b5da1619268c48 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 23 Sep 2012 06:10:45 -0700 Subject: Added enum support (Scott M. Stark). --- src/test/java/com/beust/jcommander/JCommanderTest.java | 5 ++++- src/test/java/com/beust/jcommander/args/ArgsEnum.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5199cad..a5caca0 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -48,6 +48,7 @@ import com.beust.jcommander.args.ArgsBooleanArity; import com.beust.jcommander.args.ArgsBooleanArity0; import com.beust.jcommander.args.ArgsConverter; import com.beust.jcommander.args.ArgsEnum; +import com.beust.jcommander.args.ArgsEnum.ChoiceType; import com.beust.jcommander.args.ArgsEquals; import com.beust.jcommander.args.ArgsHelp; import com.beust.jcommander.args.ArgsI18N1; @@ -561,11 +562,13 @@ public class JCommanderTest { public void enumArgs() { ArgsEnum args = new ArgsEnum(); - String[] argv = { "-choice", "ONE"}; + String[] argv = { "-choice", "ONE", "-choices", "ONE", "TWO" }; JCommander jc = new JCommander(args, argv); Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); + List expected = Arrays.asList(ChoiceType.ONE, ChoiceType.TWO); + Assert.assertEquals(expected, args.choices); Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java index 16643cd..c6b0c08 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsEnum.java +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -18,12 +18,14 @@ package com.beust.jcommander.args; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.List; import org.testng.Assert; -import java.util.EnumSet; +import com.beust.jcommander.JCommander; +import com.beust.jcommander.Parameter; /** * Test enums. @@ -36,6 +38,9 @@ public class ArgsEnum { @Parameter(names = "-choice") public ChoiceType choice = ChoiceType.ONE; + @Parameter(names = "-choices", variableArity = true) + public List choices = new ArrayList(); + public static void main(String[] args1) { ArgsEnum args = new ArgsEnum(); String[] argv = { "-choice", "ONE"}; -- cgit v1.2.3 From d5490aabc6002f9400e5cf3050f098ab967253d2 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 10 Nov 2012 10:29:37 -0800 Subject: Fixed: GITHUB-107: Allow enum values without converting them to uppercase. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 6 +++--- src/test/java/com/beust/jcommander/args/ArgsEnum.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index a5caca0..4a84496 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -562,12 +562,12 @@ public class JCommanderTest { public void enumArgs() { ArgsEnum args = new ArgsEnum(); - String[] argv = { "-choice", "ONE", "-choices", "ONE", "TWO" }; + String[] argv = { "-choice", "ONE", "-choices", "ONE", "Two" }; JCommander jc = new JCommander(args, argv); Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); - List expected = Arrays.asList(ChoiceType.ONE, ChoiceType.TWO); + List expected = Arrays.asList(ChoiceType.ONE, ChoiceType.Two); Assert.assertEquals(expected, args.choices); Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); @@ -966,7 +966,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().parameterWithOneDoubleQuote(); + new JCommanderTest().enumArgs(); // class A { // @Parameter(names = "-short", required = true) // List parameters; diff --git a/src/test/java/com/beust/jcommander/args/ArgsEnum.java b/src/test/java/com/beust/jcommander/args/ArgsEnum.java index c6b0c08..bef663b 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsEnum.java +++ b/src/test/java/com/beust/jcommander/args/ArgsEnum.java @@ -34,7 +34,7 @@ import com.beust.jcommander.Parameter; */ public class ArgsEnum { - public enum ChoiceType { ONE, TWO, THREE }; + public enum ChoiceType { ONE, Two, THREE }; @Parameter(names = "-choice") public ChoiceType choice = ChoiceType.ONE; -- cgit v1.2.3 From 07e332d70768d2f49d835ccf65628d73d2d6703f Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 10 Nov 2012 11:30:30 -0800 Subject: Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified --- src/test/java/com/beust/jcommander/JCommanderTest.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4a84496..4f67f9a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -964,9 +964,22 @@ public class JCommanderTest { Assert.assertEquals(jc.getUnknownOptions(), Lists.newArrayList("-a", "foo")); } + /** + * GITHUB-137. + */ + public void listArgShouldBeCleared() { + class Args { + @Parameter(description = "[endpoint]") + public List endpoint = Lists.newArrayList("prod"); + } + Args a = new Args(); + new JCommander(a, new String[] { "dev" }); + Assert.assertEquals(a.endpoint, Lists.newArrayList("dev")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().enumArgs(); + new JCommanderTest().listParameters(); // listArgShouldBeCleared(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From cf62891268452675c56a4b18d5866123398e1cb3 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 10 Nov 2012 11:41:04 -0800 Subject: New test. --- .../java/com/beust/jcommander/JCommanderTest.java | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4f67f9a..356d442 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -977,9 +977,31 @@ public class JCommanderTest { Assert.assertEquals(a.endpoint, Lists.newArrayList("dev")); } + public void a() { + class Arguments { + @Parameter(names = { "-help", "-h" }, arity = 0, description = "Show this help message") + public Boolean help = false; + + @Parameter(names = { "-verbose", "-v" }, arity = 0, description = "Verbose output mode") + public Boolean verbose = false; + + @Parameter(names = { "-target" }, arity = 1, description = "Target directory", required = true) + public File target; + + @Parameter(names = { "-input" }, variableArity = true, description = "Input paths", required = true) + public List paths; + } + Arguments a = new Arguments(); + new JCommander(a, new String[] { + "-input", "example_in1", "example_in2", "-target", "example_out" } + ); + Assert.assertEquals(a.paths, Lists.newArrayList("example_in1", "example_in2")); + Assert.assertEquals(a.target, new File("example_out")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().listParameters(); // listArgShouldBeCleared(); + new JCommanderTest().a(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From d627b357c2a63b003869de40221c02b04d0eb663 Mon Sep 17 00:00:00 2001 From: Julien Massenet Date: Mon, 5 Aug 2013 14:41:43 +0200 Subject: Do not close System.in when using DefaultConsole --- .../jcommander/internal/DefaultConsoleTest.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/internal/DefaultConsoleTest.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/internal/DefaultConsoleTest.java b/src/test/java/com/beust/jcommander/internal/DefaultConsoleTest.java new file mode 100644 index 0000000..e101439 --- /dev/null +++ b/src/test/java/com/beust/jcommander/internal/DefaultConsoleTest.java @@ -0,0 +1,64 @@ +package com.beust.jcommander.internal; + +import java.io.IOException; +import java.io.InputStream; + +import org.testng.Assert; +import org.testng.annotations.Test; + +@Test +public class DefaultConsoleTest { + public void readPasswordCanBeCalledMultipleTimes() { + final InputStream inBackup = System.in; + try { + final StringInputStream in = new StringInputStream(); + System.setIn(in); + final Console console = new DefaultConsole(); + + in.setData("password1\n"); + char[] password = console.readPassword(false); + Assert.assertEquals(password, "password1".toCharArray()); + Assert.assertFalse(in.isClosedCalled(), "System.in stream shouldn't be closed"); + + in.setData("password2\n"); + password = console.readPassword(false); + Assert.assertEquals(password, "password2".toCharArray()); + Assert.assertFalse(in.isClosedCalled(), "System.in stream shouldn't be closed"); + } finally { + System.setIn(inBackup); + } + } + + private static class StringInputStream extends InputStream { + private byte[] data = new byte[0]; + private int offset = 0; + private boolean closedCalled; + + StringInputStream() { + super(); + } + + void setData(final String strData) { + data = strData.getBytes(); + offset = 0; + } + + boolean isClosedCalled() { + return closedCalled; + } + + @Override + public int read() throws IOException { + if (offset >= data.length) { + return -1; + } + return 0xFFFF & data[offset++]; + } + + @Override + public void close() throws IOException { + closedCalled = true; + super.close(); + } + } +} -- cgit v1.2.3 From 04e646fe260cced3e41c20c7807a7af7207ea32f Mon Sep 17 00:00:00 2001 From: Andy Law Date: Mon, 17 Feb 2014 11:40:19 +0000 Subject: Fixed problem whereby Parameters returning Lists and with alternate names were being reset on the first use of an alternate name. Added test to ensure correct behaviour. --- .../java/com/beust/jcommander/JCommanderTest.java | 30 ++++++++++++++++++++++ .../jcommander/args/AlternateNamesForListArgs.java | 30 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 356d442..be9a7ea 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -18,6 +18,7 @@ package com.beust.jcommander; +import com.beust.jcommander.args.AlternateNamesForListArgs; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileWriter; @@ -96,6 +97,35 @@ public class JCommanderTest { Assert.assertEquals(args.date, new SimpleDateFormat("yyyy-MM-dd").parse("2011-10-26")); } + @DataProvider + public Object[][] alternateNamesListArgs() { + return new Object[][] { + new String[][] {new String[] {"--servers", "1", "-s", "2", "--servers", "3"}}, + new String[][] {new String[] {"-s", "1", "-s", "2", "--servers", "3"}}, + new String[][] {new String[] {"--servers", "1", "--servers", "2", "-s", "3"}}, + new String[][] {new String[] {"-s", "1", "--servers", "2", "-s", "3"}}, + new String[][] {new String[] {"-s", "1", "-s", "2", "--servers", "3"}}, + }; + } + + /** + * Confirm that List parameters with alternate names return the correct + * List regardless of how the arguments are specified + */ + + @Test(dataProvider = "alternateNamesListArgs") + public void testAlternateNamesForListArguments(String[] argv) { + AlternateNamesForListArgs args = new AlternateNamesForListArgs(); + + new JCommander(args, argv); + + Assert.assertEquals(args.serverNames.size(), 3); + Assert.assertEquals(args.serverNames.get(0), argv[1]); + Assert.assertEquals(args.serverNames.get(1), argv[3]); + Assert.assertEquals(args.serverNames.get(2), argv[5]); + } + + /** * Make sure that if there are args with multiple names (e.g. "-log" and "-verbose"), * the usage will only display it once. diff --git a/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java b/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java new file mode 100644 index 0000000..cf05bd3 --- /dev/null +++ b/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java @@ -0,0 +1,30 @@ +/* + * Copyright 2014 alaw3. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.beust.jcommander.args; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.internal.Lists; +import java.util.List; + +/** + * + * @author alaw3 + */ +public class AlternateNamesForListArgs { + + @Parameter(names = {"-s", "--servers"}, description = "blah") + public List serverNames = Lists.newLinkedList(); +} -- cgit v1.2.3 From 2a4eef24e7c309e8fc69ccb7d7e3fd08681635d8 Mon Sep 17 00:00:00 2001 From: Andy Law Date: Mon, 17 Feb 2014 11:46:16 +0000 Subject: Fixed the copyright notice in the test class file --- .../java/com/beust/jcommander/args/AlternateNamesForListArgs.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java b/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java index cf05bd3..18a1655 100644 --- a/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java +++ b/src/test/java/com/beust/jcommander/args/AlternateNamesForListArgs.java @@ -1,5 +1,7 @@ /* - * Copyright 2014 alaw3. + * Copyright (C) 2014 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +23,7 @@ import java.util.List; /** * - * @author alaw3 + * @author Andy Law */ public class AlternateNamesForListArgs { -- cgit v1.2.3 From aa87f5891a77dffdf24bc4fb1f766ec976b064c1 Mon Sep 17 00:00:00 2001 From: Yannick Menager Date: Thu, 27 Feb 2014 14:22:28 +0000 Subject: Fixes #184 Bug in enum parsing --- src/test/java/com/beust/jcommander/JCommanderTest.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index be9a7ea..63964ae 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -596,12 +596,20 @@ public class JCommanderTest { JCommander jc = new JCommander(args, argv); Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); - + List expected = Arrays.asList(ChoiceType.ONE, ChoiceType.Two); Assert.assertEquals(expected, args.choices); Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class) ArgsEnum.ChoiceType.class)); - + + } + + public void enumArgsCaseInsensitive() { + ArgsEnum args = new ArgsEnum(); + String[] argv = { "-choice", "one"}; + JCommander jc = new JCommander(args, argv); + + Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); } @Test(expectedExceptions = ParameterException.class) -- cgit v1.2.3 From 7c5bf86fc5d5e85d471e3722a39b7a21101b0484 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 7 Apr 2014 22:24:08 -0700 Subject: Support for "--". --- .../java/com/beust/jcommander/JCommanderTest.java | 30 ++++++++++------------ 1 file changed, 13 insertions(+), 17 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 63964ae..978f0d6 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -18,7 +18,6 @@ package com.beust.jcommander; -import com.beust.jcommander.args.AlternateNamesForListArgs; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileWriter; @@ -41,6 +40,7 @@ import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import com.beust.jcommander.args.AlternateNamesForListArgs; import com.beust.jcommander.args.Args1; import com.beust.jcommander.args.Args1Setter; import com.beust.jcommander.args.Args2; @@ -1015,31 +1015,27 @@ public class JCommanderTest { Assert.assertEquals(a.endpoint, Lists.newArrayList("dev")); } - public void a() { + public void dashDashParameter() { class Arguments { - @Parameter(names = { "-help", "-h" }, arity = 0, description = "Show this help message") - public Boolean help = false; - - @Parameter(names = { "-verbose", "-v" }, arity = 0, description = "Verbose output mode") - public Boolean verbose = false; - - @Parameter(names = { "-target" }, arity = 1, description = "Target directory", required = true) - public File target; - - @Parameter(names = { "-input" }, variableArity = true, description = "Input paths", required = true) - public List paths; + @Parameter(names = { "-name" }) + public String name; + @Parameter + public List mainParameters; } + Arguments a = new Arguments(); new JCommander(a, new String[] { - "-input", "example_in1", "example_in2", "-target", "example_out" } + "-name", "theName", "--", "param1", "param2"} ); - Assert.assertEquals(a.paths, Lists.newArrayList("example_in1", "example_in2")); - Assert.assertEquals(a.target, new File("example_out")); + Assert.assertEquals(a.name, "theName"); + Assert.assertEquals(a.mainParameters.size(), 2); + Assert.assertEquals(a.mainParameters.get(0), "param1"); + Assert.assertEquals(a.mainParameters.get(1), "param2"); } @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().a(); +// new JCommanderTest().a(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3 From df883e8495e143f92d363225e48b45a81cf449fd Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Thu, 10 Apr 2014 14:38:57 -0400 Subject: Added another test for using '--' --- .../java/com/beust/jcommander/JCommanderTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 978f0d6..c61980a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1033,6 +1033,26 @@ public class JCommanderTest { Assert.assertEquals(a.mainParameters.get(1), "param2"); } + public void dashDashParameter2() { + class Arguments { + @Parameter(names = { "-name" }) + public String name; + @Parameter + public List mainParameters; + } + + Arguments a = new Arguments(); + new JCommander(a, new String[] { + "param1", "param2", "--", "-name", "theName"} + ); + Assert.assertNull(a.name); + Assert.assertEquals(a.mainParameters.size(), 4); + Assert.assertEquals(a.mainParameters.get(0), "param1"); + Assert.assertEquals(a.mainParameters.get(1), "param2"); + Assert.assertEquals(a.mainParameters.get(2), "-name"); + Assert.assertEquals(a.mainParameters.get(3), "theName"); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { // new JCommanderTest().a(); -- cgit v1.2.3 From a944e2290d2ced9e3615892695754424197d93b7 Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Thu, 10 Apr 2014 14:52:14 -0400 Subject: Broke parsing of -- --- src/test/java/com/beust/jcommander/JCommanderTest.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index c61980a..342b858 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1043,14 +1043,15 @@ public class JCommanderTest { Arguments a = new Arguments(); new JCommander(a, new String[] { - "param1", "param2", "--", "-name", "theName"} + "param1", "param2", "--", "param3", "-name", "theName"} ); Assert.assertNull(a.name); - Assert.assertEquals(a.mainParameters.size(), 4); + Assert.assertEquals(a.mainParameters.size(), 5); Assert.assertEquals(a.mainParameters.get(0), "param1"); Assert.assertEquals(a.mainParameters.get(1), "param2"); - Assert.assertEquals(a.mainParameters.get(2), "-name"); - Assert.assertEquals(a.mainParameters.get(3), "theName"); + Assert.assertEquals(a.mainParameters.get(2), "param3"); + Assert.assertEquals(a.mainParameters.get(3), "-name"); + Assert.assertEquals(a.mainParameters.get(4), "theName"); } @Test(enabled = false) -- cgit v1.2.3 From d9bec530f2d1c83289e8f325b33940cafce6b6c2 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Sat, 17 May 2014 22:53:59 +0200 Subject: Added support for URL parameters --- src/test/java/com/beust/jcommander/args/ArgsConverter.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index 159ed78..c33475c 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -23,13 +23,17 @@ import com.beust.jcommander.converters.FileConverter; import java.io.File; import java.math.BigDecimal; +import java.net.URI; import java.util.List; public class ArgsConverter { @Parameter(names = "-file", converter = FileConverter.class) public File file; - + +// @Parameter(names = "-uri") +// public URI uri; + @Parameter(names = "-listStrings") public List listStrings; @@ -38,4 +42,5 @@ public class ArgsConverter { @Parameter(names = "-listBigDecimals") public List listBigDecimals; + } -- cgit v1.2.3 From 495398d07b80ba24b6a1eaff0f0c973d4a295dcc Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Sat, 17 May 2014 22:57:11 +0200 Subject: Added support for URI parameters --- src/test/java/com/beust/jcommander/args/ArgsConverter.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index c33475c..315abdc 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -20,10 +20,13 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; import com.beust.jcommander.converters.FileConverter; +import com.beust.jcommander.converters.URIConverter; +import com.beust.jcommander.converters.URLConverter; import java.io.File; import java.math.BigDecimal; import java.net.URI; +import java.net.URL; import java.util.List; public class ArgsConverter { @@ -31,8 +34,11 @@ public class ArgsConverter { @Parameter(names = "-file", converter = FileConverter.class) public File file; -// @Parameter(names = "-uri") -// public URI uri; + @Parameter(names = "-url", converter = URLConverter.class) + public URL url; + + @Parameter(names = "-uri", converter = URIConverter.class) + public URI uri; @Parameter(names = "-listStrings") public List listStrings; -- cgit v1.2.3 From 3899d473faed68a3d308336d213626dffaa030e7 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Sat, 17 May 2014 22:58:37 +0200 Subject: Added support for Java NIO Paths --- src/test/java/com/beust/jcommander/args/ArgsConverter.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/args/ArgsConverter.java b/src/test/java/com/beust/jcommander/args/ArgsConverter.java index 315abdc..677cf9b 100644 --- a/src/test/java/com/beust/jcommander/args/ArgsConverter.java +++ b/src/test/java/com/beust/jcommander/args/ArgsConverter.java @@ -20,6 +20,7 @@ package com.beust.jcommander.args; import com.beust.jcommander.Parameter; import com.beust.jcommander.converters.FileConverter; +import com.beust.jcommander.converters.PathConverter; import com.beust.jcommander.converters.URIConverter; import com.beust.jcommander.converters.URLConverter; @@ -27,6 +28,7 @@ import java.io.File; import java.math.BigDecimal; import java.net.URI; import java.net.URL; +import java.nio.file.Path; import java.util.List; public class ArgsConverter { @@ -40,6 +42,9 @@ public class ArgsConverter { @Parameter(names = "-uri", converter = URIConverter.class) public URI uri; + @Parameter(names = "-path", converter = PathConverter.class) + public Path path; + @Parameter(names = "-listStrings") public List listStrings; -- cgit v1.2.3 From 44ef916dcf74e46adbf7c2ae99643bd0e97c16e6 Mon Sep 17 00:00:00 2001 From: John Conwell Date: Fri, 6 Jun 2014 19:00:27 -0700 Subject: Adding functionality that allows commands to be hidden from usage output --- .../beust/jcommander/command/CommandHidden.java | 17 +++++++++++++++++ .../com/beust/jcommander/command/CommandTest.java | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/test/java/com/beust/jcommander/command/CommandHidden.java (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/command/CommandHidden.java b/src/test/java/com/beust/jcommander/command/CommandHidden.java new file mode 100644 index 0000000..a3fc4fa --- /dev/null +++ b/src/test/java/com/beust/jcommander/command/CommandHidden.java @@ -0,0 +1,17 @@ +package com.beust.jcommander.command; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; + +import java.util.List; + +@Parameters(commandNames = "add", commandDescription = "Hidden command to add file contents to the index", hidden = true) +public class CommandHidden { + + @Parameter(description = "Patterns of files to be added") + public List patterns; + + @Parameter(names = "-i") + public Boolean interactive = false; + +} diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index 97e0007..cf921bd 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -87,6 +87,28 @@ public class CommandTest { Assert.assertEquals(commit.files, Arrays.asList("A.java", "B.java")); } + @Test + public void hiddenCommandTest() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandHidden hidden = new CommandHidden(); + jc.addCommand("hidden", hidden); + jc.parse("hidden", "-i", "A.java"); + + Assert.assertEquals(jc.getParsedCommand(), "hidden"); + Assert.assertEquals(hidden.interactive.booleanValue(), true); + Assert.assertEquals(hidden.patterns, Arrays.asList("A.java")); + + jc.setProgramName("TestCommander"); + StringBuilder out = new StringBuilder(); + jc.usage(out); + + Assert.assertTrue(out.toString().contains("add Add file contents to the index")); + Assert.assertFalse(out.toString().contains("hidden Hidden command to add file contents to the index")); + } + public static void main(String[] args) { new CommandTest().shouldComplainIfNoAnnotations(); } -- cgit v1.2.3 From f5bc65089dc0a58c3855868c985f291b6e9e1afe Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 5 Oct 2014 08:53:37 -0700 Subject: Preparing release. --- src/test/java/com/beust/jcommander/JCommanderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/java/com/beust/jcommander') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 342b858..ad2c5e8 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1056,7 +1056,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { -// new JCommanderTest().a(); + new JCommanderTest().enumArgsFail(); // class A { // @Parameter(names = "-short", required = true) // List parameters; -- cgit v1.2.3