From 5377e48b0f7b1b77aa9d546313b11767559068de Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 7 Aug 2012 04:29:57 -0700 Subject: IParameterValidator2. --- .../java/com/beust/jcommander/JCommanderTest.java | 34 +++++++++++++++++++--- src/test/java/com/beust/jcommander/MyClass.java | 14 +++++++-- 2 files changed, 42 insertions(+), 6 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 5b41e0b..22c5082 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -839,11 +839,9 @@ public class JCommanderTest { public void parameterWithOneDoubleQuote() { @Parameters(separators = "=") class Arg { - @Parameter(names = { "-p", "--param" }) private String param; } - JCommander jc = new JCommander(new MyClass()); jc.parse("-p=\""); } @@ -865,14 +863,42 @@ public class JCommanderTest { private List rules = new ArrayList(); } Arg a = new Arg(); - StringBuilder sb = new StringBuilder(); new JCommander(a, "-rule", "some test"); Assert.assertEquals(a.rules, Arrays.asList("some test")); } + static class V2 implements IParameterValidator2 { + final static List names = Lists.newArrayList(); + static boolean validateCalled = false; + + @Override + public void validate(String name, String value) throws ParameterException { + validateCalled = true; + } + + @Override + public void validate(String name, String value, ParameterDescription pd) + throws ParameterException { + names.addAll(Arrays.asList(pd.getParameter().names())); + } + } + + public void validator2() { + class Arg { + @Parameter(names = { "-h", "--host" }, validateWith = V2.class) + String host; + } + Arg a = new Arg(); + V2.names.clear(); + V2.validateCalled = false; + new JCommander(a, "--host", "h"); + Assert.assertEquals(V2.names, Arrays.asList(new String[] { "-h", "--host" })); + Assert.assertTrue(V2.validateCalled); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().spaces(); + new JCommanderTest().parameterWithOneDoubleQuote(); // class A { // @Parameter(names = "-short", required = true) // List parameters; diff --git a/src/test/java/com/beust/jcommander/MyClass.java b/src/test/java/com/beust/jcommander/MyClass.java index 3bf46b5..c2d3371 100644 --- a/src/test/java/com/beust/jcommander/MyClass.java +++ b/src/test/java/com/beust/jcommander/MyClass.java @@ -1,14 +1,24 @@ package com.beust.jcommander; +import org.testng.Assert; + + @Parameters(separators = "=") public class MyClass { - @Parameter(names = { "-p", "--param" }) + @Parameter(names = { "-p", "--param" }, validateWith = MyValidator.class) private String param; public static void main(String[] args) { JCommander jCommander = new JCommander(new MyClass()); - jCommander.parse("-p=\""); + jCommander.parse("--param=value"); + } + + public static class MyValidator implements IParameterValidator { + @Override + public void validate(String name, String value) throws ParameterException { + Assert.assertEquals(value, "\""); + } } } \ No newline at end of file -- cgit v1.2.3