JCommanderTest.java revision c1d51baff4fb68b90b2f9cdfea512c84ab94eb42
158a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust/**
258a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * Copyright (C) 2010 the original author or authors.
358a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * See the notice.md file distributed with this work for additional
458a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * information regarding copyright ownership.
558a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust *
658a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * Licensed under the Apache License, Version 2.0 (the "License");
758a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * you may not use this file except in compliance with the License.
858a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * You may obtain a copy of the License at
958a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust *
1058a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust *     http://www.apache.org/licenses/LICENSE-2.0
1158a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust *
1258a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * Unless required by applicable law or agreed to in writing, software
1358a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * distributed under the License is distributed on an "AS IS" BASIS,
1458a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1558a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * See the License for the specific language governing permissions and
1658a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust * limitations under the License.
1758a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust */
1858a4af720c30d8dba072a96e3713577c8d30aeaeCedric Beust
19e9229f961b3a5799f6798369afe26dec7960249Cedric Beustpackage com.beust.jcommander;
20e9229f961b3a5799f6798369afe26dec7960249Cedric Beust
21103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.Args1;
22103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.Args2;
239c170b3038460fde4999afc7af7bb5d31e3f1e47Cedric Beustimport com.beust.jcommander.args.ArgsLongDescription;
24103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsArityString;
25103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsBooleanArity;
26b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport com.beust.jcommander.args.ArgsBooleanArity0;
27103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsConverter;
28103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsI18N1;
29103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsI18N2;
30103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsI18N2New;
31b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthierimport com.beust.jcommander.args.ArgsInherited;
32103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsMaster;
33103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsMultipleUnparsed;
34103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsPrivate;
3572cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beustimport com.beust.jcommander.args.ArgsRequired;
36103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsSlave;
37103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsSlaveBogus;
38e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beustimport com.beust.jcommander.args.Arity1;
39103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorColon;
40103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorEqual;
41103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorMixed;
42d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beustimport com.beust.jcommander.args.SlashSeparator;
43dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandAdd;
44dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandCommit;
45dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandMain;
46eca9dc8ab293c10f16a104e107b402b61c4c76deCedric Beust
47b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.Assert;
48b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.annotations.DataProvider;
49b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.annotations.Test;
50b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
51e9229f961b3a5799f6798369afe26dec7960249Cedric Beustimport java.util.Arrays;
524c020da73b8b25773bba8553263cf1954c718573Cedric Beustimport java.util.Iterator;
539b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beustimport java.util.Locale;
544c020da73b8b25773bba8553263cf1954c718573Cedric Beustimport java.util.Map;
559b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beustimport java.util.ResourceBundle;
56e9229f961b3a5799f6798369afe26dec7960249Cedric Beust
57e9229f961b3a5799f6798369afe26dec7960249Cedric Beustpublic class JCommanderTest {
58e9229f961b3a5799f6798369afe26dec7960249Cedric Beust  @Test
59e9229f961b3a5799f6798369afe26dec7960249Cedric Beust  public void simpleArgs() {
6094fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Args1 args = new Args1();
61cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    String[] argv = { "-debug", "-log", "2", "-groups", "unit", "a", "b", "c" };
6294fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    new JCommander(args, argv);
63e9229f961b3a5799f6798369afe26dec7960249Cedric Beust
64cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    Assert.assertTrue(args.debug);
6594fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.verbose.intValue(), 2);
6694fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.groups, "unit");
6794fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c"));
68e9229f961b3a5799f6798369afe26dec7960249Cedric Beust  }
69696418a94157048544c44f405d757ede86eec926Cedric Beust
70696418a94157048544c44f405d757ede86eec926Cedric Beust  /**
71696418a94157048544c44f405d757ede86eec926Cedric Beust   * Make sure that if there are args with multiple names (e.g. "-log" and "-verbose"),
72696418a94157048544c44f405d757ede86eec926Cedric Beust   * the usage will only display it once.
73696418a94157048544c44f405d757ede86eec926Cedric Beust   */
74696418a94157048544c44f405d757ede86eec926Cedric Beust  @Test
75696418a94157048544c44f405d757ede86eec926Cedric Beust  public void repeatedArgs() {
7694fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Args1 args = new Args1();
77696418a94157048544c44f405d757ede86eec926Cedric Beust    String[] argv = { "-log", "2" };
7894fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    JCommander jc = new JCommander(args, argv);
794312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    Assert.assertEquals(jc.getParameters().size(), 4);
80696418a94157048544c44f405d757ede86eec926Cedric Beust  }
81696418a94157048544c44f405d757ede86eec926Cedric Beust
82dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  /**
83dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust   * Not specifying a required option should throw an exception.
84dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust   */
85dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  @Test(expectedExceptions = ParameterException.class)
866734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  public void requiredFields1Fail() {
8794fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Args1 args = new Args1();
88dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust    String[] argv = { "-debug" };
8994fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    new JCommander(args, argv);
90dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  }
91dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust
92dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  /**
93dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust   * Required options with multiple names should work with all names.
94dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust   */
95c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  private void multipleNames(String option) {
9694fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Args1 args = new Args1();
97c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    String[] argv = { option, "2" };
9894fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    new JCommander(args, argv);
99c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    Assert.assertEquals(args.verbose.intValue(), 2);
100c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  }
101c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust
102c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  @Test
103c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  public void multipleNames1() {
104c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    multipleNames("-log");
105dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  }
106dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust
107dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  @Test
108c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  public void multipleNames2() {
109c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    multipleNames("-verbose");
110dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  }
111dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust
1126734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  private void i18n1(String bundleName, Locale locale, String expectedString) {
1136734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ResourceBundle bundle = locale != null ? ResourceBundle.getBundle(bundleName, locale)
1149b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust        : null;
1159b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1166734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ArgsI18N1 i18n = new ArgsI18N1();
1179b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    String[] argv = { "-host", "localhost" };
1189b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    JCommander jc = new JCommander(i18n, bundle, argv);
11914516e91e6be4ba1c3e7b573ea450e5c59925ecfCedric Beust//    jc.usage();
1209b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1219b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    ParameterDescription pd = jc.getParameters().get(0);
1229b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    Assert.assertEquals(pd.getDescription(), expectedString);
1239b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1249b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1259b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  @Test
1269b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nNoLocale() {
1276734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    i18n1("MessageBundle", null, "Host");
1289b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1299b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1309b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  @Test
1319b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nUsLocale() {
1326734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    i18n1("MessageBundle", new Locale("en", "US"), "Host");
1339b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1349b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1359b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  @Test
1369b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nFrLocale() {
137c27a04a2e10667dff4390b25fa4224b58b291ca0David Gageot    i18n1("MessageBundle", new Locale("fr", "FR"), "Hôte");
1386734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  }
1396734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust
140b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  private void i18n2(Object i18n) {
1416734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    String[] argv = { "-host", "localhost" };
1426734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    Locale.setDefault(new Locale("fr", "FR"));
1436734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    JCommander jc = new JCommander(i18n, argv);
1446734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ParameterDescription pd = jc.getParameters().get(0);
145c27a04a2e10667dff4390b25fa4224b58b291ca0David Gageot    Assert.assertEquals(pd.getDescription(), "Hôte");
1469b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1479b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
148d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust  @Test
149b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  public void i18nWithResourceAnnotation() {
150b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust    i18n2(new ArgsI18N2());
151b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  }
152b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust
153b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  @Test
154b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  public void i18nWithResourceAnnotationNew() {
155b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust    i18n2(new ArgsI18N2New());
156b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  }
157b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust
158b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  @Test
159d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust  public void multiObjects() {
160d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    ArgsMaster m = new ArgsMaster();
161d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    ArgsSlave s = new ArgsSlave();
162d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    String[] argv = { "-master", "master", "-slave", "slave" };
163b945b741b5de0510ce39f8c793e31202070ef942Cedric Beust    new JCommander(new Object[] { m , s }, argv);
164d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust
165d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    Assert.assertEquals(m.master, "master");
166d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    Assert.assertEquals(s.slave, "slave");
167d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust  }
168d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust
1690c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust  @Test(expectedExceptions = ParameterException.class)
1706734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  public void multiObjectsWithDuplicatesFail() {
1710c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    ArgsMaster m = new ArgsMaster();
1720c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    ArgsSlave s = new ArgsSlaveBogus();
1730c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    String[] argv = { "-master", "master", "-slave", "slave" };
1740c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    new JCommander(new Object[] { m , s }, argv);
1750c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust  }
1760c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust
177a21262377768de124914e354e428ed6860828949Cedric Beust  @Test
178f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  public void arityString() {
179f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    ArgsArityString args = new ArgsArityString();
180a21262377768de124914e354e428ed6860828949Cedric Beust    String[] argv = { "-pairs", "pair0", "pair1", "rest" };
181a21262377768de124914e354e428ed6860828949Cedric Beust    new JCommander(args, argv);
182a21262377768de124914e354e428ed6860828949Cedric Beust
183a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.size(), 2);
184a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.get(0), "pair0");
185a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.get(1), "pair1");
186a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.rest.size(), 1);
187a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.rest.get(0), "rest");
188a21262377768de124914e354e428ed6860828949Cedric Beust  }
189a21262377768de124914e354e428ed6860828949Cedric Beust
190f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  @Test(expectedExceptions = ParameterException.class)
191e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity2Fail() {
192f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    ArgsArityString args = new ArgsArityString();
193f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    String[] argv = { "-pairs", "pair0" };
194f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    new JCommander(args, argv);
195f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  }
196f3b82e196a622a959374d7588688e74fe852a512Cedric Beust
197cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  @Test(expectedExceptions = ParameterException.class)
198cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  public void multipleUnparsedFail() {
199cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    ArgsMultipleUnparsed args = new ArgsMultipleUnparsed();
200cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    String[] argv = { };
201cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    new JCommander(args, argv);
202cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  }
203cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust
2045f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust  @Test
2055f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust  public void privateArgs() {
2065f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    ArgsPrivate args = new ArgsPrivate();
2075f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    new JCommander(args, "-verbose", "3");
2085f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    Assert.assertEquals(args.getVerbose().intValue(), 3);
2095f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust  }
2105f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust
2115a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust  @Test
2125a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust  public void converterArgs() {
2135a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    ArgsConverter args = new ArgsConverter();
2145a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    String fileName = "a";
2155a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    new JCommander(args, "-file", "/tmp/" + fileName, "-days", "Tuesday,Thursday");
2165a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.file.getName(), fileName);
2175a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.size(), 2);
2185a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.get(0), "Tuesday");
2195a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.get(1), "Thursday");
2205a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust  }
2215a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust
222b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  private void argsBoolean1(String[] params, Boolean expected) {
223d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust    ArgsBooleanArity args = new ArgsBooleanArity();
224b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    new JCommander(args, params);
225b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    Assert.assertEquals(args.debug, expected);
226b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
227b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
228b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  private void argsBoolean0(String[] params, Boolean expected) {
229b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    ArgsBooleanArity0 args = new ArgsBooleanArity0();
230b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    new JCommander(args, params);
231b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    Assert.assertEquals(args.debug, expected);
232b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
233b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
234b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  @Test
235b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  public void booleanArity1() {
236b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean1(new String[] {}, Boolean.FALSE);
237b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean1(new String[] { "-debug", "true" }, Boolean.TRUE);
238b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
239b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
240c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust  @Test(enabled = false,
241c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust      description = "Disabled because of JCommander -> TestNG -> JCommander dependency")
242b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  public void booleanArity0() {
243b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean0(new String[] {}, Boolean.FALSE);
244b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean0(new String[] { "-debug"}, Boolean.TRUE);
245d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust  }
246d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust
2474312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  @Test(expectedExceptions = ParameterException.class)
2484312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  public void badParameterShouldThrowParameter1Exception() {
2494312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    Args1 args = new Args1();
2504312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    String[] argv = { "-log", "foo" };
2514312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    new JCommander(args, argv);
2524312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  }
2534312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust
2544312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust
2554312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  @Test(expectedExceptions = ParameterException.class)
2564312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  public void badParameterShouldThrowParameter2Exception() {
2574312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    Args1 args = new Args1();
2584312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    String[] argv = { "-long", "foo" };
2594312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    new JCommander(args, argv);
2604312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  }
2614312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust
262b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust  @Test
263b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust  public void listParameters() {
264b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Args2 a = new Args2();
265b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"};
266b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    new JCommander(a, argv);
267b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.verbose.intValue(), 2);
268b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.groups, "unit");
269b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.hosts, Arrays.asList("host2"));
270b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c"));
271b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust  }
27285866a95d6479be731596a838b6f5e793a341f5bCedric Beust
27385866a95d6479be731596a838b6f5e793a341f5bCedric Beust  @Test
274fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorEqual() {
275fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorEqual s = new SeparatorEqual();
276bc108076cf3dc506d4e87e004d8c2e413b995adaCedric Beust    String[] argv = { "-log=3", "--longoption=10" };
27785866a95d6479be731596a838b6f5e793a341f5bCedric Beust    new JCommander(s, argv);
27885866a95d6479be731596a838b6f5e793a341f5bCedric Beust    Assert.assertEquals(s.log.intValue(), 3);
279bc108076cf3dc506d4e87e004d8c2e413b995adaCedric Beust    Assert.assertEquals(s.longOption.intValue(), 10);
28085866a95d6479be731596a838b6f5e793a341f5bCedric Beust  }
28185866a95d6479be731596a838b6f5e793a341f5bCedric Beust
282fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  @Test
283fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorColon() {
284fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorColon s = new SeparatorColon();
285fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-verbose:true" };
286fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(s, argv);
287fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertTrue(s.verbose);
288fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
289fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
290fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  @Test
291fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorBoth() {
292fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorColon s = new SeparatorColon();
293fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorEqual s2 = new SeparatorEqual();
294fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-verbose:true", "-log=3" };
295fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(new Object[] { s, s2 }, argv);
296fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertTrue(s.verbose);
297fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s2.log.intValue(), 3);
298fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
299fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
300fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  @Test
301fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorMixed1() {
302fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorMixed s = new SeparatorMixed();
303fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-long:1", "-level=42" };
304fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(s, argv);
305fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s.l.longValue(), 1l);
306fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s.level.intValue(), 42);
307fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
308fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
3095f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  @Test
310426bf32155b30f5c1819a00d88c16944c01e5a52Cedric Beust  public void slashParameters() {
311d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    SlashSeparator a = new SlashSeparator();
312858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    String[] argv = { "/verbose", "/file", "/tmp/a" };
3135f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust    new JCommander(a, argv);
314d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    Assert.assertTrue(a.verbose);
315d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    Assert.assertEquals(a.file, "/tmp/a");
3165f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  }
3175f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust
3185f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  @Test
319b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier  public void inheritance() {
320b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    ArgsInherited args = new ArgsInherited();
321b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    String[] argv = { "-log", "3", "-child", "2" };
322b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    new JCommander(args, argv);
323b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    Assert.assertEquals(args.child.intValue(), 2);
324b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    Assert.assertEquals(args.log.intValue(), 3);
325b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier  }
326b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier
327b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier  @Test
328858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust  public void negativeNumber() {
329858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    Args1 a = new Args1();
330858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    String[] argv = { "-verbose", "-3" };
331858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    new JCommander(a, argv);
332858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    Assert.assertEquals(a.verbose.intValue(), -3);
333858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust  }
334858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust
33572cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust  @Test(expectedExceptions = ParameterException.class)
3365f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  public void requiredMainParameters() {
33772cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    ArgsRequired a = new ArgsRequired();
33872cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    String[] argv = {};
33972cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    new JCommander(a, argv);
3405f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  }
3415f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust
342a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust  @Test
343a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust  public void usageShouldNotChange() {
344a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"});
345a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    StringBuilder sb = new StringBuilder();
346a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc.usage(sb);
347a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    String expected = sb.toString();
348a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc = new JCommander(new Args1(), new String[]{"-debug", "-log", "2", "-long", "5"});
349a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    sb = new StringBuilder();
350a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc.usage(sb);
351a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    String actual = sb.toString();
352a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    Assert.assertEquals(actual, expected);
353a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust  }
354a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust
3554c020da73b8b25773bba8553263cf1954c718573Cedric Beust  private void verifyCommandOrdering(String[] commandNames, Object[] commands) {
3564c020da73b8b25773bba8553263cf1954c718573Cedric Beust    CommandMain cm = new CommandMain();
3574c020da73b8b25773bba8553263cf1954c718573Cedric Beust    JCommander jc = new JCommander(cm);
3584c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3594c020da73b8b25773bba8553263cf1954c718573Cedric Beust    for (int i = 0; i < commands.length; i++) {
3604c020da73b8b25773bba8553263cf1954c718573Cedric Beust      jc.addCommand(commandNames[i], commands[i]);
3614c020da73b8b25773bba8553263cf1954c718573Cedric Beust    }
3624c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3634c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Map<String, JCommander> c = jc.getCommands();
3644c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Assert.assertEquals(c.size(), commands.length);
3654c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3664c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Iterator<String> it = c.keySet().iterator();
3674c020da73b8b25773bba8553263cf1954c718573Cedric Beust    for (int i = 0; i < commands.length; i++) {
3684c020da73b8b25773bba8553263cf1954c718573Cedric Beust      Assert.assertEquals(it.next(), commandNames[i]);
3694c020da73b8b25773bba8553263cf1954c718573Cedric Beust    }
3704c020da73b8b25773bba8553263cf1954c718573Cedric Beust  }
3714c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3724c020da73b8b25773bba8553263cf1954c718573Cedric Beust  @Test
3734c020da73b8b25773bba8553263cf1954c718573Cedric Beust  public void commandsShouldBeShownInOrderOfInsertion() {
3744c020da73b8b25773bba8553263cf1954c718573Cedric Beust    verifyCommandOrdering(new String[] { "add", "commit" },
3754c020da73b8b25773bba8553263cf1954c718573Cedric Beust        new Object[] { new CommandAdd(), new CommandCommit() });
3764c020da73b8b25773bba8553263cf1954c718573Cedric Beust    verifyCommandOrdering(new String[] { "commit", "add" },
3774c020da73b8b25773bba8553263cf1954c718573Cedric Beust        new Object[] { new CommandCommit(), new CommandAdd() });
3784c020da73b8b25773bba8553263cf1954c718573Cedric Beust  }
3794c020da73b8b25773bba8553263cf1954c718573Cedric Beust
380e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  @DataProvider
381e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  public static Object[][] f() {
382e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust    return new Integer[][] {
383e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 5, 1 },
384e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 8, 1 },
385e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 12, 2 },
386e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 8, 12, 2 },
387e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 9, 10, 1 },
388e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust    };
389e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  }
390e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust
3911c5e7d362685371709595fe3d2e65ceadbdfcffcCedric Beust//  @Test(expectedExceptions = ParameterException.class)
392e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Fail() {
393e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
394e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
395e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
396e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect"
397e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
398e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
399e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    System.out.println("Inspect:" + arguments.inspect);
400e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    Assert.assertTrue(arguments.inspect);
401e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
402e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
4031c5e7d362685371709595fe3d2e65ceadbdfcffcCedric Beust//  @Test(expectedExceptions = ParameterException.class)
404e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Success1() {
405e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
406e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
407e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
408e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect", "true"
409e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
410e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
411e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    System.out.println("Inspect:" + arguments.inspect);
412e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    Assert.assertTrue(arguments.inspect);
413e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
414e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
4151c5e7d362685371709595fe3d2e65ceadbdfcffcCedric Beust//  @Test(expectedExceptions = ParameterException.class)
416e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Success2() {
417e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
418e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
419e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
420e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect", "false"
421e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
422e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
423e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    System.out.println("Inspect:" + arguments.inspect);
424e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    Assert.assertFalse(arguments.inspect);
425e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
426e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
427696418a94157048544c44f405d757ede86eec926Cedric Beust  public static void main(String[] args) {
428c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust    new JCommanderTest().booleanArity0();
4290dcc308f1c08b831376a3e153e2a1ed1a6166697Cedric Beust//    new JCommanderTest().booleanArity1();
430c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    ArgsLongDescription a = new ArgsLongDescription();
431c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    JCommander jc = new JCommander(a);
432c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    jc.usage();
433e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    ArgsPassword a = new ArgsPassword();
434e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    JCommander jc = new JCommander(a);
435e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    jc.parse("-password");
436e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    System.out.println("Password:" + a.password);
437ed891ffa6a8894150718d11df446269365bed216Cedric Beust//    new JCommanderTest().commandsShouldBeShownInOrderOfInsertion();
4384c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandMain cm = new CommandMain();
4394c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    JCommander jc = new JCommander(cm);
4404c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandAdd add = new CommandAdd();
4414c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.addCommand("add", add);
4424c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandCommit commit = new CommandCommit();
4434c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.addCommand("commit", commit);
4444c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.usage();
445dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust
446dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust//    new JCommanderTest().requiredMainParameters();
447dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust//    new CommandTest().commandTest1();
448f14a46abd32b378ec56a672a2da0b926c5d7276dCedric Beust//    new DefaultProviderTest().defaultProvider1();
4491eb22b901f731760a479740312337471363febffCedric Beust//    ArgsMainParameter a = new ArgsMainParameter();
4501eb22b901f731760a479740312337471363febffCedric Beust//    new JCommander(a, "ex1:10", "ex2:20");
4511eb22b901f731760a479740312337471363febffCedric Beust//    System.out.println(a.parameters.get(0).host);
4521eb22b901f731760a479740312337471363febffCedric Beust//    new JCommander(new Args1()).usage();
45385866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    Separator a = new Separator();
45476c4b6ace154f18794f9eb0c3d6211101bf426d0Cedric Beust//    String[] argv = new String[] { "-n", "foo" };
45576c4b6ace154f18794f9eb0c3d6211101bf426d0Cedric Beust//    String[] argv = new String[] { "-v", "t" };
45685866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    String[] argv = { "-log=10" };
45785866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    JCommander jc = new JCommander(a, argv);
45885866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    Assert.assertEquals(a.log.intValue(), 10);
459696418a94157048544c44f405d757ede86eec926Cedric Beust  }
460c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust
461c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust  // Tests:
462c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust  // required unparsed parameter
463e9229f961b3a5799f6798369afe26dec7960249Cedric Beust}
464