diff --git a/configlib-core/src/main/java/de/exlll/configlib/Serializers.java b/configlib-core/src/main/java/de/exlll/configlib/Serializers.java index 69f49f1..74d1734 100644 --- a/configlib-core/src/main/java/de/exlll/configlib/Serializers.java +++ b/configlib-core/src/main/java/de/exlll/configlib/Serializers.java @@ -77,10 +77,10 @@ public Number serialize(Number element) { @Override public Number deserialize(Number element) { - if (Reflect.isIntegerType(element.getClass())) { + if (Reflect.isIntegerType(cls)) { return deserializeFromIntegerType(element); } - if (Reflect.isFloatingPointType(element.getClass())) { + if (Reflect.isFloatingPointType(cls)) { return deserializeFromFloatingPointType(element); } String clsName = element.getClass().getSimpleName(); diff --git a/configlib-core/src/test/java/de/exlll/configlib/SerializersTest.java b/configlib-core/src/test/java/de/exlll/configlib/SerializersTest.java index 291e617..90dcf57 100644 --- a/configlib-core/src/test/java/de/exlll/configlib/SerializersTest.java +++ b/configlib-core/src/test/java/de/exlll/configlib/SerializersTest.java @@ -61,17 +61,6 @@ void numberSerializerRequiresValidNumberType() { ); } - @Test - void numberSerializerDeserializeInvalidType() { - NumberSerializer serializer = new NumberSerializer(int.class); - - assertThrowsConfigurationException( - () -> serializer.deserialize(BigInteger.ONE), - "Cannot deserialize element '1' of type BigInteger.\n" + - "This serializer only supports primitive number types and their wrapper types." - ); - } - @ParameterizedTest @ValueSource(classes = { byte.class, Byte.class, diff --git a/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationsTest.java b/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationsTest.java index bd20bed..c94c264 100644 --- a/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationsTest.java +++ b/configlib-yaml/src/test/java/de/exlll/configlib/YamlConfigurationsTest.java @@ -12,9 +12,12 @@ import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; +import java.util.List; +import static de.exlll.configlib.TestUtils.asList; import static de.exlll.configlib.TestUtils.createPlatformSpecificFilePath; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; class YamlConfigurationsTest { private static final FieldFilter includeI = field -> field.getName().equals("i"); @@ -230,4 +233,79 @@ private void writeStringToStream(String string) { private InputStream inputFromOutput() { return new ByteArrayInputStream(outputStream.toByteArray()); } + + @Configuration + private static final class DoublesConfig { + double d; + Double boxed; + List list; + } + + @Test + void loadYamlConfigurationDoublesAllDecimal() { + writeStringToFile( + """ + d: 10.0 + boxed: 20.0 + list: + - 1.0 + - 2.0 + - 3.0 + """ + ); + DoublesConfig config = YamlConfigurations.load(yamlFile, DoublesConfig.class); + assertEquals(10.0, config.d); + assertEquals(20.0, config.boxed); + assertEquals(asList(1.0, 2.0, 3.0), config.list); + } + + @Test + void loadYamlConfigurationDoublesUnboxed() { + writeStringToFile("d: 10"); + DoublesConfig config = YamlConfigurations.load(yamlFile, DoublesConfig.class); + assertEquals(10.0, config.d); + } + + @Test + void loadYamlConfigurationDoublesBoxed() { + writeStringToFile("boxed: 20"); + DoublesConfig config = YamlConfigurations.load(yamlFile, DoublesConfig.class); + assertEquals(20.0, config.boxed); + } + + @Test + void loadYamlConfigurationDoublesCollection() { + writeStringToFile( + """ + list: + - 1.0 + - 2 + - 3.0 + """ + ); + DoublesConfig config = YamlConfigurations.load(yamlFile, DoublesConfig.class); + assertEquals(asList(1.0, 2.0, 3.0), config.list); + } + + @Test + void loadYamlConfigurationDoublesWithNulls() { + writeStringToFile( + """ + boxed: null + list: + - null + - null + - 1.0 + - 2 + """ + ); + DoublesConfig config = YamlConfigurations.load( + yamlFile, + DoublesConfig.class, + builder -> builder.inputNulls(true) + ); + assertEquals(0.0, config.d); + assertNull(config.boxed); + assertEquals(asList(null, null, 1.0, 2.0), config.list); + } }