Index: maven-commandline-plugin/src/test/org/codelutin/util/GeneratorTest.java diff -u maven-commandline-plugin/src/test/org/codelutin/util/GeneratorTest.java:1.4 maven-commandline-plugin/src/test/org/codelutin/util/GeneratorTest.java:1.5 --- maven-commandline-plugin/src/test/org/codelutin/util/GeneratorTest.java:1.4 Sun Dec 2 05:09:36 2007 +++ maven-commandline-plugin/src/test/org/codelutin/util/GeneratorTest.java Wed Dec 5 03:05:36 2007 @@ -1,7 +1,6 @@ package org.codelutin.util; -import junit.framework.TestCase; -import org.codelutin.util.OptionParserAnnotationHelper.OptionParserA; +import org.codelutin.util.OptionParserAnnotationHelper.ApplicationA; import java.io.File; import java.io.StringWriter; @@ -14,7 +13,7 @@ * @version 1.0 * @since
11/16/2007*/ -public class GeneratorTest extends TestCase { +public class GeneratorTest extends junit.framework.TestCase { private static final String PROJECT_NAME = GeneratorTest.class.getSimpleName(); private static final String HERE = new File("").getAbsolutePath(); @@ -26,19 +25,20 @@ @Override protected void setUp() throws Exception { super.setUp(); - ParserUtil.initI18n(); + //ParserUtil.initI18n(); } public void testLaunch() throws Exception { Generator goal = new Generator(); - goal.propertiesFile = new File(PROPERTIES_FILE_PATH); + goal.source = new File(PROPERTIES_FILE_PATH); goal.parserFullyQualifiedName = PARSER_NAME; goal.projectName = PROJECT_NAME; goal.out = new File(OUT_PATH); goal.rstFilePath = new File(RST_FILE_NAME); goal.generateOptionImplementation = true; + goal.typeSource = "properties"; goal.showErrors = true; goal.execute(); @@ -51,10 +51,9 @@ Generator goal = new Generator(); - goal.propertiesFile = new File(PROPERTIES_FILE_PATH); + goal.source = new File(PROPERTIES_FILE_PATH); goal.parserFullyQualifiedName = PARSER_NAME + "_details"; goal.projectName = PROJECT_NAME + "_details"; - goal.showDetails = true; goal.out = new File(OUT_PATH); goal.rstFilePath = new File(RST_FILE_NAME + "_details"); goal.execute(); @@ -68,12 +67,11 @@ Generator goal = new Generator(); - goal.propertiesFile = new File(PROPERTIES_FILE_PATH); - //goal.factoryFullyQualifiedName = FACTORY_NAME + "_detailsAndErrors"; + goal.source = new File(PROPERTIES_FILE_PATH); goal.parserFullyQualifiedName = PARSER_NAME + "_detailsAndErrors"; goal.projectName = PROJECT_NAME + "_detailsAndErrors"; - goal.showDetails = true; goal.showErrors = true; + goal.generateOptionImplementation= true; goal.out = new File(OUT_PATH); goal.rstFilePath = new File(RST_FILE_NAME + "_detailsAndErrors"); goal.execute(); @@ -88,26 +86,20 @@ parser = newParser(PARSER_NAME, getClass().getClassLoader()); - System.out.println(parser); - - assertNotNull(parser); - OptionParserA annotation; - annotation = parser.getClass().getAnnotation(OptionParserA.class); + ApplicationA annotation; + annotation = parser.getClass().getAnnotation(ApplicationA.class); assertNotNull(annotation); Writer writer = new StringWriter(); parser.printUsage(writer, parser.getClass().getSimpleName()); System.out.println(writer); writer.flush(); writer.close(); - System.out.println(annotation); - writer = new StringWriter(); - parser.printDetails(writer); - System.out.println(writer); - writer.flush(); - writer.close(); + parser.doParse("argument00"); + + assertFalse(parser.hasFailed()); } public static OptionParser newParser(String className, ClassLoader loader) { Index: maven-commandline-plugin/src/test/org/codelutin/util/AnnotationConverterTest.java diff -u maven-commandline-plugin/src/test/org/codelutin/util/AnnotationConverterTest.java:1.1 maven-commandline-plugin/src/test/org/codelutin/util/AnnotationConverterTest.java:1.2 --- maven-commandline-plugin/src/test/org/codelutin/util/AnnotationConverterTest.java:1.1 Sun Dec 2 05:09:37 2007 +++ maven-commandline-plugin/src/test/org/codelutin/util/AnnotationConverterTest.java Wed Dec 5 03:05:37 2007 @@ -21,9 +21,9 @@ import javassist.bytecode.annotation.Annotation; import junit.framework.TestCase; 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 org.codelutin.util.OptionParserAnnotationHelper.ArgumentA; +import org.codelutin.util.OptionParserAnnotationHelper.GroupArgumentA; +import org.codelutin.util.OptionParserAnnotationHelper.ApplicationA; import java.io.File; @@ -34,7 +34,7 @@ * @author chemit */ -@OptionParserA( +@OptionParserAnnotationHelper.ApplicationA( options = {@OptionA( key = "keyOne", alias = {"--keyOne", "-1"}, @@ -42,10 +42,10 @@ //definition = "definition", description = "description", groups = { - @OptionGroupArgumentA(min = 5, max = 15, pos = 10, + @GroupArgumentA(min = 5, max = 15, pos = 10, arguments = { - @OptionArgumentA(key = "arguOne", type = OptionArgumentType.constant, valueType = OptionArgumentValueType._boolean, min = 123, max = 143), - @OptionArgumentA(key = "arguTwo", type = OptionArgumentType.namedAndValued, valueType = OptionArgumentValueType._class)} + @ArgumentA(key = "arguOne", type = OptionArgumentType.constant, valueType = OptionArgumentValueType._boolean, min = 123, max = 143), + @ArgumentA(key = "arguTwo", type = OptionArgumentType.namedAndValued, valueType = OptionArgumentValueType._class)} )} )} ) @@ -58,10 +58,10 @@ file.delete(); } - OptionParserA anno = getClass().getAnnotation(OptionParserA.class); + ApplicationA anno = getClass().getAnnotation(ApplicationA.class); ClassPool pool = new ClassPool(null); - pool.appendClassPath(new ClassClassPath(OptionParserA.class)); + pool.appendClassPath(new ClassClassPath(OptionParserAnnotationHelper.ApplicationA.class)); pool.appendClassPath(out.getAbsolutePath()); CtClass clazz = pool.makeClass("org.codelutin.util.MyClass"); @@ -78,7 +78,7 @@ clazz.detach(); Class> theClazz = pool.get(clazz.getName()).toClass(); - ParserUtil.assertParserEquals(anno, theClazz.getAnnotation(OptionParserA.class)); + ParserUtil.assertParserEquals(anno, theClazz.getAnnotation(ApplicationA.class)); } Index: maven-commandline-plugin/src/test/org/codelutin/util/ParserTest.java diff -u /dev/null maven-commandline-plugin/src/test/org/codelutin/util/ParserTest.java:1.1 --- /dev/null Wed Dec 5 03:05:42 2007 +++ maven-commandline-plugin/src/test/org/codelutin/util/ParserTest.java Wed Dec 5 03:05:37 2007 @@ -0,0 +1,220 @@ +package org.codelutin.util; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + +/** + * OptionDefinitionParser Tester. + * + * @author chemit + * @version 1.0 + * @since
11/16/2007+ */ +public class ParserTest extends junit.framework.TestCase { + + private static final String PROJECT_NAME = GeneratorTest.class.getSimpleName(); + private static final String HERE = new File("").getAbsolutePath(); + private static final String OUT_PATH = new File(HERE, "target/test-classes").getAbsolutePath(); + private static final String PARSER_NAME = "org.codelutin.util.CodeLutinUtilOptionParser"; + private static final String PROPERTIES_FILE_PATH = HERE + "/src/test/testOptions2.properties"; + //private static final String RST_FILE_NAME = HERE + "/target/gen/site/fr/rst/GeneratorTest.rst"; + + static OptionParser parser; + + @Override + protected void setUp() throws Exception { + super.setUp(); + //ParserUtil.initI18n(); + if (parser == null) { + initParser(); + assertNotNull(parser); + } + } + + public void testLaunch() throws Exception { + + } + + public void testOptions() throws Exception { + + parser.doParse(); + assertError(parser, 0, 0, 0); + + parser.doParse("--true"); + assertError(parser, 0, 0, 1); + + + parser.doParse("-l"); + assertError(parser, 0, 0, 1); + assertFalse(parser.isOptionEnabled("list")); + + parser.doParse("-l","regions"); + assertError(parser, 1,0, 0); + assertTrue(parser.isOptionEnabled("list")); + + + } + + + public void testArguments() throws Exception { + + parser.doParse(); + assertError(parser, 0, 0, 0); + + parser.doParse("true"); + assertError(parser, 0, 1, 0); + assertTrue(parser.isArgumentEnabled("bool")); + + parser.doParse("true", "true"); + assertError(parser, 0, 2, 0); + assertTrue(parser.isArgumentEnabled("bool")); + + parser.doParse("true", "true", "yo"); + assertError(parser, 0, 3, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + + parser.doParse("true", "true", "5"); + assertError(parser, 0, 3, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("inte")); + + parser.doParse("5", "6", "true", "true"); + assertError(parser, 0, 3, 1); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("inte")); + + parser.doParse("true", "true", "5.5", "6"); + assertError(parser, 0, 3, 1); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("inte")); + + parser.doParse("5.5", "6.2", "true", "true"); + assertError(parser, 0, 2, 2); + assertTrue(parser.isArgumentEnabled("bool")); + assertFalse(parser.isArgumentEnabled("inte")); + + parser.doParse("true", "true", "true"); + assertError(parser, 0, 2, 1); + assertTrue(parser.isArgumentEnabled("bool")); + + parser.doParse("true", "true", "yo", "yo"); + assertError(parser, 0, 3, 1); + assertTrue(parser.isArgumentEnabled("bool")); + + parser.doParse("true", "true", "true", "yo", "yo"); + assertError(parser, 0, 3, 2); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + + parser.doParse("true", "yo", "/home"); + assertError(parser, 0, 3, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + + parser.doParse("true", "/home", "yo"); + assertError(parser, 0, 3, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + + parser.doParse("true", "/home", "/home"); + assertError(parser, 0, 2, 1); + assertTrue(parser.isArgumentEnabled("bool")); + assertFalse(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + + parser.doParse("true", "home", "/home"); + assertError(parser, 0, 3, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + + parser.doParse("true", "home", "/home", "java.lang.Class"); + assertError(parser, 0, 4, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + assertTrue(parser.isArgumentEnabled("cla")); + + parser.doParse("true", "home", "/home", "java.lang.Class", "java.lang.Short", "java.lang.Double", "java.lang.Long", "java.lang.Integer"); + assertError(parser, 0, 8, 0); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + assertTrue(parser.isArgumentEnabled("cla")); + + parser.doParse("true", "home", "/home", "java.lang.Class", "java.lang.Short", "java.lang.Double", "java.lang.Long", "java.lang.Intege"); + assertError(parser, 0, 7, 1); + assertTrue(parser.isArgumentEnabled("bool")); + assertTrue(parser.isArgumentEnabled("strin")); + assertTrue(parser.isArgumentEnabled("fil")); + assertTrue(parser.isArgumentEnabled("cla")); + } + + public void testUnfoundOptions() throws Exception { + parser.doParse("true", "true", "-h"); + assertError(parser, 1, 0, 0); + + parser.doParse("true", "true", "-l", "exports"); + assertError(parser, 1, 0, 0); + + parser.doParse("-l", "exports"); + assertError(parser, 1, 0, 0); + + parser.doParse("true", "-zzh", "yo", "ya", "-yu", "yy", "uu", "-h"); + assertError(parser, 1, 0, 2); + + } + + protected static void assertError(OptionParser parser, int nbOptions, int nbArguments, 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.getOptions().length); + assertEquals(nbArguments, parser.getArguments().length); + assertEquals(nbErrors, parser._errors.length); + } + + static void initParser() throws MojoExecutionException, MojoFailureException { + Generator goal = new Generator(); + goal.source = new File(PROPERTIES_FILE_PATH); + goal.parserFullyQualifiedName = PARSER_NAME; + goal.projectName = PROJECT_NAME; + goal.out = new File(OUT_PATH); + goal.generateOptionImplementation = true; + goal.typeSource = "properties"; + goal.showErrors = true; + goal.execute(); + parser = newParser(PARSER_NAME, ParserTest.class.getClassLoader()); + } + + static OptionParser newParser(String className, ClassLoader loader) { + + Class parserClass; + OptionParser parser; + try { + // find parser class + parserClass = Class.forName(className, true, loader); + // instanciate parser, load factory and init ParserContext + parser = (OptionParser) parserClass.newInstance(); + return parser; + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException(e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InstantiationException e) { + throw new IllegalArgumentException(e); + } + } + +} \ No newline at end of file