shell.addAlias("cmd", "org.jnode.test.shell.syntax.PowersetSyntaxTest$Test");
shell.addSyntax("cmd", new SequenceSyntax(new PowersetSyntax(
new OptionSyntax("intArg", 'i'), new OptionSyntax("fileArg", 'f')),
new RepeatSyntax(new OptionSyntax("otherArg", 'i'))));
CommandLine cl;
CommandInfo cmdInfo;
Command cmd;
cl = new CommandLine(new Token("cmd"), new Token[] {}, null);
cmdInfo = cl.parseCommandLine(shell);
cmd = cmdInfo.createCommandInstance();
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("fileArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("intArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("otherArg").getValues().length);
cl =
new CommandLine(new Token("cmd"), new Token[] {new Token("-f"), new Token("F1")},
null);
cmdInfo = cl.parseCommandLine(shell);
cmd = cmdInfo.createCommandInstance();
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("fileArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("intArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("otherArg").getValues().length);
Assert.assertEquals("F1", cmd.getArgumentBundle().getArgument("fileArg").getValue()
.toString());
cl =
new CommandLine(new Token("cmd"), new Token[] {new Token("-f"), new Token("F1"),
new Token("-i"), new Token("1")}, null);
cmdInfo = cl.parseCommandLine(shell);
cmd = cmdInfo.createCommandInstance();
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("fileArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("intArg").getValues().length);
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("otherArg").getValues().length);
Assert.assertEquals("F1", cmd.getArgumentBundle().getArgument("fileArg").getValue()
.toString());
Assert.assertEquals("1", cmd.getArgumentBundle().getArgument("otherArg").getValue()
.toString());
cl =
new CommandLine(new Token("cmd"), new Token[] {new Token("-i"), new Token("1"),
new Token("-f"), new Token("F1")}, null);
cmdInfo = cl.parseCommandLine(shell);
cmd = cmdInfo.createCommandInstance();
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("fileArg").getValues().length);
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("intArg").getValues().length);
Assert.assertEquals(0, cmd.getArgumentBundle().getArgument("otherArg").getValues().length);
Assert.assertEquals("F1", cmd.getArgumentBundle().getArgument("fileArg").getValue()
.toString());
Assert.assertEquals("1", cmd.getArgumentBundle().getArgument("intArg").getValue()
.toString());
cl =
new CommandLine(new Token("cmd"), new Token[] {new Token("-i"), new Token("1"),
new Token("-f"), new Token("F1"), new Token("-i"), new Token("2")}, null);
cmdInfo = cl.parseCommandLine(shell);
cmd = cmdInfo.createCommandInstance();
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("fileArg").getValues().length);
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("intArg").getValues().length);
Assert.assertEquals(1, cmd.getArgumentBundle().getArgument("otherArg").getValues().length);
Assert.assertEquals("F1", cmd.getArgumentBundle().getArgument("fileArg").getValue()