summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAngus <angus@rqsd.com>2011-10-26 00:22:53 +0100
committerAngus <angus@rqsd.com>2011-10-26 00:22:53 +0100
commit041bdac9067d4ce9c936ff1c0ae3856f2e240f15 (patch)
tree76052d54d5d3f0dc24618ae8ff0814c7b144b521 /src
parent25aab24d37d3b9374ae113c5840f541ffa63b033 (diff)
downloadplatform_external_jcommander-041bdac9067d4ce9c936ff1c0ae3856f2e240f15.tar.gz
platform_external_jcommander-041bdac9067d4ce9c936ff1c0ae3856f2e240f15.tar.bz2
platform_external_jcommander-041bdac9067d4ce9c936ff1c0ae3856f2e240f15.zip
Added support for BigDecimal arguments and related test.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/beust/jcommander/converters/BigDecimalConverter.java43
-rw-r--r--src/main/java/com/beust/jcommander/internal/DefaultConverterFactory.java3
-rw-r--r--src/test/java/com/beust/jcommander/JCommanderTest.java6
-rw-r--r--src/test/java/com/beust/jcommander/args/Args1.java4
4 files changed, 54 insertions, 2 deletions
diff --git a/src/main/java/com/beust/jcommander/converters/BigDecimalConverter.java b/src/main/java/com/beust/jcommander/converters/BigDecimalConverter.java
new file mode 100644
index 0000000..cd256a4
--- /dev/null
+++ b/src/main/java/com/beust/jcommander/converters/BigDecimalConverter.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (C) 2010 the original author or authors.
+ * See the notice.md file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.beust.jcommander.converters;
+
+import com.beust.jcommander.ParameterException;
+import java.math.BigDecimal;
+
+/**
+ * Converts a String to a BigDecimal.
+ *
+ * @author angus
+ */
+public class BigDecimalConverter extends BaseConverter<BigDecimal> {
+
+ public BigDecimalConverter(String optionName) {
+ super(optionName);
+ }
+
+ @Override
+ public BigDecimal convert(String value) {
+ try {
+ return new BigDecimal(value);
+ } catch (NumberFormatException nfe) {
+ throw new ParameterException(getErrorString(value, "a BigDecimal"));
+ }
+ }
+}
diff --git a/src/main/java/com/beust/jcommander/internal/DefaultConverterFactory.java b/src/main/java/com/beust/jcommander/internal/DefaultConverterFactory.java
index 26ab0fc..e622722 100644
--- a/src/main/java/com/beust/jcommander/internal/DefaultConverterFactory.java
+++ b/src/main/java/com/beust/jcommander/internal/DefaultConverterFactory.java
@@ -27,8 +27,10 @@ import com.beust.jcommander.converters.LongConverter;
import com.beust.jcommander.converters.FloatConverter;
import com.beust.jcommander.converters.DoubleConverter;
import com.beust.jcommander.converters.StringConverter;
+import com.beust.jcommander.converters.BigDecimalConverter;
import java.io.File;
+import java.math.BigDecimal;
import java.util.Map;
public class DefaultConverterFactory implements IStringConverterFactory {
@@ -51,6 +53,7 @@ public class DefaultConverterFactory implements IStringConverterFactory {
m_classConverters.put(Boolean.class, BooleanConverter.class);
m_classConverters.put(boolean.class, BooleanConverter.class);
m_classConverters.put(File.class, FileConverter.class);
+ m_classConverters.put(BigDecimal.class, BigDecimalConverter.class);
}
public Class<? extends IStringConverter<?>> getConverter(Class forType) {
diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java
index 4935e5e..1dd3a25 100644
--- a/src/test/java/com/beust/jcommander/JCommanderTest.java
+++ b/src/test/java/com/beust/jcommander/JCommanderTest.java
@@ -58,6 +58,7 @@ import org.testng.annotations.Test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
@@ -72,7 +73,7 @@ import java.util.TreeSet;
public class JCommanderTest {
public void simpleArgs() {
Args1 args = new Args1();
- String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3",
+ String[] argv = { "-debug", "-log", "2", "-float", "1.2", "-double", "1.3", "-bigdecimal", "1.4",
"-groups", "unit", "a", "b", "c" };
new JCommander(args, argv);
@@ -82,6 +83,7 @@ public class JCommanderTest {
Assert.assertEquals(args.parameters, Arrays.asList("a", "b", "c"));
Assert.assertEquals(args.floa, 1.2f, 0.1f);
Assert.assertEquals(args.doub, 1.3f, 0.1f);
+ Assert.assertEquals(args.bigd, new BigDecimal("1.4"));
}
/**
@@ -92,7 +94,7 @@ public class JCommanderTest {
Args1 args = new Args1();
String[] argv = { "-log", "2" };
JCommander jc = new JCommander(args, argv);
- Assert.assertEquals(jc.getParameters().size(), 6);
+ Assert.assertEquals(jc.getParameters().size(), 7);
}
/**
diff --git a/src/test/java/com/beust/jcommander/args/Args1.java b/src/test/java/com/beust/jcommander/args/Args1.java
index cca53d8..9e55fb5 100644
--- a/src/test/java/com/beust/jcommander/args/Args1.java
+++ b/src/test/java/com/beust/jcommander/args/Args1.java
@@ -18,6 +18,7 @@
package com.beust.jcommander.args;
+import java.math.BigDecimal;
import java.util.List;
import org.testng.collections.Lists;
@@ -45,4 +46,7 @@ public class Args1 {
@Parameter(names = "-float", description = "A float number")
public float floa;
+
+ @Parameter(names = "-bigdecimal", description = "A BigDecimal number")
+ public BigDecimal bigd;
}