@@ -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
@@ -202,6 +204,27 @@ class KotlinSerializerCodecTest {
202
204
assertRoundTrips(expectedNulls, dataClass, altConfiguration)
203
205
}
204
206
207
+ @Test
208
+ fun testDataClassWithNullableGenericsNotNull () {
209
+ val expected =
210
+ """ {
211
+ | "box": {"boxed": "String"}
212
+ |}"""
213
+ .trimMargin()
214
+
215
+ val dataClass = DataClassWithNullableGeneric (Box (" String" ))
216
+ assertRoundTrips(expected, dataClass)
217
+ }
218
+
219
+ @Test
220
+ fun testDataClassWithNullableGenericsNull () {
221
+ val expectedDefault = """ {"box": {}}"""
222
+ val dataClass = DataClassWithNullableGeneric (Box (null ))
223
+ assertRoundTrips(expectedDefault, dataClass)
224
+ val expectedNull = """ {"box": {"boxed": null}}"""
225
+ assertRoundTrips(expectedNull, dataClass, altConfiguration)
226
+ }
227
+
205
228
@Test
206
229
fun testDataClassSelfReferential () {
207
230
val expected =
0 commit comments