diff options
author | Angus <angus@rqsd.com> | 2011-10-26 00:22:53 +0100 |
---|---|---|
committer | Angus <angus@rqsd.com> | 2011-10-26 00:22:53 +0100 |
commit | 041bdac9067d4ce9c936ff1c0ae3856f2e240f15 (patch) | |
tree | 76052d54d5d3f0dc24618ae8ff0814c7b144b521 /src | |
parent | 25aab24d37d3b9374ae113c5840f541ffa63b033 (diff) | |
download | platform_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')
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; } |