Skip to content

Commit d94e3d9

Browse files
authored
Merge pull request #868 from k163377/add-null-for-primitive-test
Added test case for FAIL_ON_NULL_FOR_PRIMITIVES
2 parents 2ee6fe9 + a1ace2f commit d94e3d9

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

release-notes/CREDITS-2.x

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Contributors:
1818
# 2.19.0 (not yet released)
1919

2020
WrongWrong (@k163377)
21+
* #868: Added test case for FAIL_ON_NULL_FOR_PRIMITIVES
2122
* #866: Upgrade to JUnit5
2223
* #861: Update Kotlin to 1.9.24
2324
* #858: Refactor findDefaultCreator

src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/FailNullForPrimitiveTest.kt

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,47 @@ import com.fasterxml.jackson.databind.DeserializationFeature
44
import com.fasterxml.jackson.databind.exc.MismatchedInputException
55
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
66
import com.fasterxml.jackson.module.kotlin.readValue
7-
import org.junit.jupiter.api.Assertions.assertEquals
7+
import org.junit.jupiter.api.Assertions.assertEquals
88
import org.junit.jupiter.api.Assertions.assertThrows
99
import org.junit.jupiter.api.Test
1010

1111
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::class.java) {
24+
mapper.readValue<NoDefaultValue>("{}")
25+
}
2126

2227
assertThrows(MismatchedInputException::class.java) {
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::class.java) {
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)