From a40f150306cee68a002fc4544d38bb45f32e8632 Mon Sep 17 00:00:00 2001 From: Remko Popma Date: Fri, 21 Dec 2018 01:07:15 +0900 Subject: [PATCH] #571 add ArgSpec tests --- .../java/picocli/CommandLineModelTest.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/src/test/java/picocli/CommandLineModelTest.java b/src/test/java/picocli/CommandLineModelTest.java index 6d435ff1e..8e42759c7 100644 --- a/src/test/java/picocli/CommandLineModelTest.java +++ b/src/test/java/picocli/CommandLineModelTest.java @@ -728,6 +728,16 @@ public void testOptionSpecRequiresAtLeastOneName() throws Exception { } } + @Test + public void testOptionSpecRequiresNonEmptyName() throws Exception { + try { + OptionSpec.builder("").build(); + fail("Expected exception"); + } catch (InitializationException ex) { + assertEquals("Invalid names: []", ex.getMessage()); + } + } + @Test public void testConversion_TODO() { // TODO convertion with aux types (abstract field types, generic map with and without explicit type attribute etc) @@ -2129,6 +2139,17 @@ public void testArgSpecSetterRethrowsPicocliException() { } } + @Test + public void testArgSpecSetValueCallsSetter() { + final Object[] newVal = new Object[1]; + ISetter setter = new ISetter() { + public T set(T value) throws Exception { newVal[0] = value; return null; } + }; + PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); + positional.setValue("abc"); + assertEquals("abc", newVal[0]); + } + @Test public void testArgSpecSetterWrapNonPicocliException() { final Exception expected = new Exception("boom"); @@ -2191,4 +2212,64 @@ public void testArgSpecSplitUnbalancedQuotedValueDebug() { assertArrayEquals(new String[] {"\"abc\\\"", "def"}, values); } + + @Test + public void testArgSpecEquals() { + PositionalParamSpec.Builder positional = PositionalParamSpec.builder() + .arity("1") + .hideParamSyntax(true) + .required(true) + .splitRegex(";") + .description("desc") + .descriptionKey("key") + .auxiliaryTypes(Integer.class); + + PositionalParamSpec p1 = positional.build(); + assertEquals(p1, p1); + assertEquals(p1, positional.build()); + assertNotEquals(p1, positional.arity("2").build()); + assertNotEquals(p1, positional.arity("1").hideParamSyntax(false).build()); + assertNotEquals(p1, positional.hideParamSyntax(true).required(false).build()); + assertNotEquals(p1, positional.required(true).splitRegex(",").build()); + assertNotEquals(p1, positional.splitRegex(";").description("xyz").build()); + assertNotEquals(p1, positional.description("desc").descriptionKey("XX").build()); + assertNotEquals(p1, positional.descriptionKey("key").auxiliaryTypes(Short.class).build()); + assertEquals(p1, positional.auxiliaryTypes(Integer.class).build()); + } + + @Test + public void testArgSpecBuilderDescriptionKey() { + PositionalParamSpec.Builder positional = PositionalParamSpec.builder() + .descriptionKey("key"); + + assertEquals("key", positional.descriptionKey()); + assertEquals("xxx", positional.descriptionKey("xxx").descriptionKey()); + } + + @Test + public void testArgSpecBuilderHideParamSyntax() { + PositionalParamSpec.Builder positional = PositionalParamSpec.builder() + .hideParamSyntax(true); + + assertEquals(true, positional.hideParamSyntax()); + assertEquals(false, positional.hideParamSyntax(false).hideParamSyntax()); + } + + @Test + public void testArgSpecBuilderHasInitialValue() { + PositionalParamSpec.Builder positional = PositionalParamSpec.builder() + .hasInitialValue(true); + + assertEquals(true, positional.hasInitialValue()); + assertEquals(false, positional.hasInitialValue(false).hasInitialValue()); + } + + @Test + public void testArgSpecBuilderCompletionCandidates() { + List candidates = Arrays.asList("a", "b"); + PositionalParamSpec.Builder positional = PositionalParamSpec.builder() + .completionCandidates(candidates); + + assertEquals(candidates, positional.completionCandidates()); + } }