1
1
package com.fasterxml.jackson.module.kotlin
2
2
3
3
import com.fasterxml.jackson.databind.deser.std.StdValueInstantiator
4
- import org.junit.Assert.assertEquals
5
- import org.junit.Assert.assertTrue
4
+ import org.junit.Assert.*
6
5
import org.junit.Test
7
6
8
7
class KotlinInstantiatorsTest {
9
8
private val mapper = jacksonObjectMapper()
9
+ private val deserConfig = mapper.deserializationConfig
10
10
11
11
private val kotlinInstantiators = KotlinInstantiators (
12
12
ReflectionCache (10 ),
@@ -16,19 +16,13 @@ class KotlinInstantiatorsTest {
16
16
strictNullChecks = false
17
17
)
18
18
19
- private class DefaultClass
20
-
21
- private val deserConfig = mapper.deserializationConfig
22
- private val defaultInstantiator = object : StdValueInstantiator (
23
- deserConfig,
24
- mapper.constructType(DefaultClass ::class .java)
25
- ) {}
26
-
27
19
@Test
28
20
fun `Provides default instantiator for Java class` () {
21
+ val javaType = mapper.constructType(String ::class .java)
22
+ val defaultInstantiator = StdValueInstantiator (deserConfig, javaType)
29
23
val instantiator = kotlinInstantiators.findValueInstantiator(
30
24
deserConfig,
31
- deserConfig.introspect(mapper.constructType( String :: class .java) ),
25
+ deserConfig.introspect(javaType ),
32
26
defaultInstantiator
33
27
)
34
28
@@ -39,13 +33,33 @@ class KotlinInstantiatorsTest {
39
33
fun `Provides KotlinValueInstantiator for Kotlin class` () {
40
34
class TestClass
41
35
36
+ val javaType = mapper.constructType(TestClass ::class .java)
42
37
val instantiator = kotlinInstantiators.findValueInstantiator(
43
38
deserConfig,
44
- deserConfig.introspect(mapper.constructType( TestClass :: class .java) ),
45
- defaultInstantiator
39
+ deserConfig.introspect(javaType ),
40
+ StdValueInstantiator (deserConfig, javaType)
46
41
)
47
42
48
43
assertTrue(instantiator is StdValueInstantiator )
49
44
assertTrue(instantiator::class == KotlinValueInstantiator ::class )
50
45
}
46
+
47
+ @Test
48
+ fun `Throws for Kotlin class when default instantiator isn't StdValueInstantiator` () {
49
+ class TestClass
50
+ class DefaultClass
51
+
52
+ val subClassInstantiator = object : StdValueInstantiator (
53
+ deserConfig,
54
+ mapper.constructType(DefaultClass ::class .java)
55
+ ) {}
56
+
57
+ assertThrows(IllegalStateException ::class .java) {
58
+ kotlinInstantiators.findValueInstantiator(
59
+ deserConfig,
60
+ deserConfig.introspect(mapper.constructType(TestClass ::class .java)),
61
+ subClassInstantiator
62
+ )
63
+ }
64
+ }
51
65
}
0 commit comments