diff --git a/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinFeature.kt b/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinFeature.kt index 2b99e7dd..8cafd970 100644 --- a/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinFeature.kt +++ b/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinFeature.kt @@ -89,7 +89,7 @@ public enum class KotlinFeature(internal val enabledByDefault: Boolean) { public companion object { internal val defaults - get() = values().fold(BitSet(Int.SIZE_BITS)) { acc, cur -> + get() = entries.fold(BitSet(Int.SIZE_BITS)) { acc, cur -> acc.apply { if (cur.enabledByDefault) this.or(cur.bitSet) } } } diff --git a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinModuleTest.kt b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinModuleTest.kt index 2199456d..6b8d065e 100644 --- a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinModuleTest.kt +++ b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinModuleTest.kt @@ -15,7 +15,7 @@ class KotlinModuleTest { @Test fun setKotlinFeatureTest() { val builder = KotlinModule.Builder().apply { - KotlinFeature.values().forEach { enable(it) } + KotlinFeature.entries.forEach { enable(it) } } assertTrue(builder.isEnabled(KotlinFeature.NullToEmptyCollection)) @@ -27,7 +27,7 @@ class KotlinModuleTest { assertTrue(builder.isEnabled(KotlinFeature.UseJavaDurationConversion)) builder.apply { - KotlinFeature.values().forEach { disable(it) } + KotlinFeature.entries.forEach { disable(it) } } assertFalse(builder.isEnabled(KotlinFeature.NullToEmptyCollection)) @@ -84,7 +84,7 @@ class KotlinModuleTest { val module = KotlinModule.Builder().apply { withCacheSize(KotlinModule.CacheSize(123, 321)) - KotlinFeature.values().forEach { + KotlinFeature.entries.forEach { configure(it, enabled) } }.build() diff --git a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zIntegration/deser/FailNullForPrimitiveTest.kt b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zIntegration/deser/FailNullForPrimitiveTest.kt index 30218c35..cbea77bc 100644 --- a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zIntegration/deser/FailNullForPrimitiveTest.kt +++ b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zIntegration/deser/FailNullForPrimitiveTest.kt @@ -9,24 +9,42 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows private class FailNullForPrimitiveTest { - data class Dto( + val mapper = jacksonObjectMapper() + .enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + + data class NoDefaultValue( val foo: Int, val bar: Int? ) @Test - fun test() { - val mapper = jacksonObjectMapper() - .enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + fun noDefaultValueTest() { + // If no default value is set, it will fail if undefined or null is entered + assertThrows { + mapper.readValue("{}") + } assertThrows { - mapper.readValue("{}") + mapper.readValue("""{"foo":null}""") } + assertEquals(NoDefaultValue(0, null), mapper.readValue("""{"foo":0}""")) + } + + data class HasDefaultValue( + val foo: Int = -1, + val bar: Int? = -1 + ) + + @Test + fun hasDefaultValueTest() { + // If a default value is set, an input of undefined will succeed, but null will fail + assertEquals(HasDefaultValue(-1, -1), mapper.readValue("{}")) + assertThrows { - mapper.readValue("""{"foo":null}""") + mapper.readValue("""{"foo":null}""") } - assertEquals(Dto(0, null), mapper.readValue("""{"foo":0}""")) + assertEquals(HasDefaultValue(0, null), mapper.readValue("""{"foo":0, "bar":null}""")) } }