Index: lutinutil/src/test/org/codelutin/util/OptionDefinitionParserTest.java
diff -u lutinutil/src/test/org/codelutin/util/OptionDefinitionParserTest.java:1.1 lutinutil/src/test/org/codelutin/util/OptionDefinitionParserTest.java:1.2
--- lutinutil/src/test/org/codelutin/util/OptionDefinitionParserTest.java:1.1 Mon Nov 19 19:56:47 2007
+++ lutinutil/src/test/org/codelutin/util/OptionDefinitionParserTest.java Sun Dec 2 05:19:03 2007
@@ -1,12 +1,21 @@
+/**
+ * ##% 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.util;
import junit.framework.TestCase;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.util.OptionDefinitionParser.TypeSource.properties;
import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
/**
* OptionDefinitionParser Tester.
@@ -15,26 +24,13 @@
* @version 1.0
* @since
11/18/2007
*/
-@SuppressWarnings({"DuplicateStringLiteralInspection", "HardCodedStringLiteral"})
public class OptionDefinitionParserTest extends TestCase {
- private static final String HERE = new File("").getAbsolutePath();
- private static final String PROPERTIES_FILE_PATH = HERE + "/target/test-classes/";
- static boolean first = false;
-
- static {
- initI18n();
- }
-
- @SuppressWarnings({"HardCodedStringLiteral"})
- static void initI18n() {
- if (!first) {
- String language = System.getProperty("user.language");
- I18n.setRecordFilePath("/tmp/language.properties");
- I18n.init(language, "fr");
- first = true;
- }
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ ParserUtil.initI18n();
}
OptionDefinitionParser parser;
@@ -42,162 +38,114 @@
String optionName;
public void testNoOptions() throws Exception {
- file = initFileMock("testNoOptions.properties", "");
- parser = OptionDefinitionParser.doParse(file);
- assertEquals(0, parser.getDefinitions().length);
+ file = ParserUtil.initFileMock("","testNoOptions.properties", "");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ assertEquals(0, parser.toDefinitions().length);
}
public void testOneOption() throws Exception {
- String optionName;
+ /*String optionName;
optionName = "testOneOptions0";
file = initFileMock(optionName, "--testOneOptions0", "with no args and one alias");
- parser = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ assertEquals(0, parser.getDefinitions()[0].getGroups().length);
optionName = "testOneOptions00";
file = initFileMock(optionName, "--testOneOptions00|-one0", "with no args and two alias");
- parser = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ assertEquals(0, parser.getDefinitions()[0].getGroups().length);
optionName = "testOneOptions000";
file = initFileMock(optionName, "--testOneOptions000|-one0|-o0", "with no args and three alias");
- parser = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ assertEquals(0, parser.getDefinitions()[0].getGroups().length);
optionName = "testOneOptions1";
file = initFileMock(optionName, "--testOneOptions1|-one1 ", "with one group of three constant and two alias");
- parser = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ 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 = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ 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 = OptionDefinitionParser.doParse(file);
+ parser = OptionDefinitionParser.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].getArguments().length);
+ 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 = OptionDefinitionParser.doParse(file);
- printParserDetails();
+ parser = OptionDefinitionParser.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].getArguments().length);
+ assertEquals(14, parser.getDefinitions()[0].getGroups().length);*/
}
- private void printParserDetails() throws IOException {
- Writer writer = new StringWriter();
- parser.printDetails(writer);
- System.out.println(writer.toString());
- writer.flush();
- writer.close();
- }
public void testOneOptionArgumentCardinalite() throws Exception {
optionName = "testArgumentConstantCardinalite00005";
- file = initFileMock(optionName, "-testArgumentConstantCardinalite00005 ", "ok with 1 mandatory constant argument cardinalite : 1,1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentConstantCardinalite00005 ", "ok with 1 mandatory constant argument cardinalite : 1,1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
optionName = "testArgumentConstantCardinalite00015";
- file = initFileMock(optionName, "-testArgumentConstantCardinalite00015 [constant]", "ok with 1 optional constant argument cardinalite : 0,1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentConstantCardinalite00015 [constant]", "ok with 1 optional constant argument cardinalite : 0,1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
optionName = "testArgumentValuedCardinalite00003";
- file = initFileMock(optionName, "-testArgumentValuedCardinalite00003 ", "ok with a 1,+ mandatory valued argument cardinalite : +");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentValuedCardinalite00003 ", "ok with a 1,+ mandatory valued argument cardinalite : +");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
optionName = "testArgumentValuedCardinalite00004";
- file = initFileMock(optionName, "-testArgumentValuedCardinalite00004 ", "ok with a 0,+ mandatory valued argument cardinalite : 1,-1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentValuedCardinalite00004 ", "ok with a 0,+ mandatory valued argument cardinalite : 1,-1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
optionName = "testArgumentValuedCardinalite00010";
- file = initFileMock(optionName, "-testArgumentValuedCardinalite00010 [string:string{0,5}]", "ok with 0,* optional valued argument cardinalite 0,5");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentValuedCardinalite00010 [string:string{0,5}]", "ok with 0,* optional valued argument cardinalite 0,5");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
optionName = "testArgumentValuedCardinalite00011";
- file = initFileMock(optionName, "-testArgumentValuedCardinalite00011 [string:string*]", "ok with a 0,* optional valued argument cardinalite *");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 0);
- }
-
- protected void assertError(int nbOptions, int nbErrors) throws IOException {
- Writer writer = new StringWriter();
- parser.printErrors(writer);
- System.out.println(writer.toString());
- writer.flush();
- writer.close();
- assertEquals(nbErrors != 0, parser.hasFailed());
- assertEquals(nbOptions, parser.getDefinitions().length);
- assertEquals(nbErrors, parser.getErrors().size());
- }
-
- @SuppressWarnings({"HardCodedStringLiteral"})
- protected static File initFileMock(String optionName, String def, String description) throws IOException {
- StringBuilder builder = new StringBuilder();
- builder.append(optionName).append(".definition=").append(def).append("\n");
- builder.append(optionName).append(".description=").append(description).append("\n");
- String content = builder.toString();
- return initFileMock(optionName + ".properties", content);
- }
-
- @SuppressWarnings({"HardCodedStringLiteral"})
- protected static File initFileMock(String optionName, String def, String description, String def2, String description2) throws IOException {
- StringBuilder builder = new StringBuilder();
- builder.append(optionName).append(".definition=").append(def).append("\n");
- builder.append(optionName).append(".description=").append(description).append("\n");
- builder.append(optionName).append("2.definition=").append(def2).append("\n");
- builder.append(optionName).append("2.description=").append(description2).append("\n");
- String content = builder.toString();
- return initFileMock(optionName + ".properties", content);
- }
- protected static File initFileMock(String s, String content) throws IOException {
- File file = new File(PROPERTIES_FILE_PATH + s);
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
- }
- file.createNewFile();
- FileUtil.writeString(file, content);
- file.deleteOnExit();
- return file;
+ file = ParserUtil.initFileMock(optionName, "-testArgumentValuedCardinalite00011 [string:string*]", "ok with a 0,* optional valued argument cardinalite *");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 0);
}
}
Index: lutinutil/src/test/org/codelutin/util/OptionDefinitionParserBadTest.java
diff -u lutinutil/src/test/org/codelutin/util/OptionDefinitionParserBadTest.java:1.1 lutinutil/src/test/org/codelutin/util/OptionDefinitionParserBadTest.java:1.2
--- lutinutil/src/test/org/codelutin/util/OptionDefinitionParserBadTest.java:1.1 Mon Nov 19 19:56:47 2007
+++ lutinutil/src/test/org/codelutin/util/OptionDefinitionParserBadTest.java Sun Dec 2 05:19:03 2007
@@ -1,12 +1,21 @@
+/**
+ * ##% 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.util;
import junit.framework.TestCase;
-import static org.codelutin.util.OptionDefinitionParserTest.initFileMock;
+import static org.codelutin.util.OptionDefinitionParser.TypeSource.properties;
import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
/**
* OptionDefinitionParser Tester.
@@ -19,8 +28,10 @@
public class OptionDefinitionParserBadTest extends TestCase {
- static {
- OptionDefinitionParserTest.initI18n();
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ ParserUtil.initI18n();
}
OptionDefinitionParser parser;
@@ -30,208 +41,197 @@
public void testOneOptionNoDescription() throws Exception {
optionName = "testOneOptionsNoDescription";
- file = initFileMock(optionName, "-testNoDescription", "");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testNoDescription", "");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testOneOptionsNoDefinition";
- file = initFileMock(optionName, "", "no definition!");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "", "no definition!");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
}
public void testOneOptionBadAlias() throws Exception {
optionName = "testOneOptionsBad0";
- file = initFileMock(optionName, "testOneOption", "with no alias (unvalid one)");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "testOneOption", "with no alias (unvalid one)");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testOneOptionsBad00";
- file = initFileMock(optionName, "-testOneOptionsBad00|t", "bad alias (no - at prefix)");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testOneOptionsBad00|t", "bad alias (no - at prefix)");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testOneOptionsBad000";
- file = initFileMock(optionName, "-testOneOptionsBad00|-t|-t2|-t3|-t4", "too much alias");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testOneOptionsBad00|-t|-t2|-t3|-t4", "too much alias");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testOneOptionsBad0000";
- file = initFileMock(optionName, "-testOneOptionsBad00|-t|-t2|t3|-t4|-t5|t55", "too much alias and bad one");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testOneOptionsBad00|-t|-t2|t3|-t4|-t5|t55", "too much alias and bad one");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 3);
optionName = "testOneOptionsBad00000";
- file = initFileMock(optionName, "-testOneOptionsBad000 {0,2}", "ok with no args ", "-testOneOptionsBad000 {0,4}", "duplicated alias -testOneOptionsBad000");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 1);
+ file = ParserUtil.initFileMock(optionName, "-testOneOptionsBad000 {0,2}", "ok with no args ", "-testOneOptionsBad000 {0,4}", "duplicated alias -testOneOptionsBad000");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 1);
optionName = "testOneOptionsBad000000";
- file = initFileMock(optionName, "-testOneOptionsBad000|-t0", "ok with no args ", "-testOneOptionsBad001|-t0", "duplicated alias -t0");
- parser = OptionDefinitionParser.doParse(file);
- assertError(1, 1);
+ file = ParserUtil.initFileMock(optionName, "-testOneOptionsBad000|-t0", "ok with no args ", "-testOneOptionsBad001|-t0", "duplicated alias -t0");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 1, 1);
}
public void testOneOptionBadCardinalite() throws Exception {
optionName = "testBadCardinalite0";
- file = initFileMock(optionName, "-testBadCardinalite0 {-1,1}", "with a bad min card -1 ");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadCardinalite0 {-1,1}", "with a bad min card -1 ");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadCardinalite1";
- file = initFileMock(optionName, "-testBadCardinalite1 {1,-2}", "with a bad max card -2 ");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadCardinalite1 {1,-2}", "with a bad max card -2 ");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadCardinalite2";
- file = initFileMock(optionName, "-testBadCardinalite2 {1,0}", "with a bad max card 0 < min 1 ");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadCardinalite2 {1,0}", "with a bad max card 0 < min 1 ");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadCardinalite3";
- file = initFileMock(optionName, "-testBadCardinalite3 {5,3}", "with a bad max < min ");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadCardinalite3 {5,3}", "with a bad max < min ");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
}
public void testOneOptionBadConstantArgumentCardinalite() throws Exception {
optionName = "testBadArgumentConstantCardinalite0";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite0 ", "with a max cardinalite of an argument to zero");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite0 ", "with a max cardinalite of an argument to zero");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentConstantCardinalite00";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00 ", "with a min cardinalite of an argument < 0");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00 ", "with a min cardinalite of an argument < 0");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentConstantCardinalite000";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite000 ", "with a max cardinalite of an argument < -1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite000 ", "with a max cardinalite of an argument < -1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentConstantCardinalite0000";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite0000 ", "with a max cardinalite of an argument < min");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite0000 ", "with a max cardinalite of an argument < min");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentConstantCardinalite00000";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00000 ", "with a none mandatory constant argument cardinalite 0,1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00000 ", "with a none mandatory constant argument cardinalite 0,1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00001";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00001 ", "with a none mandatory constant argument cardinalite *");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00001 ", "with a none mandatory constant argument cardinalite *");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00002";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00002 ", "with a none 1,1 mandatory constant argument cardinalite : 1,2");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00002 ", "with a none 1,1 mandatory constant argument cardinalite : 1,2");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00003";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00003 ", "with a none 1,1 mandatory constant argument cardinalite : +");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00003 ", "with a none 1,1 mandatory constant argument cardinalite : +");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00004";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00004 ", "with a none 1,1 mandatory constant argument cardinalite : 1,-1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00004 ", "with a none 1,1 mandatory constant argument cardinalite : 1,-1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00010";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00010 [constant{0,5}]", "with a none 0,1 optional constant argument cardinalite 0,5");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00010 [constant{0,5}]", "with a none 0,1 optional constant argument cardinalite 0,5");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00011";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00011 [constant*]", "with a none 0,1 optional constant argument cardinalite *");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00011 [constant*]", "with a none 0,1 optional constant argument cardinalite *");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00012";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00012 [constant{1,2}]", "with a none 0,1 optional constant argument cardinalite : 1,2");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00012 [constant{1,2}]", "with a none 0,1 optional constant argument cardinalite : 1,2");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00013";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00013 [constant+]", "with a none 0,1 optional constant argument cardinalite : +");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00013 [constant+]", "with a none 0,1 optional constant argument cardinalite : +");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentConstantCardinalite00014";
- file = initFileMock(optionName, "-testBadArgumentConstantCardinalite00014 [constant{1,-1}]", "with a none 0,1 optional constant argument cardinalite : 1,-1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentConstantCardinalite00014 [constant{1,-1}]", "with a none 0,1 optional constant argument cardinalite : 1,-1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
}
public void testOneOptionBadValuedArgumentCardinalite() throws Exception {
optionName = "testBadArgumentValuedCardinalite0";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite0 ", "with a max valued cardinalite of an argument to zero");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite0 ", "with a max valued cardinalite of an argument to zero");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentValuedCardinalite00";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00 ", "with a min valued cardinalite of an argument < 0");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00 ", "with a min valued cardinalite of an argument < 0");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 2);
optionName = "testBadArgumentValuedCardinalite000";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalit000 ","with a none 1,+ mandatory valued argument cardinalite cardinalite 0,-1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalit000 ", "with a none 1,+ mandatory valued argument cardinalite cardinalite 0,-1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite0000";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite0000 ", "with a max valued cardinalite of an argument < min");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite0000 ", "with a max valued cardinalite of an argument < min");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite00000";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00000 ", "with a none 1,+ mandatory valued argument cardinalite 0,1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00000 ", "with a none 1,+ mandatory valued argument cardinalite 0,1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite00001";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00001 ", "with a none 1,+ mandatory valued argument cardinalite *");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00001 ", "with a none 1,+ mandatory valued argument cardinalite *");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite00002";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00002 ", "with a none 1,+ mandatory valued argument cardinalite : 1,2");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00002 ", "with a none 1,+ mandatory valued argument cardinalite : 1,2");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testArgumentValuedCardinalite00012";
- file = initFileMock(optionName, "-testArgumentValuedCardinalite00012 [string:string{1,2}]", "with a none 0,* optional valued argument cardinalite : 1,2");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testArgumentValuedCardinalite00012 [string:string{1,2}]", "with a none 0,* optional valued argument cardinalite : 1,2");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite00013";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00013 [string:string+]", "with a none 0,* optional valued argument cardinalite : +");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00013 [string:string+]", "with a none 0,* optional valued argument cardinalite : +");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
optionName = "testBadArgumentValuedCardinalite00014";
- file = initFileMock(optionName, "-testBadArgumentValuedCardinalite00014 [string:string{1,-1}]", "with a none 0,* optional valued argument cardinalite : 1,-1");
- parser = OptionDefinitionParser.doParse(file);
- assertError(0, 1);
-
- }
+ file = ParserUtil.initFileMock(optionName, "-testBadArgumentValuedCardinalite00014 [string:string{1,-1}]", "with a none 0,* optional valued argument cardinalite : 1,-1");
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, 0, 1);
- protected void assertError(int nbOptions, int nbErrors) throws IOException {
- Writer writer = new StringWriter();
- parser.printErrors(writer);
- System.out.println(writer.toString());
- writer.flush();
- writer.close();
- assertEquals(nbErrors != 0, parser.hasFailed());
- assertEquals(nbOptions, parser.getDefinitions().length);
- assertEquals(nbErrors, parser.getErrors().size());
}
}
\ No newline at end of file
Index: lutinutil/src/test/org/codelutin/util/ParserUtil.java
diff -u /dev/null lutinutil/src/test/org/codelutin/util/ParserUtil.java:1.1
--- /dev/null Sun Dec 2 05:19:10 2007
+++ lutinutil/src/test/org/codelutin/util/ParserUtil.java Sun Dec 2 05:19:01 2007
@@ -0,0 +1,140 @@
+/**
+ * ##% 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.util;
+
+import junit.framework.Assert;
+import org.codelutin.i18n.I18n;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionArgumentA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionGroupArgumentA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionParserA;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+/**
+ * Some usefull methods for testing OptionPArser and others.
+ *
+ * @author chemit
+ */
+
+public class ParserUtil extends Assert {
+
+ static boolean first;
+ static final String HERE = new File("").getAbsolutePath();
+ static final String PROPERTIES_FILE_PATH = HERE + "/target/test-classes/";
+
+ static void initI18n() {
+ if (!first) {
+ String language = System.getProperty("user.language");
+ I18n.setRecordFilePath("/tmp/language.properties");
+ I18n.init(language, "fr");
+ first = true;
+
+ }
+ }
+
+ protected static void assertParserEquals(OptionParserA expected, OptionParserA found) {
+ Assert.assertNotNull(found);
+ int length = expected.options().length;
+ assertEquals(length, found.options().length);
+ if (length > 0) {
+ for (int i = 0; i < length; i++) {
+ assertOptionEquals(expected.options()[i], found.options()[i]);
+ }
+ }
+ }
+
+ protected static void assertOptionEquals(OptionA expected, OptionA found) {
+ assertEquals(expected.key(), found.key());
+ assertEquals(expected.description(), found.description());
+ assertEquals(expected.min(), found.min());
+ assertEquals(expected.max(), found.max());
+ int length = expected.groups().length;
+ assertEquals(length, found.groups().length);
+ if (length > 0) {
+ for (int i = 0; i < length; i++) {
+ assertGroupEquals(found.groups()[i], expected.groups()[i]);
+ }
+ }
+ }
+
+ protected static void assertGroupEquals(OptionGroupArgumentA expected,
+ OptionGroupArgumentA found) {
+ assertEquals(expected.min(), found.min());
+ assertEquals(expected.max(), found.max());
+ assertEquals(expected.pos(), found.pos());
+ int length = expected.arguments().length;
+ assertEquals(length, found.arguments().length);
+ if (length > 0) {
+ for (int i = 0; i < length; i++) {
+ assertArgumentEquals(found.arguments()[i], expected.arguments()[i]);
+ }
+ }
+ }
+
+ protected static void assertArgumentEquals(OptionArgumentA expected,
+ OptionArgumentA found) {
+ assertEquals(expected.min(), found.min());
+ assertEquals(expected.max(), found.max());
+ assertEquals(expected.key(), found.key());
+ assertEquals(expected.type(), found.type());
+ assertEquals(expected.valueType(), found.valueType());
+ }
+
+ protected static void assertError(OptionDefinitionParser parser, int nbOptions, int nbErrors) throws IOException {
+ Writer writer = new StringWriter();
+ parser.printErrors(writer);
+ System.out.println(writer.toString());
+ writer.flush();
+ writer.close();
+ assertEquals(nbErrors != 0, parser.hasFailed());
+ assertEquals(nbOptions, parser.safeContexts.length);
+ assertEquals(nbErrors, parser.errors.size());
+ }
+
+
+ protected static File initFileMock(String optionName, String... defs) throws IOException {
+ assertTrue(defs.length % 2 == 0);
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < defs.length; i += 2) {
+ String definition = defs[i];
+ String description = defs[i + 1];
+ builder.append(optionName);
+ if (i > 0) {
+ builder.append(i);
+ }
+ builder.append(".definition=").append(definition).append("\n").append(optionName);
+ if (i > 0) {
+ builder.append(i);
+ }
+ builder.append(".description=").append(description).append("\n");
+ }
+ String content = builder.toString();
+ return initFileMock0(PROPERTIES_FILE_PATH, optionName + ".properties", content);
+ }
+
+
+ protected static File initFileMock0(String prefix, String s, String content) throws IOException {
+ File file = new File(prefix + s);
+ if (!file.getParentFile().exists()) {
+ file.getParentFile().mkdirs();
+ }
+ file.createNewFile();
+ FileUtil.writeString(file, content);
+ file.deleteOnExit();
+ return file;
+ }
+}
Index: lutinutil/src/test/org/codelutin/util/OptionDefinitionParserWalkerTest.java
diff -u /dev/null lutinutil/src/test/org/codelutin/util/OptionDefinitionParserWalkerTest.java:1.1
--- /dev/null Sun Dec 2 05:19:10 2007
+++ lutinutil/src/test/org/codelutin/util/OptionDefinitionParserWalkerTest.java Sun Dec 2 05:19:03 2007
@@ -0,0 +1,96 @@
+/**
+ * ##% 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.util;
+
+import junit.framework.TestCase;
+import static org.codelutin.util.OptionDefinitionParser.TypeSource.properties;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionArgumentA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionGroupArgumentA;
+import org.codelutin.util.OptionParserAnnotationHelper.OptionParserA;
+
+import java.io.File;
+
+@OptionParserA(
+ options = {@OptionA(
+ key = "option",
+ alias = {"--keyOne", "-1"},
+ min = 1, max = 2,
+ description = "--keyOne|-1 {1,2} ",
+ groups = @OptionGroupArgumentA(min = 1, max = 1, pos = 0,
+ arguments = {
+ @OptionArgumentA(key = "arguOne", type = OptionArgumentType.valued, valueType = OptionArgumentValueType._boolean, min = 123, max = 143),
+ @OptionArgumentA(key = "arguTwo", type = OptionArgumentType.namedAndValued, valueType = OptionArgumentValueType._class)}
+ )
+ ), @OptionA(
+ key = "option2",
+ alias = {"--keyTwo", "-2"},
+ min = 1, max = 2,
+ description = "--keyTwo|-2 {1,2} ",
+ groups = @OptionGroupArgumentA(min = 1, max = 1, pos = 0,
+ arguments = {
+ @OptionArgumentA(key = "arguOne2", type = OptionArgumentType.valued, valueType = OptionArgumentValueType._boolean, min = 123, max = 143),
+ @OptionArgumentA(key = "arguTwo2", type = OptionArgumentType.namedAndValued, valueType = OptionArgumentValueType._class),
+ @OptionArgumentA(key = "arguTwo3", type = OptionArgumentType.namedAndValued, valueType = OptionArgumentValueType._file)}
+ )
+ )}
+)
+/**
+ * OptionDefinitionParserWalker Tester.
+ *
+ * @author chemit
+ * @version 1.0
+ * @since 11/18/2007
+ */
+public class OptionDefinitionParserWalkerTest extends TestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ ParserUtil.initI18n();
+ }
+
+ OptionDefinitionParser parser;
+ File file;
+
+ public void testToAnnotationWalker() throws Exception {
+ OptionParserA excepted = getClass().getAnnotation(OptionParserA.class);
+
+ OptionA[] options = excepted.options();
+ int size = options.length;
+ file = ParserUtil.initFileMock("option", options[0].description(), options[0].description(), options[1].description(), options[1].description());
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, size, 0);
+ OptionParserA found = new ToAnnotationWalker().run(parser.safeContexts);
+ ParserUtil.assertParserEquals(excepted, found);
+ OptionParserA found2 = parser.toAnnotation();
+ ParserUtil.assertParserEquals(excepted, found2);
+
+ }
+
+ public void testToDefinitionWalker() throws Exception {
+ OptionParserA excepted = getClass().getAnnotation(OptionParserA.class);
+
+ OptionA[] options = excepted.options();
+ int size = options.length;
+ file = ParserUtil.initFileMock("option", options[0].description(), options[0].description(), options[1].description(), options[1].description());
+ parser = OptionDefinitionParser.doParse(properties, file);
+ ParserUtil.assertError(parser, size, 0);
+ //OptionDefinition[] found = new ToDefinitionWalker().run(parser.safeContexts);
+ //OptionDefinition[] found2 = parser.toDefinitions();
+ //TODO Make a assertEquals between OptionDefinition and OptionA
+ //ParserUtil.assertParserEquals(excepted, found);
+ }
+
+
+}
\ No newline at end of file