JCommanderTest.java revision f2cd60c1f0e475201b9d24b486df920ff1d02ac5
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;
32f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Eganimport com.beust.jcommander.args.ArgsMainParameter1;
33103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsMaster;
34103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsMultipleUnparsed;
35103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsPrivate;
3672cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beustimport com.beust.jcommander.args.ArgsRequired;
37103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsSlave;
38103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.ArgsSlaveBogus;
39e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beustimport com.beust.jcommander.args.Arity1;
40103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorColon;
41103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorEqual;
42103fe3e72907f6f221dda8688e6e6d1b69ddeb73Cedric Beustimport com.beust.jcommander.args.SeparatorMixed;
43d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beustimport com.beust.jcommander.args.SlashSeparator;
44dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandAdd;
45dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandCommit;
46dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beustimport com.beust.jcommander.command.CommandMain;
47eca9dc8ab293c10f16a104e107b402b61c4c76deCedric Beust
48b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.Assert;
49b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.annotations.DataProvider;
50b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beustimport org.testng.annotations.Test;
51b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
52e9229f961b3a5799f6798369afe26dec7960249Cedric Beustimport java.util.Arrays;
534c020da73b8b25773bba8553263cf1954c718573Cedric Beustimport java.util.Iterator;
549b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beustimport java.util.Locale;
554c020da73b8b25773bba8553263cf1954c718573Cedric Beustimport java.util.Map;
569b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beustimport java.util.ResourceBundle;
57e9229f961b3a5799f6798369afe26dec7960249Cedric Beust
58460998fec3b06bf45b024c645b5b5e854de68c24Cedric Beust@Test
59e9229f961b3a5799f6798369afe26dec7960249Cedric Beustpublic class JCommanderTest {
60e9229f961b3a5799f6798369afe26dec7960249Cedric Beust  public void simpleArgs() {
6194fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Args1 args = new Args1();
62cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    String[] argv = { "-debug", "-log", "2", "-groups", "unit", "a", "b", "c" };
6394fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    new JCommander(args, argv);
64e9229f961b3a5799f6798369afe26dec7960249Cedric Beust
65cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    Assert.assertTrue(args.debug);
6694fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.verbose.intValue(), 2);
6794fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.groups, "unit");
6894fca5e6d4506c5b070b17db4063ad360a85d8fcCedric Beust    Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c"));
69e9229f961b3a5799f6798369afe26dec7960249Cedric Beust  }
70696418a94157048544c44f405d757ede86eec926Cedric Beust
71696418a94157048544c44f405d757ede86eec926Cedric Beust  /**
72696418a94157048544c44f405d757ede86eec926Cedric Beust   * Make sure that if there are args with multiple names (e.g. "-log" and "-verbose"),
73696418a94157048544c44f405d757ede86eec926Cedric Beust   * the usage will only display it once.
74696418a94157048544c44f405d757ede86eec926Cedric Beust   */
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  public void multipleNames1() {
103c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    multipleNames("-log");
104dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  }
105dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust
106c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust  public void multipleNames2() {
107c2559dfb9a77c3c8223c5cfb1eac5cc6bbba488eCedric Beust    multipleNames("-verbose");
108dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust  }
109dc76d5707bd6f5b761772203e9d7c285846e8362Cedric Beust
1106734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  private void i18n1(String bundleName, Locale locale, String expectedString) {
1116734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ResourceBundle bundle = locale != null ? ResourceBundle.getBundle(bundleName, locale)
1129b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust        : null;
1139b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1146734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ArgsI18N1 i18n = new ArgsI18N1();
1159b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    String[] argv = { "-host", "localhost" };
1169b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    JCommander jc = new JCommander(i18n, bundle, argv);
11714516e91e6be4ba1c3e7b573ea450e5c59925ecfCedric Beust//    jc.usage();
1189b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1199b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    ParameterDescription pd = jc.getParameters().get(0);
1209b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust    Assert.assertEquals(pd.getDescription(), expectedString);
1219b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1229b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1239b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nNoLocale() {
1246734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    i18n1("MessageBundle", null, "Host");
1259b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1269b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1279b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nUsLocale() {
1286734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    i18n1("MessageBundle", new Locale("en", "US"), "Host");
1299b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1309b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
1319b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  public void i18nFrLocale() {
132c27a04a2e10667dff4390b25fa4224b58b291ca0David Gageot    i18n1("MessageBundle", new Locale("fr", "FR"), "Hôte");
1336734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  }
1346734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust
135b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  private void i18n2(Object i18n) {
1366734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    String[] argv = { "-host", "localhost" };
1376734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    Locale.setDefault(new Locale("fr", "FR"));
1386734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    JCommander jc = new JCommander(i18n, argv);
1396734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust    ParameterDescription pd = jc.getParameters().get(0);
140c27a04a2e10667dff4390b25fa4224b58b291ca0David Gageot    Assert.assertEquals(pd.getDescription(), "Hôte");
1419b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust  }
1429b9a740c04d97ccbb5c643e55775cf9e9e6fc2d7Cedric Beust
143b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  public void i18nWithResourceAnnotation() {
144b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust    i18n2(new ArgsI18N2());
145b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  }
146b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust
147b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  public void i18nWithResourceAnnotationNew() {
148b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust    i18n2(new ArgsI18N2New());
149b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust  }
150b8010b01b766d131076f7343be5e36e7014319e3Cedric Beust
151d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust  public void multiObjects() {
152d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    ArgsMaster m = new ArgsMaster();
153d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    ArgsSlave s = new ArgsSlave();
154d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    String[] argv = { "-master", "master", "-slave", "slave" };
155b945b741b5de0510ce39f8c793e31202070ef942Cedric Beust    new JCommander(new Object[] { m , s }, argv);
156d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust
157d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    Assert.assertEquals(m.master, "master");
158d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust    Assert.assertEquals(s.slave, "slave");
159d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust  }
160d4e3897873895131ae5ebef4e9552b15a9e804ddCedric Beust
1610c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust  @Test(expectedExceptions = ParameterException.class)
1626734de3a3b73ec9fe6bbfe4f8ba1da9f57264587Cedric Beust  public void multiObjectsWithDuplicatesFail() {
1630c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    ArgsMaster m = new ArgsMaster();
1640c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    ArgsSlave s = new ArgsSlaveBogus();
1650c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    String[] argv = { "-master", "master", "-slave", "slave" };
1660c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust    new JCommander(new Object[] { m , s }, argv);
1670c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust  }
1680c0b2226295308797b486e7dcc81d10497ad4886Cedric Beust
169f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  public void arityString() {
170f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    ArgsArityString args = new ArgsArityString();
171a21262377768de124914e354e428ed6860828949Cedric Beust    String[] argv = { "-pairs", "pair0", "pair1", "rest" };
172a21262377768de124914e354e428ed6860828949Cedric Beust    new JCommander(args, argv);
173a21262377768de124914e354e428ed6860828949Cedric Beust
174a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.size(), 2);
175a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.get(0), "pair0");
176a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.pairs.get(1), "pair1");
177a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.rest.size(), 1);
178a21262377768de124914e354e428ed6860828949Cedric Beust    Assert.assertEquals(args.rest.get(0), "rest");
179a21262377768de124914e354e428ed6860828949Cedric Beust  }
180a21262377768de124914e354e428ed6860828949Cedric Beust
181f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  @Test(expectedExceptions = ParameterException.class)
182e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity2Fail() {
183f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    ArgsArityString args = new ArgsArityString();
184f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    String[] argv = { "-pairs", "pair0" };
185f3b82e196a622a959374d7588688e74fe852a512Cedric Beust    new JCommander(args, argv);
186f3b82e196a622a959374d7588688e74fe852a512Cedric Beust  }
187f3b82e196a622a959374d7588688e74fe852a512Cedric Beust
188cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  @Test(expectedExceptions = ParameterException.class)
189cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  public void multipleUnparsedFail() {
190cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    ArgsMultipleUnparsed args = new ArgsMultipleUnparsed();
191cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    String[] argv = { };
192cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust    new JCommander(args, argv);
193cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust  }
194cb91ef843854605fcde3b84ce91ec4d46205a47aCedric Beust
1955f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust  public void privateArgs() {
1965f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    ArgsPrivate args = new ArgsPrivate();
1975f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    new JCommander(args, "-verbose", "3");
1985f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust    Assert.assertEquals(args.getVerbose().intValue(), 3);
1995f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust  }
2005f00acc5afee348e6f3b3741d5e53ca01e508b3eCedric Beust
2015a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust  public void converterArgs() {
2025a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    ArgsConverter args = new ArgsConverter();
2035a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    String fileName = "a";
2045a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    new JCommander(args, "-file", "/tmp/" + fileName, "-days", "Tuesday,Thursday");
2055a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.file.getName(), fileName);
2065a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.size(), 2);
2075a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.get(0), "Tuesday");
2085a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust    Assert.assertEquals(args.days.get(1), "Thursday");
2095a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust  }
2105a8d2cda56e06eccac04f985cfb6df4886cb270eCedric Beust
211b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  private void argsBoolean1(String[] params, Boolean expected) {
212d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust    ArgsBooleanArity args = new ArgsBooleanArity();
213b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    new JCommander(args, params);
214b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    Assert.assertEquals(args.debug, expected);
215b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
216b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
217b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  private void argsBoolean0(String[] params, Boolean expected) {
218b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    ArgsBooleanArity0 args = new ArgsBooleanArity0();
219b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    new JCommander(args, params);
220b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    Assert.assertEquals(args.debug, expected);
221b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
222b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
223b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  public void booleanArity1() {
224b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean1(new String[] {}, Boolean.FALSE);
225b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean1(new String[] { "-debug", "true" }, Boolean.TRUE);
226b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  }
227b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust
228b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust  public void booleanArity0() {
229b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean0(new String[] {}, Boolean.FALSE);
230b828856eb3f2d04ebc118babb4068419fce5b3bdCedric Beust    argsBoolean0(new String[] { "-debug"}, Boolean.TRUE);
231d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust  }
232d3b9e34aed415eba172befec79d2261c3ac38123Cedric Beust
2334312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  @Test(expectedExceptions = ParameterException.class)
2344312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  public void badParameterShouldThrowParameter1Exception() {
2354312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    Args1 args = new Args1();
2364312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    String[] argv = { "-log", "foo" };
2374312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    new JCommander(args, argv);
2384312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  }
2394312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust
2404312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  @Test(expectedExceptions = ParameterException.class)
2414312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  public void badParameterShouldThrowParameter2Exception() {
2424312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    Args1 args = new Args1();
2434312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    String[] argv = { "-long", "foo" };
2444312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust    new JCommander(args, argv);
2454312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust  }
2464312bccb3787db4e24d19c16c5786bf2a503a9b9Cedric Beust
247b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust  public void listParameters() {
248b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Args2 a = new Args2();
249b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    String[] argv = {"-log", "2", "-groups", "unit", "a", "b", "c", "-host", "host2"};
250b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    new JCommander(a, argv);
251b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.verbose.intValue(), 2);
252b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.groups, "unit");
253b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.hosts, Arrays.asList("host2"));
254b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust    Assert.assertEquals(a.parameters, Arrays.asList("a", "b", "c"));
255b2b58d4e3845c1eaa85d7a63cf4632f58e634056Cedric Beust  }
25685866a95d6479be731596a838b6f5e793a341f5bCedric Beust
257fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorEqual() {
258fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorEqual s = new SeparatorEqual();
259bc108076cf3dc506d4e87e004d8c2e413b995adaCedric Beust    String[] argv = { "-log=3", "--longoption=10" };
26085866a95d6479be731596a838b6f5e793a341f5bCedric Beust    new JCommander(s, argv);
26185866a95d6479be731596a838b6f5e793a341f5bCedric Beust    Assert.assertEquals(s.log.intValue(), 3);
262bc108076cf3dc506d4e87e004d8c2e413b995adaCedric Beust    Assert.assertEquals(s.longOption.intValue(), 10);
26385866a95d6479be731596a838b6f5e793a341f5bCedric Beust  }
26485866a95d6479be731596a838b6f5e793a341f5bCedric Beust
265fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorColon() {
266fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorColon s = new SeparatorColon();
267fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-verbose:true" };
268fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(s, argv);
269fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertTrue(s.verbose);
270fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
271fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
272fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorBoth() {
273fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorColon s = new SeparatorColon();
274fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorEqual s2 = new SeparatorEqual();
275fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-verbose:true", "-log=3" };
276fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(new Object[] { s, s2 }, argv);
277fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertTrue(s.verbose);
278fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s2.log.intValue(), 3);
279fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
280fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
281fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  public void separatorMixed1() {
282fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    SeparatorMixed s = new SeparatorMixed();
283fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    String[] argv = { "-long:1", "-level=42" };
284fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    new JCommander(s, argv);
285fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s.l.longValue(), 1l);
286fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust    Assert.assertEquals(s.level.intValue(), 42);
287fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust  }
288fe9b1e59d132e6b10819ae8c9dc3300fb3200ae0Cedric Beust
289426bf32155b30f5c1819a00d88c16944c01e5a52Cedric Beust  public void slashParameters() {
290d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    SlashSeparator a = new SlashSeparator();
291858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    String[] argv = { "/verbose", "/file", "/tmp/a" };
2925f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust    new JCommander(a, argv);
293d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    Assert.assertTrue(a.verbose);
294d556f4a527306a9769776d1cbb2fccac98618bc9Cedric Beust    Assert.assertEquals(a.file, "/tmp/a");
2955f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  }
2965f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust
297b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier  public void inheritance() {
298b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    ArgsInherited args = new ArgsInherited();
299b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    String[] argv = { "-log", "3", "-child", "2" };
300b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    new JCommander(args, argv);
301b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    Assert.assertEquals(args.child.intValue(), 2);
302b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier    Assert.assertEquals(args.log.intValue(), 3);
303b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier  }
304b7e9d9cfe060b02437f867716a8902cc466b0776Guillaume Sauthier
305858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust  public void negativeNumber() {
306858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    Args1 a = new Args1();
307858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    String[] argv = { "-verbose", "-3" };
308858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    new JCommander(a, argv);
309858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust    Assert.assertEquals(a.verbose.intValue(), -3);
310858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust  }
311858c0e61453c4b3a8663d9094f38b6aba493d753Cedric Beust
31272cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust  @Test(expectedExceptions = ParameterException.class)
3135f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  public void requiredMainParameters() {
31472cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    ArgsRequired a = new ArgsRequired();
31572cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    String[] argv = {};
31672cacbaebb04753ddba0c8dc0f9328310e8cb222Cedric Beust    new JCommander(a, argv);
3175f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust  }
3185f57e62a9aad979f2fe17e6d61ce5d05136661dbCedric Beust
319f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan  @Test
320f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan  public void noParseConstructor() {
321f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan    JCommander jCommander = new JCommander(new ArgsMainParameter1());
322f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan    jCommander.usage();
323f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan    // Before fix, this parse would throw an exception, because it calls createDescription, which
324f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan    // was already called by usage(), and can only be called once.
325f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan    jCommander.parse();
326f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan  }
327f2cd60c1f0e475201b9d24b486df920ff1d02ac5Russell Egan
328a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust  public void usageShouldNotChange() {
329a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    JCommander jc = new JCommander(new Args1(), new String[]{"-log", "1"});
330a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    StringBuilder sb = new StringBuilder();
331a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc.usage(sb);
332a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    String expected = sb.toString();
333a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc = new JCommander(new Args1(), new String[]{"-debug", "-log", "2", "-long", "5"});
334a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    sb = new StringBuilder();
335a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    jc.usage(sb);
336a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    String actual = sb.toString();
337a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust    Assert.assertEquals(actual, expected);
338a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust  }
339a76d5b9a334e8600d0bc7b0c51506cf4e67e1a3aCedric Beust
3404c020da73b8b25773bba8553263cf1954c718573Cedric Beust  private void verifyCommandOrdering(String[] commandNames, Object[] commands) {
3414c020da73b8b25773bba8553263cf1954c718573Cedric Beust    CommandMain cm = new CommandMain();
3424c020da73b8b25773bba8553263cf1954c718573Cedric Beust    JCommander jc = new JCommander(cm);
3434c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3444c020da73b8b25773bba8553263cf1954c718573Cedric Beust    for (int i = 0; i < commands.length; i++) {
3454c020da73b8b25773bba8553263cf1954c718573Cedric Beust      jc.addCommand(commandNames[i], commands[i]);
3464c020da73b8b25773bba8553263cf1954c718573Cedric Beust    }
3474c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3484c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Map<String, JCommander> c = jc.getCommands();
3494c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Assert.assertEquals(c.size(), commands.length);
3504c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3514c020da73b8b25773bba8553263cf1954c718573Cedric Beust    Iterator<String> it = c.keySet().iterator();
3524c020da73b8b25773bba8553263cf1954c718573Cedric Beust    for (int i = 0; i < commands.length; i++) {
3534c020da73b8b25773bba8553263cf1954c718573Cedric Beust      Assert.assertEquals(it.next(), commandNames[i]);
3544c020da73b8b25773bba8553263cf1954c718573Cedric Beust    }
3554c020da73b8b25773bba8553263cf1954c718573Cedric Beust  }
3564c020da73b8b25773bba8553263cf1954c718573Cedric Beust
3574c020da73b8b25773bba8553263cf1954c718573Cedric Beust  public void commandsShouldBeShownInOrderOfInsertion() {
3584c020da73b8b25773bba8553263cf1954c718573Cedric Beust    verifyCommandOrdering(new String[] { "add", "commit" },
3594c020da73b8b25773bba8553263cf1954c718573Cedric Beust        new Object[] { new CommandAdd(), new CommandCommit() });
3604c020da73b8b25773bba8553263cf1954c718573Cedric Beust    verifyCommandOrdering(new String[] { "commit", "add" },
3614c020da73b8b25773bba8553263cf1954c718573Cedric Beust        new Object[] { new CommandCommit(), new CommandAdd() });
3624c020da73b8b25773bba8553263cf1954c718573Cedric Beust  }
3634c020da73b8b25773bba8553263cf1954c718573Cedric Beust
364e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  @DataProvider
365e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  public static Object[][] f() {
366e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust    return new Integer[][] {
367e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 5, 1 },
368e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 8, 1 },
369e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 3, 12, 2 },
370e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 8, 12, 2 },
371e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust      new Integer[] { 9, 10, 1 },
372e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust    };
373e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust  }
374e78248b969b0fa0f217ce85e43d39a1d7c055753Cedric Beust
375460998fec3b06bf45b024c645b5b5e854de68c24Cedric Beust  @Test(expectedExceptions = ParameterException.class)
376e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Fail() {
377e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
378e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
379e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
380e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect"
381e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
382e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
383e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
384e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
385e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Success1() {
386e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
387e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
388e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
389e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect", "true"
390e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
391e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
392e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    Assert.assertTrue(arguments.inspect);
393e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
394e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
395e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  public void arity1Success2() {
396e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final Arity1 arguments = new Arity1();
397e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final JCommander jCommander = new JCommander(arguments);
398e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    final String[] commands = {
399e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust        "-inspect", "false"
400e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    };
401e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    jCommander.parse(commands);
402e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust    Assert.assertFalse(arguments.inspect);
403e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust  }
404e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust
405460998fec3b06bf45b024c645b5b5e854de68c24Cedric Beust//  public static void main(String[] args) {
406460998fec3b06bf45b024c645b5b5e854de68c24Cedric Beust//    new JCommanderTest().arity1Fail();
4070dcc308f1c08b831376a3e153e2a1ed1a6166697Cedric Beust//    new JCommanderTest().booleanArity1();
408c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    ArgsLongDescription a = new ArgsLongDescription();
409c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    JCommander jc = new JCommander(a);
410c1d51baff4fb68b90b2f9cdfea512c84ab94eb42Cedric Beust//    jc.usage();
411e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    ArgsPassword a = new ArgsPassword();
412e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    JCommander jc = new JCommander(a);
413e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    jc.parse("-password");
414e5799d36df3ceddb4b71b5f786e343c1c1e0d027Cedric Beust//    System.out.println("Password:" + a.password);
415ed891ffa6a8894150718d11df446269365bed216Cedric Beust//    new JCommanderTest().commandsShouldBeShownInOrderOfInsertion();
4164c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandMain cm = new CommandMain();
4174c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    JCommander jc = new JCommander(cm);
4184c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandAdd add = new CommandAdd();
4194c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.addCommand("add", add);
4204c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    CommandCommit commit = new CommandCommit();
4214c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.addCommand("commit", commit);
4224c020da73b8b25773bba8553263cf1954c718573Cedric Beust//    jc.usage();
423dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust
424dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust//    new JCommanderTest().requiredMainParameters();
425dda1651c0b74aa9e8d225096f1d531871460e692Cedric Beust//    new CommandTest().commandTest1();
426f14a46abd32b378ec56a672a2da0b926c5d7276dCedric Beust//    new DefaultProviderTest().defaultProvider1();
4271eb22b901f731760a479740312337471363febffCedric Beust//    ArgsMainParameter a = new ArgsMainParameter();
4281eb22b901f731760a479740312337471363febffCedric Beust//    new JCommander(a, "ex1:10", "ex2:20");
4291eb22b901f731760a479740312337471363febffCedric Beust//    System.out.println(a.parameters.get(0).host);
4301eb22b901f731760a479740312337471363febffCedric Beust//    new JCommander(new Args1()).usage();
43185866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    Separator a = new Separator();
43276c4b6ace154f18794f9eb0c3d6211101bf426d0Cedric Beust//    String[] argv = new String[] { "-n", "foo" };
43376c4b6ace154f18794f9eb0c3d6211101bf426d0Cedric Beust//    String[] argv = new String[] { "-v", "t" };
43485866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    String[] argv = { "-log=10" };
43585866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    JCommander jc = new JCommander(a, argv);
43685866a95d6479be731596a838b6f5e793a341f5bCedric Beust//    Assert.assertEquals(a.log.intValue(), 10);
437460998fec3b06bf45b024c645b5b5e854de68c24Cedric Beust//  }
438c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust
439c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust  // Tests:
440c3e28e12136391968250719b1627b6b4eaa196cdCedric Beust  // required unparsed parameter
441e9229f961b3a5799f6798369afe26dec7960249Cedric Beust}
442