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