1 package com.lexicalscope.jewel.cli.examples; 2 3 import static com.lexicalscope.jewel.cli.CliFactory.parseArgumentsUsingInstance; 4 import static com.lexicalscope.jewel.cli.ArgumentValidationExceptionMatcher.hasValidationException; 5 import static org.junit.Assert.assertEquals; 6 7 import org.junit.Rule; 8 import org.junit.Test; 9 import org.junit.rules.ExpectedException; 10 11 import com.lexicalscope.jewel.cli.ArgumentValidationException; 12 import com.lexicalscope.jewel.cli.ValidationFailureType; 13 14 public class TestClassOptionalOption { 15 @Rule public final ExpectedException exception = ExpectedException.none(); 16 17 @Test public void testOptionalOptionPresent() throws ArgumentValidationException { 18 final ClassOptionalOption result = 19 parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { 20 "--myMandatoryOption", 21 "3", 22 "--myOptionalOption", 23 "7" }); 24 25 assertEquals(3, (int) result.getMyMandatoryOption()); 26 assertEquals(7, (int) result.getMyOptionalOption()); 27 } 28 29 @Test public void testOptionalOptionMissing() throws ArgumentValidationException { 30 final ClassOptionalOption result = 31 parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { 32 "--myMandatoryOption", 33 "3" }); 34 35 assertEquals(3, (int) result.getMyMandatoryOption()); 36 assertEquals(null, result.getMyOptionalOption()); 37 } 38 39 @Test public void testMandatoryOptionMissing() throws ArgumentValidationException { 40 exception.expect(ArgumentValidationException.class); 41 exception.expect(hasValidationException(ValidationFailureType.MissingOption)); 42 43 parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { "--myOptionalOption", "3" }); 44 } 45 }