@@ -33,6 +33,7 @@ import org.bson.BsonUndefined
33
33
import org.bson.codecs.DecoderContext
34
34
import org.bson.codecs.EncoderContext
35
35
import org.bson.codecs.configuration.CodecConfigurationException
36
+ import org.bson.codecs.kotlinx.samples.Box
36
37
import org.bson.codecs.kotlinx.samples.DataClassBsonValues
37
38
import org.bson.codecs.kotlinx.samples.DataClassContainsOpen
38
39
import org.bson.codecs.kotlinx.samples.DataClassContainsValueClass
@@ -76,6 +77,7 @@ import org.bson.codecs.kotlinx.samples.DataClassWithMutableMap
76
77
import org.bson.codecs.kotlinx.samples.DataClassWithMutableSet
77
78
import org.bson.codecs.kotlinx.samples.DataClassWithNestedParameterized
78
79
import org.bson.codecs.kotlinx.samples.DataClassWithNestedParameterizedDataClass
80
+ import org.bson.codecs.kotlinx.samples.DataClassWithNullableGeneric
79
81
import org.bson.codecs.kotlinx.samples.DataClassWithNulls
80
82
import org.bson.codecs.kotlinx.samples.DataClassWithPair
81
83
import org.bson.codecs.kotlinx.samples.DataClassWithParameterizedDataClass
@@ -199,6 +201,27 @@ class KotlinSerializerCodecTest {
199
201
assertRoundTrips(expectedNulls, dataClass, altConfiguration)
200
202
}
201
203
204
+ @Test
205
+ fun testDataClassWithNullableGenericsNotNull () {
206
+ val expected =
207
+ """ {
208
+ | "box": {"boxed": "String"}
209
+ |}"""
210
+ .trimMargin()
211
+
212
+ val dataClass = DataClassWithNullableGeneric (Box (" String" ))
213
+ assertRoundTrips(expected, dataClass)
214
+ }
215
+
216
+ @Test
217
+ fun testDataClassWithNullableGenericsNull () {
218
+ val expectedDefault = """ {"box": {}}"""
219
+ val dataClass = DataClassWithNullableGeneric (Box (null ))
220
+ assertRoundTrips(expectedDefault, dataClass)
221
+ val expectedNull = """ {"box": {"boxed": null}}"""
222
+ assertRoundTrips(expectedNull, dataClass, altConfiguration)
223
+ }
224
+
202
225
@Test
203
226
fun testDataClassSelfReferential () {
204
227
val expected =
0 commit comments