@@ -26,10 +26,7 @@ import kotlinx.datetime.LocalTime
26
26
import kotlinx.serialization.ExperimentalSerializationApi
27
27
import kotlinx.serialization.MissingFieldException
28
28
import kotlinx.serialization.SerializationException
29
- import kotlinx.serialization.json.JsonPrimitive
30
- import kotlinx.serialization.json.buildJsonArray
31
- import kotlinx.serialization.json.buildJsonObject
32
- import kotlinx.serialization.json.put
29
+ import kotlinx.serialization.json.*
33
30
import kotlinx.serialization.modules.SerializersModule
34
31
import kotlinx.serialization.modules.plus
35
32
import kotlinx.serialization.modules.polymorphic
@@ -49,68 +46,7 @@ import org.bson.BsonUndefined
49
46
import org.bson.codecs.DecoderContext
50
47
import org.bson.codecs.EncoderContext
51
48
import org.bson.codecs.configuration.CodecConfigurationException
52
- import org.bson.codecs.kotlinx.samples.Box
53
- import org.bson.codecs.kotlinx.samples.DataClassBsonValues
54
- import org.bson.codecs.kotlinx.samples.DataClassContainsOpen
55
- import org.bson.codecs.kotlinx.samples.DataClassContainsValueClass
56
- import org.bson.codecs.kotlinx.samples.DataClassEmbedded
57
- import org.bson.codecs.kotlinx.samples.DataClassKey
58
- import org.bson.codecs.kotlinx.samples.DataClassLastItemDefaultsToNull
59
- import org.bson.codecs.kotlinx.samples.DataClassListOfDataClasses
60
- import org.bson.codecs.kotlinx.samples.DataClassListOfListOfDataClasses
61
- import org.bson.codecs.kotlinx.samples.DataClassListOfSealed
62
- import org.bson.codecs.kotlinx.samples.DataClassMapOfDataClasses
63
- import org.bson.codecs.kotlinx.samples.DataClassMapOfListOfDataClasses
64
- import org.bson.codecs.kotlinx.samples.DataClassNestedParameterizedTypes
65
- import org.bson.codecs.kotlinx.samples.DataClassOpen
66
- import org.bson.codecs.kotlinx.samples.DataClassOpenA
67
- import org.bson.codecs.kotlinx.samples.DataClassOpenB
68
- import org.bson.codecs.kotlinx.samples.DataClassOptionalBsonValues
69
- import org.bson.codecs.kotlinx.samples.DataClassParameterized
70
- import org.bson.codecs.kotlinx.samples.DataClassSealed
71
- import org.bson.codecs.kotlinx.samples.DataClassSealedA
72
- import org.bson.codecs.kotlinx.samples.DataClassSealedB
73
- import org.bson.codecs.kotlinx.samples.DataClassSealedC
74
- import org.bson.codecs.kotlinx.samples.DataClassSelfReferential
75
- import org.bson.codecs.kotlinx.samples.DataClassWithAnnotations
76
- import org.bson.codecs.kotlinx.samples.DataClassWithBooleanMapKey
77
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonConstructor
78
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonDiscriminator
79
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonExtraElements
80
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonId
81
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonIgnore
82
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonProperty
83
- import org.bson.codecs.kotlinx.samples.DataClassWithBsonRepresentation
84
- import org.bson.codecs.kotlinx.samples.DataClassWithCollections
85
- import org.bson.codecs.kotlinx.samples.DataClassWithContextualDateValues
86
- import org.bson.codecs.kotlinx.samples.DataClassWithDataClassMapKey
87
- import org.bson.codecs.kotlinx.samples.DataClassWithDateValues
88
- import org.bson.codecs.kotlinx.samples.DataClassWithDefaults
89
- import org.bson.codecs.kotlinx.samples.DataClassWithEmbedded
90
- import org.bson.codecs.kotlinx.samples.DataClassWithEncodeDefault
91
- import org.bson.codecs.kotlinx.samples.DataClassWithEnum
92
- import org.bson.codecs.kotlinx.samples.DataClassWithEnumMapKey
93
- import org.bson.codecs.kotlinx.samples.DataClassWithFailingInit
94
- import org.bson.codecs.kotlinx.samples.DataClassWithJsonElement
95
- import org.bson.codecs.kotlinx.samples.DataClassWithJsonElements
96
- import org.bson.codecs.kotlinx.samples.DataClassWithJsonElementsNullable
97
- import org.bson.codecs.kotlinx.samples.DataClassWithListThatLastItemDefaultsToNull
98
- import org.bson.codecs.kotlinx.samples.DataClassWithMutableList
99
- import org.bson.codecs.kotlinx.samples.DataClassWithMutableMap
100
- import org.bson.codecs.kotlinx.samples.DataClassWithMutableSet
101
- import org.bson.codecs.kotlinx.samples.DataClassWithNestedParameterized
102
- import org.bson.codecs.kotlinx.samples.DataClassWithNestedParameterizedDataClass
103
- import org.bson.codecs.kotlinx.samples.DataClassWithNullableGeneric
104
- import org.bson.codecs.kotlinx.samples.DataClassWithNulls
105
- import org.bson.codecs.kotlinx.samples.DataClassWithPair
106
- import org.bson.codecs.kotlinx.samples.DataClassWithParameterizedDataClass
107
- import org.bson.codecs.kotlinx.samples.DataClassWithRequired
108
- import org.bson.codecs.kotlinx.samples.DataClassWithSequence
109
- import org.bson.codecs.kotlinx.samples.DataClassWithSimpleValues
110
- import org.bson.codecs.kotlinx.samples.DataClassWithTriple
111
- import org.bson.codecs.kotlinx.samples.Key
112
- import org.bson.codecs.kotlinx.samples.SealedInterface
113
- import org.bson.codecs.kotlinx.samples.ValueClass
49
+ import org.bson.codecs.kotlinx.samples.*
114
50
import org.bson.json.JsonMode
115
51
import org.bson.json.JsonWriterSettings
116
52
import org.junit.jupiter.api.Test
@@ -1126,6 +1062,13 @@ class KotlinSerializerCodecTest {
1126
1062
}
1127
1063
}
1128
1064
1065
+ @Test
1066
+ fun testSnakeCaseNamingStrategy () {
1067
+ val expected = """ {"camel_case_key": "snake_case_value", "a_b_cd": "camelCaseValue"}"""
1068
+ val dataClass = DataClassWithCamelCase (" snake_case_value" , " camelCaseValue" )
1069
+ assertRoundTrips(expected, dataClass, BsonConfiguration (bsonNamingStrategy = BsonNamingStrategy .SNAKE_CASE ))
1070
+ }
1071
+
1129
1072
private inline fun <reified T : Any > assertRoundTrips (
1130
1073
expected : String ,
1131
1074
value : T ,
@@ -1184,6 +1127,7 @@ class KotlinSerializerCodecTest {
1184
1127
serializersModule : SerializersModule = defaultSerializersModule,
1185
1128
configuration : BsonConfiguration = BsonConfiguration ()
1186
1129
): T {
1130
+ println (" Deserializing: ${value.toJson()} " )
1187
1131
val codec = KotlinSerializerCodec .create(T ::class , serializersModule, configuration)!!
1188
1132
return codec.decode(BsonDocumentReader (value), DecoderContext .builder().build())
1189
1133
}
0 commit comments