package com.lexicalscope.jewel.cli.examples; import static com.lexicalscope.jewel.cli.CliFactory.parseArgumentsUsingInstance; import static com.lexicalscope.jewel.cli.ArgumentValidationExceptionMatcher.hasValidationException; import static org.junit.Assert.assertEquals; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import com.lexicalscope.jewel.cli.ArgumentValidationException; import com.lexicalscope.jewel.cli.ValidationFailureType; public class TestClassOptionalOption { @Rule public final ExpectedException exception = ExpectedException.none(); @Test public void testOptionalOptionPresent() throws ArgumentValidationException { final ClassOptionalOption result = parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { "--myMandatoryOption", "3", "--myOptionalOption", "7" }); assertEquals(3, (int) result.getMyMandatoryOption()); assertEquals(7, (int) result.getMyOptionalOption()); } @Test public void testOptionalOptionMissing() throws ArgumentValidationException { final ClassOptionalOption result = parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { "--myMandatoryOption", "3" }); assertEquals(3, (int) result.getMyMandatoryOption()); assertEquals(null, result.getMyOptionalOption()); } @Test public void testMandatoryOptionMissing() throws ArgumentValidationException { exception.expect(ArgumentValidationException.class); exception.expect(hasValidationException(ValidationFailureType.MissingOption)); parseArgumentsUsingInstance(new ClassOptionalOption(), new String[] { "--myOptionalOption", "3" }); } }