Repository: incubator-tamaya Updated Branches: refs/heads/master 44b28c8a9 -> c5415ce48
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java index 1814cba..76e6e32 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java @@ -20,17 +20,52 @@ package org.apache.tamaya.core.internal.converters; import org.apache.tamaya.PropertyConverter; +import java.util.Locale; import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; /** - * Converter, converting from String to Double. + * Converter, converting from String to Double, using the Java number syntax: + * (-)?[0-9]*\.[0-9]*. In case of error the value given also is tried being parsed as integral number using + * {@link org.apache.tamaya.core.internal.converters.LongConverter}. */ public class DoubleConverter implements PropertyConverter<Double>{ + /** The logger. */ + private static final Logger LOG = Logger.getLogger(DoubleConverter.class.getName()); + /** The converter used, when floating point parse failed. */ + private LongConverter integerConverter = new LongConverter(); @Override public Double convert(String value) { String trimmed = Objects.requireNonNull(value).trim(); - //X TODO not good enough as this is Locale dependent! - return Double.valueOf(trimmed); + switch(trimmed.toUpperCase(Locale.ENGLISH)){ + case "POSITIVE_INFINITY": + return Double.POSITIVE_INFINITY; + case "NEGATIVE_INFINITY": + return Double.NEGATIVE_INFINITY; + case "NAN": + return Double.NaN; + case "MIN_VALUE": + case "MIN": + return Double.MIN_VALUE; + case "MAX_VALUE": + case "MAX": + return Double.MAX_VALUE; + default: + try { + return Double.valueOf(trimmed); + } catch(Exception e){ + // OK perhaps we have an integral number that must be converted to the double type... + LOG.log(Level.FINER, e, () -> "Parsing of double as floating number failed, trying parsing integral" + + " number instead..."); + } + try{ + return integerConverter.convert(trimmed).doubleValue(); + } catch(Exception e){ + LOG.log(Level.INFO, e, () -> "Unexpected error from LongConverter for " + trimmed); + return null; + } + } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java index 955197b..5f97eca 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java @@ -20,17 +20,56 @@ package org.apache.tamaya.core.internal.converters; import org.apache.tamaya.PropertyConverter; +import java.util.Locale; import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; /** - * Converter, converting from String to Float. + * Converter, converting from String to Float, using the Java number syntax: + * (-)?[0-9]*\.[0-9]*. In case of error the value given also is tried being parsed as integral number using + * {@link org.apache.tamaya.core.internal.converters.LongConverter}. */ -public class FloatConverter implements PropertyConverter<Float>{ +public class FloatConverter implements PropertyConverter<Float> { + /** + * The logger. + */ + private static final Logger LOG = Logger.getLogger(DoubleConverter.class.getName()); + /** + * The converter used, when floating point parse failed. + */ + private IntegerConverter integerConverter = new IntegerConverter(); @Override public Float convert(String value) { String trimmed = Objects.requireNonNull(value).trim(); - //X TODO not good enough as this is Locale dependent! - return Float.valueOf(trimmed); + switch(trimmed.toUpperCase(Locale.ENGLISH)){ + case "POSITIVE_INFINITY": + return Float.POSITIVE_INFINITY; + case "NEGATIVE_INFINITY": + return Float.NEGATIVE_INFINITY; + case "NAN": + return Float.NaN; + case "MIN_VALUE": + case "MIN": + return Float.MIN_VALUE; + case "MAX_VALUE": + case "MAX": + return Float.MAX_VALUE; + default: + try { + return Float.valueOf(trimmed); + } catch(Exception e){ + // OK perhaps we have an integral number that must be converted to the double type... + LOG.log(Level.FINER, e, () -> "Parsing of double as floating number failed, trying parsing integral" + + " number instead..."); + } + try{ + return integerConverter.convert(trimmed).floatValue(); + } catch(Exception e){ + LOG.log(Level.INFO, e, () -> "Unexpected error from LongConverter for " + trimmed); + return null; + } + } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java index 923b132..10bed68 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java @@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters; import org.apache.tamaya.PropertyConverter; +import java.util.Locale; import java.util.Objects; /** @@ -30,6 +31,15 @@ public class IntegerConverter implements PropertyConverter<Integer>{ @Override public Integer convert(String value) { String trimmed = Objects.requireNonNull(value).trim(); - return Integer.decode(trimmed); + switch(trimmed.toUpperCase(Locale.ENGLISH)){ + case "MIN_VALUE": + case "MIN": + return Integer.MIN_VALUE; + case "MAX_VALUE": + case "MAX": + return Integer.MAX_VALUE; + default: + return Integer.decode(trimmed); + } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java index d46fcc0..5858546 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java @@ -33,4 +33,10 @@ public class LocalTimeConverter implements PropertyConverter<LocalTime>{ String trimmed = Objects.requireNonNull(value).trim(); return LocalTime.parse(trimmed); } + + public static void main(String... args){ + LocalTime.parse("10:00"); + LocalTime.parse("10:00:23"); + LocalTime.parse("10"); + } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java index 67434d2..91af6fe 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java @@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters; import org.apache.tamaya.PropertyConverter; +import java.util.Locale; import java.util.Objects; /** @@ -30,6 +31,15 @@ public class LongConverter implements PropertyConverter<Long>{ @Override public Long convert(String value) { String trimmed = Objects.requireNonNull(value).trim(); - return Long.decode(trimmed); + switch(trimmed.toUpperCase(Locale.ENGLISH)){ + case "MIN_VALUE": + case "MIN": + return Long.MIN_VALUE; + case "MAX_VALUE": + case "MAX": + return Long.MAX_VALUE; + default: + return Long.decode(trimmed); + } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java ---------------------------------------------------------------------- diff --git a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java index e41c1d6..f9ae732 100644 --- a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java +++ b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java @@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters; import org.apache.tamaya.PropertyConverter; +import java.util.Locale; import java.util.Objects; /** @@ -30,6 +31,15 @@ public class ShortConverter implements PropertyConverter<Short>{ @Override public Short convert(String value) { String trimmed = Objects.requireNonNull(value).trim(); - return Short.decode(trimmed); + switch(trimmed.toUpperCase(Locale.ENGLISH)){ + case "MIN_VALUE": + case "MIN": + return Short.MIN_VALUE; + case "MAX_VALUE": + case "MAX": + return Short.MAX_VALUE; + default: + return Short.decode(trimmed); + } } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java new file mode 100644 index 0000000..9c4449a --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.math.BigDecimal; +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * Tests the default converter for bytes. + */ +public class BigDecimalConverterTest { + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_BigDecimal_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<BigDecimal> valueRead = config.getOptional("tests.converter.bd.decimal", BigDecimal.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get(), new BigDecimal(101)); + } + + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_BigDecimal_Hex() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<BigDecimal> valueRead = config.getOptional("tests.converter.bd.hex.lowerX", BigDecimal.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get(), new BigDecimal("47")); + valueRead = config.getOptional("tests.converter.bd.hex.upperX", BigDecimal.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get(), new BigDecimal("63")); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_NotPresent() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<BigDecimal> valueRead = config.getOptional("tests.converter.bd.foo", BigDecimal.class); + assertFalse(valueRead.isPresent()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_BigDecimal_BigValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<BigDecimal> valueRead = config.getOptional("tests.converter.bd.big", BigDecimal.class); + assertTrue(valueRead.isPresent()); + assertEquals(new BigDecimal("101666666666666662333337263723628763821638923628193612983618293628763"), + valueRead.get()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_BigDecimal_BigFloatValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<BigDecimal> valueRead = config.getOptional("tests.converter.bd.bigFloat", BigDecimal.class); + assertTrue(valueRead.isPresent()); + assertEquals(new BigDecimal("1016666666666666623333372637236287638216389293628763.1016666666666666623333372" + + "63723628763821638923628193612983618293628763"), valueRead.get()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java index e82b355..3d3fe3e 100644 --- a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java @@ -84,4 +84,30 @@ public class ByteConverterTest { Optional<Byte> valueRead = config.getOptional("tests.converter.byte.foo", Byte.class); assertFalse(valueRead.isPresent()); } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Byte_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Byte> valueRead = config.getOptional("tests.converter.byte.min", Byte.class); + assertTrue(valueRead.isPresent()); + assertEquals(Byte.MIN_VALUE, valueRead.get().byteValue()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Byte_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Byte> valueRead = config.getOptional("tests.converter.byte.max", Byte.class); + assertTrue(valueRead.isPresent()); + assertEquals(Byte.MAX_VALUE, valueRead.get().byteValue()); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java index 3dac272..812eb8c 100644 --- a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java @@ -44,6 +44,10 @@ public class ConverterTestsPropertySource implements PropertySource{ return "0x2F"; case "tests.converter.byte.hex.upperX": return "0X3F"; + case "tests.converter.byte.min": + return "min"; + case "tests.converter.byte.max": + return "MAX_Value"; // Boolean case "tests.converter.boolean.y1": return "y"; @@ -85,6 +89,7 @@ public class ConverterTestsPropertySource implements PropertySource{ return "f"; case "tests.converter.boolean.f2": return "F"; + // Character case "tests.converter.char.f": return "f"; case "tests.converter.char.d": @@ -97,6 +102,7 @@ public class ConverterTestsPropertySource implements PropertySource{ return " f "; case "tests.converter.char.f-numeric": return "101"; + // currency case "tests.converter.currency.code1": return "CHF"; case "tests.converter.currency.code2": @@ -123,21 +129,112 @@ public class ConverterTestsPropertySource implements PropertySource{ return "DE "; case "tests.converter.currency.code-locale4": return " DE "; + //double + case "tests.converter.double.decimal": + return "1.23456789"; + case "tests.converter.double.decimalNegative": + return "-1.23456789"; + case "tests.converter.double.integer": + return " 100"; + case "tests.converter.double.hex1": + return " 0XFF"; + case "tests.converter.double.hex2": + return "-0xFF "; + case "tests.converter.double.hex3": + return "#FF"; + case "tests.converter.double.octal": + return "0013"; + case "tests.converter.double.min": + return "MIN_Value"; + case "tests.converter.double.max": + return "max"; + case "tests.converter.double.nan": + return "NAN"; + case "tests.converter.double.pi": + return "positive_infinity"; + case "tests.converter.double.ni": + return "Negative_Infinity"; + //float + case "tests.converter.float.decimal": + return "1.23456789"; + case "tests.converter.float.decimalNegative": + return "-1.23456789"; + case "tests.converter.float.integer": + return " 100"; + case "tests.converter.float.hex1": + return " 0XFF"; + case "tests.converter.float.hex2": + return "-0xFF "; + case "tests.converter.float.hex3": + return "#FF"; + case "tests.converter.float.octal": + return "0013"; + case "tests.converter.float.min": + return "MIN_Value"; + case "tests.converter.float.max": + return "max"; + case "tests.converter.float.nan": + return "NAN"; + case "tests.converter.float.pi": + return "positive_infinity"; + case "tests.converter.float.ni": + return "Negative_Infinity"; + // Integer + case "tests.converter.integer.decimal": + return "101"; + case "tests.converter.integer.octal": + return "02"; + case "tests.converter.integer.hex.lowerX": + return "0x2F"; + case "tests.converter.integer.hex.upperX": + return "0X3F"; + case "tests.converter.integer.min": + return "min"; + case "tests.converter.integer.max": + return "MAX_Value"; + // Long + case "tests.converter.long.decimal": + return "101"; + case "tests.converter.long.octal": + return "02"; + case "tests.converter.long.hex.lowerX": + return "0x2F"; + case "tests.converter.long.hex.upperX": + return "0X3F"; + case "tests.converter.long.min": + return "min"; + case "tests.converter.long.max": + return "MAX_Value"; + // Short + case "tests.converter.short.decimal": + return "101"; + case "tests.converter.short.octal": + return "02"; + case "tests.converter.short.hex.lowerX": + return "0x2F"; + case "tests.converter.short.hex.upperX": + return "0X3F"; + case "tests.converter.short.min": + return "min"; + case "tests.converter.short.max": + return "MAX_Value"; + // BigDecimal + case "tests.converter.bd.decimal": + return "101"; + case "tests.converter.bd.float": + return "101.36438746"; + case "tests.converter.bd.big": + return "101666666666666662333337263723628763821638923628193612983618293628763"; + case "tests.converter.bd.bigFloat": + return "1016666666666666623333372637236287638216389293628763.101666666666666662333337263723628763821638923628193612983618293628763"; + case "tests.converter.bd.hex.lowerX": + return "0x2F"; + case "tests.converter.bd.hex.upperX": + return "0X3F"; } return null; } - /* - case "yes": - case "y": - case "true": - case "t": - return Boolean.TRUE; - case "no": - case "n": - case "false": - case "f": - */ @Override public Map<String, String> getProperties() { return Collections.emptyMap(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java new file mode 100644 index 0000000..86ee5dd --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * Tests the default converter for bytes. + */ +public class DoubleConverterTest { + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.decimal", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().doubleValue(), 1.23456789, 0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_DecimalNegative() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.decimalNegative", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().doubleValue(), -1.23456789, 0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_Integer() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.integer", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().doubleValue(),100d, 0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_Hex1() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.hex1", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().doubleValue(),255d, 0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_Hex2() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.hex2", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().doubleValue(),-255d, 0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_Hex3() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.hex3", Double.class); + assertTrue(valueRead.isPresent()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.min", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(Double.MIN_VALUE, valueRead.get().doubleValue(),0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.max", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(Double.MAX_VALUE, valueRead.get().doubleValue(),0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_NaNValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.nan", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(Double.NaN, valueRead.get().doubleValue(),0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_PositiveInfinityValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.pi", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(Double.POSITIVE_INFINITY, valueRead.get().doubleValue(),0.0d); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Double_NegativeInfinityValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Double> valueRead = config.getOptional("tests.converter.double.ni", Double.class); + assertTrue(valueRead.isPresent()); + assertEquals(Double.NEGATIVE_INFINITY, valueRead.get().doubleValue(),0.0d); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java new file mode 100644 index 0000000..68c12e1 --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Tests the default converter for bytes. + */ +public class FloatConverterTest { + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.decimal", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(), 1.23456789f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_DecimalNegative() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.decimalNegative", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(), -1.23456789f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_Integer() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.integer", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(),100f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_Hex1() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.hex1", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(),255f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_Hex2() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.hex2", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(),-255f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_Hex3() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.hex3", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().floatValue(),255f, 0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.min", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(Float.MIN_VALUE, valueRead.get().floatValue(),0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.max", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(Float.MAX_VALUE, valueRead.get().floatValue(),0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_NaNValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.nan", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(Float.NaN, valueRead.get().floatValue(),0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_PositiveInfinityValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.pi", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(Float.POSITIVE_INFINITY, valueRead.get().floatValue(),0.0f); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Float_NegativeInfinityValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Float> valueRead = config.getOptional("tests.converter.float.ni", Float.class); + assertTrue(valueRead.isPresent()); + assertEquals(Float.NEGATIVE_INFINITY, valueRead.get().floatValue(),0.0f); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java new file mode 100644 index 0000000..f22f531 --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * Tests the default converter for Integers. + */ +public class IntegerConverterTest { + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Integer_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.decimal", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), 101); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Integer_Octal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.octal", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Integer.decode("02").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Integer_Hex() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.hex.lowerX", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Integer.decode("0x2F").intValue()); + valueRead = config.getOptional("tests.converter.integer.hex.upperX", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Integer.decode("0X3F").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_NotPresent() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.foo", Integer.class); + assertFalse(valueRead.isPresent()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Integer_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.min", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(Integer.MIN_VALUE, valueRead.get().intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Integer_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Integer> valueRead = config.getOptional("tests.converter.integer.max", Integer.class); + assertTrue(valueRead.isPresent()); + assertEquals(Integer.MAX_VALUE, valueRead.get().intValue()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java new file mode 100644 index 0000000..c54f784 --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * Tests the default converter for Longs. + */ +public class LongConverterTest { + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Long_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.decimal", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), 101); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Long_Octal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.octal", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Long.decode("02").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Long_Hex() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.hex.lowerX", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Long.decode("0x2F").intValue()); + valueRead = config.getOptional("tests.converter.long.hex.upperX", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Long.decode("0X3F").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_NotPresent() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.foo", Long.class); + assertFalse(valueRead.isPresent()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Long_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.min", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(Long.MIN_VALUE, valueRead.get().longValue()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Long_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Long> valueRead = config.getOptional("tests.converter.long.max", Long.class); + assertTrue(valueRead.isPresent()); + assertEquals(Long.MAX_VALUE, valueRead.get().longValue()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java ---------------------------------------------------------------------- diff --git a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java new file mode 100644 index 0000000..0db16ab --- /dev/null +++ b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tamaya.core.internal.converters; + +import org.apache.tamaya.Configuration; +import org.apache.tamaya.ConfigurationProvider; +import org.junit.Test; + +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * Tests the default converter for Shorts. + */ +public class ShortConverterTest { + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Short_Decimal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.decimal", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), 101); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Short_Octal() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.octal", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Short.decode("02").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Short_Hex() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.hex.lowerX", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Short.decode("0x2F").intValue()); + valueRead = config.getOptional("tests.converter.short.hex.upperX", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(valueRead.get().intValue(), Short.decode("0X3F").intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_NotPresent() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.foo", Short.class); + assertFalse(valueRead.isPresent()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Short_MinValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.min", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(Short.MIN_VALUE, valueRead.get().intValue()); + } + + /** + * Test conversion. The value are provided by + * {@link ConverterTestsPropertySource}. + * @throws Exception + */ + @Test + public void testConvert_Short_MaxValue() throws Exception { + Configuration config = ConfigurationProvider.getConfiguration(); + Optional<Short> valueRead = config.getOptional("tests.converter.short.max", Short.class); + assertTrue(valueRead.isPresent()); + assertEquals(Short.MAX_VALUE, valueRead.get().intValue()); + } +} \ No newline at end of file