1 package com.lexicalscope.jewel.cli.parser; 2 3 import org.jmock.Expectations; 4 import org.jmock.auto.Mock; 5 import org.jmock.integration.junit4.JUnitRuleMockery; 6 import org.junit.Rule; 7 import org.junit.Test; 8 9 public class TestArgumentParserImpl { 10 @Rule public final JUnitRuleMockery context = new JUnitRuleMockery(); 11 @Mock public ParsedArguments parsedArguments; 12 13 final ArgumentParser impl = new ArgumentParserImpl(); 14 15 @Test public void testParseArguments() { 16 parseArguments(new String[] {}); 17 } 18 19 @Test public void testParseArgumentsNotUparsed() { 20 context.checking(new Expectations() {{ 21 oneOf(parsedArguments).addOption("a"); 22 oneOf(parsedArguments).addValue("1"); 23 oneOf(parsedArguments).addValue("2"); 24 oneOf(parsedArguments).addOption("b"); 25 oneOf(parsedArguments).addOption("c"); 26 oneOf(parsedArguments).addValue("1"); 27 oneOf(parsedArguments).addValue("2"); 28 }}); 29 30 parseArguments(new String[] { "-a", "1", "2", "-b", "-c", "1", "2" }); 31 } 32 33 @Test public void testParseArgumentsUnparsed() { 34 context.checking(new Expectations() {{ 35 oneOf(parsedArguments).addOption("a"); 36 oneOf(parsedArguments).addValue("1"); 37 oneOf(parsedArguments).addValue("2"); 38 oneOf(parsedArguments).addOption("b"); 39 oneOf(parsedArguments).addOption("c"); 40 oneOf(parsedArguments).addValue("1"); 41 oneOf(parsedArguments).addValue("2"); 42 oneOf(parsedArguments).unparsedOptionsFollow(); 43 oneOf(parsedArguments).addValue("3"); 44 oneOf(parsedArguments).addValue("4"); 45 }}); 46 47 parseArguments(new String[] { "-a", "1", "2", "-b", "-c", "1", "2", "--", "3", "4" }); 48 } 49 50 @Test public void testParseArgumentsOnlyUnparsed() { 51 context.checking(new Expectations() {{ 52 oneOf(parsedArguments).unparsedOptionsFollow(); 53 oneOf(parsedArguments).addValue("3"); 54 oneOf(parsedArguments).addValue("4"); 55 }}); 56 57 parseArguments(new String[] { "--", "3", "4" }); 58 } 59 60 @Test public void testParseArgumentsOnlyUnparsedSeperator() { 61 context.checking(new Expectations() {{ 62 oneOf(parsedArguments).unparsedOptionsFollow(); 63 }}); 64 65 parseArguments(new String[] { "--" }); 66 } 67 68 @Test public void testParseShortArguments() { 69 context.checking(new Expectations() {{ 70 oneOf(parsedArguments).addOption("a"); 71 oneOf(parsedArguments).addOption("b"); 72 oneOf(parsedArguments).addOption("c"); 73 }}); 74 75 parseArguments(new String[] { "-abc" }); 76 } 77 78 @Test public void testParseAssignedValue() { 79 context.checking(new Expectations() {{ 80 oneOf(parsedArguments).addOption("option"); 81 oneOf(parsedArguments).addValue("value"); 82 }}); 83 84 parseArguments(new String[] { "--option=value" }); 85 } 86 87 private void parseArguments(final String[] arguments) { 88 impl.parseArguments(parsedArguments, arguments); 89 } 90 }