Skip to content

Commit f74fc40

Browse files
authored
Merge pull request #255 from ProjectMapK/porting
Porting #868 and #869
2 parents c405372 + 90b4008 commit f74fc40

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed

src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinFeature.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public enum class KotlinFeature(internal val enabledByDefault: Boolean) {
8989

9090
public companion object {
9191
internal val defaults
92-
get() = values().fold(BitSet(Int.SIZE_BITS)) { acc, cur ->
92+
get() = entries.fold(BitSet(Int.SIZE_BITS)) { acc, cur ->
9393
acc.apply { if (cur.enabledByDefault) this.or(cur.bitSet) }
9494
}
9595
}

src/test/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinModuleTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class KotlinModuleTest {
1515
@Test
1616
fun setKotlinFeatureTest() {
1717
val builder = KotlinModule.Builder().apply {
18-
KotlinFeature.values().forEach { enable(it) }
18+
KotlinFeature.entries.forEach { enable(it) }
1919
}
2020

2121
assertTrue(builder.isEnabled(KotlinFeature.NullToEmptyCollection))
@@ -27,7 +27,7 @@ class KotlinModuleTest {
2727
assertTrue(builder.isEnabled(KotlinFeature.UseJavaDurationConversion))
2828

2929
builder.apply {
30-
KotlinFeature.values().forEach { disable(it) }
30+
KotlinFeature.entries.forEach { disable(it) }
3131
}
3232

3333
assertFalse(builder.isEnabled(KotlinFeature.NullToEmptyCollection))
@@ -84,7 +84,7 @@ class KotlinModuleTest {
8484
val module = KotlinModule.Builder().apply {
8585
withCacheSize(KotlinModule.CacheSize(123, 321))
8686

87-
KotlinFeature.values().forEach {
87+
KotlinFeature.entries.forEach {
8888
configure(it, enabled)
8989
}
9090
}.build()

src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zIntegration/deser/FailNullForPrimitiveTest.kt

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,42 @@ import org.junit.jupiter.api.Test
99
import org.junit.jupiter.api.assertThrows
1010

1111
private class FailNullForPrimitiveTest {
12-
data class Dto(
12+
val mapper = jacksonObjectMapper()
13+
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
14+
15+
data class NoDefaultValue(
1316
val foo: Int,
1417
val bar: Int?
1518
)
1619

1720
@Test
18-
fun test() {
19-
val mapper = jacksonObjectMapper()
20-
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
21+
fun noDefaultValueTest() {
22+
// If no default value is set, it will fail if undefined or null is entered
23+
assertThrows<MismatchedInputException> {
24+
mapper.readValue<NoDefaultValue>("{}")
25+
}
2126

2227
assertThrows<MismatchedInputException> {
23-
mapper.readValue<Dto>("{}")
28+
mapper.readValue<NoDefaultValue>("""{"foo":null}""")
2429
}
2530

31+
assertEquals(NoDefaultValue(0, null), mapper.readValue<NoDefaultValue>("""{"foo":0}"""))
32+
}
33+
34+
data class HasDefaultValue(
35+
val foo: Int = -1,
36+
val bar: Int? = -1
37+
)
38+
39+
@Test
40+
fun hasDefaultValueTest() {
41+
// If a default value is set, an input of undefined will succeed, but null will fail
42+
assertEquals(HasDefaultValue(-1, -1), mapper.readValue<HasDefaultValue>("{}"))
43+
2644
assertThrows<MismatchedInputException> {
27-
mapper.readValue<Dto>("""{"foo":null}""")
45+
mapper.readValue<HasDefaultValue>("""{"foo":null}""")
2846
}
2947

30-
assertEquals(Dto(0, null), mapper.readValue<Dto>("""{"foo":0}"""))
48+
assertEquals(HasDefaultValue(0, null), mapper.readValue<HasDefaultValue>("""{"foo":0, "bar":null}"""))
3149
}
3250
}

0 commit comments

Comments
 (0)