package aQute.lib.getopt; import java.io.File; import java.util.Arrays; import java.util.Collection; import aQute.lib.collections.ExtList; import aQute.lib.justif.Justif; import aQute.libg.reporter.ReporterAdapter; import junit.framework.TestCase; public class CommandTest extends TestCase { ReporterAdapter rp = new ReporterAdapter(System.err); public static void testWrap() { StringBuilder sb = new StringBuilder(); sb.append("Abc \t3Def ghi asoudg gd ais gdiasgd asgd auysgd asyudga8sdga8sydga 8sdg\fSame column\nbegin\n" + "\t3abc\t5def\nabc"); Justif justif = new Justif(30); justif.wrap(sb); System.err.println(sb); } interface xoptions extends Options { boolean exceptions(); } static class X { public void _cmda(@SuppressWarnings("unused") xoptions opts) { } public void _cmdb(@SuppressWarnings("unused") xoptions opts) { } } public void testCommand() throws Exception { CommandLine getopt = new CommandLine(rp); assertEquals("[cmda, cmdb]", getopt.getCommands(new X()).keySet().toString()); getopt.execute(new X(), "cmda", Arrays.asList("-e", "help")); } static interface c1options extends Options { boolean flag(); boolean notset(); int a(); String bb(); Collection<File> input(); } interface c2options extends Options { } public static class C1 { public static String _c1(c1options x) { assertEquals(true, x.flag()); assertEquals(33, x.a()); assertEquals("bb", x.bb(), "bb"); assertEquals(Arrays.asList(new File("f1.txt"), new File("f2.txt")), x.input()); assertEquals(false, x.notset()); assertEquals(Arrays.asList("-a", "--a", "a"), x._arguments()); return "a"; } public void _c2(@SuppressWarnings("unused") c2options x) { } } public void testHelp() throws Exception { CommandLine getopt = new CommandLine(rp); C1 c1 = new C1(); getopt.execute(c1, "help", new ExtList<String>("c1")); } public void testSimple() throws Exception { CommandLine getopt = new CommandLine(rp); C1 c1 = new C1(); String help = getopt.execute(c1, "c1", new ExtList<String>("-f", "-a", "33", "--bb", "bb", "-i", "f1.txt", "-i", "f2.txt", "--", "-a", "--a", "a")); System.err.println(help); } interface Opt1 { String title(); } interface Opt2 { String test(); } interface Opt3 { String third(); } interface Opt4 { String Wrong(); } @Arguments(arg = { "..." }) interface TwoOptions extends Opt1, Opt2, Options {} interface ThreeOptions extends Opt1, Opt2, Opt3 {} public static class CommandTwoOptions { public String test, title; public void _commandTwoOptions(TwoOptions opts) { test = opts.test(); title = opts.title(); } } public static class CommandThreeOptions { public void _commandThreeOptions(ThreeOptions opts) {} } public static class CommandWrongOption { public void _commandWrongOption(Opt4 opts) {} } public void test_SameFirstChar() throws Exception { CommandLine getopt = new CommandLine(rp); CommandTwoOptions c = new CommandTwoOptions(); getopt.execute(c, "commandTwoOptions", new ExtList<String>("-t", "test", "-T", "title")); assertEquals("title", c.title); assertEquals("test", c.test); } public void test_SameFirstChar_NoCapitalizedCommands() throws Exception { CommandLine getopt = new CommandLine(rp); CommandWrongOption c = new CommandWrongOption(); try { getopt.execute(c, "commandWrongOption", new ExtList<String>()); fail(); } catch (Error e) {} } public void test_SameFirstChar_MaxTwoOptionsWithSameShortcut() throws Exception { CommandLine getopt = new CommandLine(rp); CommandThreeOptions c = new CommandThreeOptions(); try { getopt.execute(c, "commandThreeOptions", new ExtList<String>()); fail(); } catch (Error e) {} } }