package com.lexicalscope.jewel.cli.parser;
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.jmock.integration.junit4.JUnitRuleMockery;
import org.junit.Rule;
import org.junit.Test;
public class TestArgumentParserImpl {
@Rule public final JUnitRuleMockery context = new JUnitRuleMockery();
@Mock public ParsedArguments parsedArguments;
final ArgumentParser impl = new ArgumentParserImpl();
@Test public void testParseArguments() {
parseArguments(new String[] {});
}
@Test public void testParseArgumentsNotUparsed() {
context.checking(new Expectations() {{
oneOf(parsedArguments).addOption("a");
oneOf(parsedArguments).addValue("1");
oneOf(parsedArguments).addValue("2");
oneOf(parsedArguments).addOption("b");
oneOf(parsedArguments).addOption("c");
oneOf(parsedArguments).addValue("1");
oneOf(parsedArguments).addValue("2");
}});
parseArguments(new String[] { "-a", "1", "2", "-b", "-c", "1", "2" });
}
@Test public void testParseArgumentsUnparsed() {
context.checking(new Expectations() {{
oneOf(parsedArguments).addOption("a");
oneOf(parsedArguments).addValue("1");
oneOf(parsedArguments).addValue("2");
oneOf(parsedArguments).addOption("b");
oneOf(parsedArguments).addOption("c");
oneOf(parsedArguments).addValue("1");
oneOf(parsedArguments).addValue("2");
oneOf(parsedArguments).unparsedOptionsFollow();
oneOf(parsedArguments).addValue("3");
oneOf(parsedArguments).addValue("4");
}});
parseArguments(new String[] { "-a", "1", "2", "-b", "-c", "1", "2", "--", "3", "4" });
}
@Test public void testParseArgumentsOnlyUnparsed() {
context.checking(new Expectations() {{
oneOf(parsedArguments).unparsedOptionsFollow();
oneOf(parsedArguments).addValue("3");
oneOf(parsedArguments).addValue("4");
}});
parseArguments(new String[] { "--", "3", "4" });
}
@Test public void testParseArgumentsOnlyUnparsedSeperator() {
context.checking(new Expectations() {{
oneOf(parsedArguments).unparsedOptionsFollow();
}});
parseArguments(new String[] { "--" });
}
@Test public void testParseShortArguments() {
context.checking(new Expectations() {{
oneOf(parsedArguments).addOption("a");
oneOf(parsedArguments).addOption("b");
oneOf(parsedArguments).addOption("c");
}});
parseArguments(new String[] { "-abc" });
}
@Test public void testParseAssignedValue() {
context.checking(new Expectations() {{
oneOf(parsedArguments).addOption("option");
oneOf(parsedArguments).addValue("value");
}});
parseArguments(new String[] { "--option=value" });
}
private void parseArguments(final String[] arguments) {
impl.parseArguments(parsedArguments, arguments);
}
}