Index: lutinutil/src/test/org/codelutin/option/def/DefinitionParserTest.java diff -u /dev/null lutinutil/src/test/org/codelutin/option/def/DefinitionParserTest.java:1.1 --- /dev/null Sun Dec 30 22:51:23 2007 +++ lutinutil/src/test/org/codelutin/option/def/DefinitionParserTest.java Sun Dec 30 22:51:18 2007 @@ -0,0 +1,145 @@ +/** + * ##% Copyright (C) 2002, 2007 Code Lutin This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. This program is + * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. ##%* + */ +package org.codelutin.option.def; + +import junit.framework.TestCase; +import org.codelutin.option.ParserUtilForTest; +import static org.codelutin.option.def.DefinitionParserUtil.TypeSource.properties; +import org.codelutin.option.def.DefinitionParser; + +import java.io.File; + +/** + * DefinitionParser Tester. + * + * @author chemit + * @version 1.0 + * @since
11/18/2007
+ */ +public class DefinitionParserTest extends TestCase { + + DefinitionParser parser; + File file; + String optionName; + + public void testNoOptions() throws Exception { + file = ParserUtilForTest.initFileMock("", "option", "testNoOptions.properties"); + parser = DefinitionParser.doParse(properties, file); + assertTrue(parser.getOptions().length == 0); + } + + public void testOneOption() throws Exception { + + /*STRING optionName; + optionName = "testOneOptions0"; + file = initFileMock(optionName, "--testOneOptions0", "with no args and one alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(1, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals(0, parser.getDefinitions()[0].getGroups().length); + + optionName = "testOneOptions00"; + file = initFileMock(optionName, "--testOneOptions00|-one0", "with no args and two alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(2, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one0", parser.getDefinitions()[0].getAlias()[1]); + assertEquals(0, parser.getDefinitions()[0].getGroups().length); + + optionName = "testOneOptions000"; + file = initFileMock(optionName, "--testOneOptions000|-one0|-o0", "with no args and three alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(3, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one0", parser.getDefinitions()[0].getAlias()[1]); + assertEquals("-o0", parser.getDefinitions()[0].getAlias()[2]); + assertEquals(0, parser.getDefinitions()[0].getGroups().length); + + optionName = "testOneOptions1"; + file = initFileMock(optionName, "--testOneOptions1|-one1 ", "with one group of three constant and two alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(2, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one1", parser.getDefinitions()[0].getAlias()[1]); + assertEquals(3, parser.getDefinitions()[0].getGroups().length); + + + optionName = "testOneOptions2"; + file = initFileMock(optionName, "--testOneOptions2|-one2 ", "with one group of 5 valued args and two alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(2, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one2", parser.getDefinitions()[0].getAlias()[1]); + assertEquals(5, parser.getDefinitions()[0].getGroups().length); + + optionName = "testOneOptions3"; + file = initFileMock(optionName, "--testOneOptions3|-one3 ", "with one group of 6 namedAndValued args and two alias"); + parser = DefinitionParser.doParse(properties, file); + assertEquals(1, parser.getDefinitions().length); + assertEquals(2, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one3", parser.getDefinitions()[0].getAlias()[1]); + assertEquals(6, parser.getDefinitions()[0].getGroups().length); + + optionName = "testOneOptions4"; + file = initFileMock(optionName, "--testOneOptions4|-one4 ", "with one group of 14 args (3 constants, 5 valued, 6 namedAndValued) and two alias"); + parser = DefinitionParser.doParse(properties, file); + //printParserDetails(); + + assertEquals(1, parser.getDefinitions().length); + assertEquals(2, parser.getDefinitions()[0].getAlias().length); + assertEquals("--" + optionName, parser.getDefinitions()[0].getAlias()[0]); + assertEquals("-one4", parser.getDefinitions()[0].getAlias()[1]); + assertEquals(14, parser.getDefinitions()[0].getGroups().length);*/ + } + + public void testOneOptionArgumentCardinalite() throws Exception { + + optionName = "testArgumentConstantCardinalite00005"; + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentConstantCardinalite00005 "); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + + optionName = "testArgumentConstantCardinalite00015"; + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentConstantCardinalite00015 [constant]"); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + + optionName = "testArgumentValuedCardinalite00003"; + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentValuedCardinalite00003 "); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + + optionName = "testArgumentValuedCardinalite00004"; + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentValuedCardinalite00004 "); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + + optionName = "testArgumentValuedCardinalite00010"; + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentValuedCardinalite00010 [string:String{0,5}]"); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + + optionName = "testArgumentValuedCardinalite00011"; + + file = ParserUtilForTest.initFileMock(optionName, "option", "-testArgumentValuedCardinalite00011 [string:String*]"); + parser = DefinitionParser.doParse(properties, file); + ParserUtilForTest.assertError(parser, 1, 0); + } + +} Index: lutinutil/src/test/org/codelutin/option/def/DefinitionParserBadOptionTest.java diff -u /dev/null lutinutil/src/test/org/codelutin/option/def/DefinitionParserBadOptionTest.java:1.1 --- /dev/null Sun Dec 30 22:51:23 2007 +++ lutinutil/src/test/org/codelutin/option/def/DefinitionParserBadOptionTest.java Sun Dec 30 22:51:18 2007 @@ -0,0 +1,202 @@ +/** + * ##% Copyright (C) 2002, 2007 Code Lutin This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. This program is + * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. ##%* + */ +package org.codelutin.option.def; + +import junit.framework.TestCase; +import org.codelutin.option.ParserUtilForTest; +import static org.codelutin.option.def.DefinitionParserUtil.TypeSource.properties; +import org.codelutin.option.def.DefinitionParser; + +import java.io.File; +import java.io.IOException; + +/** + * DefinitionParser Tester. + * + * @author chemit + * @version 1.0 + * @since
11/18/2007
+ */ +public class DefinitionParserBadOptionTest extends TestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + ParserUtilForTest.initI18n(); + } + + DefinitionParser parser; + File file; + String key; + + public void testOneOptionBadAlias() throws Exception { + + initAndParse("testOneOption"); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testOneOptionsBad00|t"); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testOneOptionsBad00|-t|-t2|-t3|-t4"); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testOneOptionsBad00|-t|-t2|t3|-t4|-t5|t55"); + ParserUtilForTest.assertError(parser, 0, 3); + + initAndParse("-testOneOptionsBad000 {0,2}", "-testOneOptionsBad000 {0,4}"); + ParserUtilForTest.assertError(parser, 1, 1); + + initAndParse("-testOneOptionsBad000|-t0", "-testOneOptionsBad001|-t0"); + ParserUtilForTest.assertError(parser, 1, 1); + } + + public void testOneOptionBadCardinalite() throws Exception { + + initAndParse("-testBadCardinalite0 {-1,1}"); + ParserUtilForTest.assertError(parser, 1, 0); + + initAndParse("-testBadCardinalite1 {1,-2}"); + ParserUtilForTest.assertError(parser, 1, 0); + + initAndParse("-testBadCardinalite2 {1,0}"); + ParserUtilForTest.assertError(parser, 0, 2); + + initAndParse("-testBadCardinalite3 {5,3}"); + ParserUtilForTest.assertError(parser, 0, 1); + + } + + public void testOneOptionBadConstantArgumentCardinalite() throws Exception { + key = "testBadArgumentConstantCardinalite0"; + initAndParse("-testBadArgumentConstantCardinalite0 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00"; + initAndParse("-testBadArgumentConstantCardinalite00 "); + + ParserUtilForTest.assertError(parser, 1, 0); + + key = "testBadArgumentConstantCardinalite000"; + initAndParse("-testBadArgumentConstantCardinalite000 "); + + ParserUtilForTest.assertError(parser, 1, 0); + + key = "testBadArgumentConstantCardinalite0000"; + initAndParse("-testBadArgumentConstantCardinalite0000 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00000"; + initAndParse("-testBadArgumentConstantCardinalite00000 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00001"; + initAndParse("-testBadArgumentConstantCardinalite00001 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00002"; + initAndParse("-testBadArgumentConstantCardinalite00002 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00003"; + initAndParse("-testBadArgumentConstantCardinalite00003 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00004"; + initAndParse("-testBadArgumentConstantCardinalite00004 "); + + ParserUtilForTest.assertError(parser, 1, 0); + + key = "testBadArgumentConstantCardinalite00010"; + initAndParse("-testBadArgumentConstantCardinalite00010 [constant{0,5}]"); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00011"; + initAndParse("-testBadArgumentConstantCardinalite00011 [constant*]"); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00012"; + initAndParse("-testBadArgumentConstantCardinalite00012 [constant{1,2}]"); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00013"; + initAndParse("-testBadArgumentConstantCardinalite00013 [constant+]"); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentConstantCardinalite00014"; + initAndParse("-testBadArgumentConstantCardinalite00014 [constant{1,-1}]"); + + ParserUtilForTest.assertError(parser, 1, 0); + } + + public void testOneOptionBadValuedArgumentCardinalite() throws Exception { + key = "testBadArgumentValuedCardinalite0"; + initAndParse("-testBadArgumentValuedCardinalite0 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite00"; + initAndParse("-testBadArgumentValuedCardinalite00 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite000"; + initAndParse("-testBadArgumentValuedCardinalit000 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite0000"; + initAndParse("-testBadArgumentValuedCardinalite0000 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite00000"; + initAndParse("-testBadArgumentValuedCardinalite00000 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite00001"; + initAndParse("-testBadArgumentValuedCardinalite00001 "); + + ParserUtilForTest.assertError(parser, 0, 1); + + key = "testBadArgumentValuedCardinalite00002"; + initAndParse("-testBadArgumentValuedCardinalite00002 "); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testArgumentValuedCardinalite00012 [string:String{1,2}]"); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testBadArgumentValuedCardinalite00013 [string:String+]"); + ParserUtilForTest.assertError(parser, 0, 1); + + initAndParse("-testBadArgumentValuedCardinalite00014 [string:String{1,-1}]"); + ParserUtilForTest.assertError(parser, 0, 1); + + } + + private void initAndParse(String... defs) throws IOException { + key = getName() + System.currentTimeMillis(); + file = ParserUtilForTest.initFileMock(key, "option", defs); + parser = DefinitionParser.doParse(properties, file); + } +} \ No newline at end of file