diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/JacksonInjectTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/JacksonInjectTest.kt index 5b8e3101..7da1ada9 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/JacksonInjectTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/JacksonInjectTest.kt @@ -26,7 +26,11 @@ class JacksonInjectTest { @get:JacksonInject("noNNn") val noNNn: NullableObject?, @get:JacksonInject("noNN") - val noNN: NullableObject? + val noNN: NullableObject?, + @get:JacksonInject("tupNn") + val tupNn: TwoUnitPrimitive, + @get:JacksonInject("tupN") + val tupN: TwoUnitPrimitive? ) @Test @@ -39,7 +43,9 @@ class JacksonInjectTest { "noNnNn" to NullableObject("noNnNn"), "noNnN" to NullableObject(null), "noNNn" to NullableObject("noNNn"), - "noNN" to NullableObject(null) + "noNN" to NullableObject(null), + "tupNn" to TwoUnitPrimitive(3), + "tupN" to TwoUnitPrimitive(4) ) val reader = jacksonObjectMapper() diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/ValueClasses.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/ValueClasses.kt index 1bfb3ccd..c381da27 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/ValueClasses.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/ValueClasses.kt @@ -42,3 +42,14 @@ value class NullableObject(val v: String?) { override fun deserializeKey(key: String, ctxt: DeserializationContext) = NullableObject("$key-deser") } } + +@JvmInline +value class TwoUnitPrimitive(val v: Long) { + class Deserializer : StdDeserializer(TwoUnitPrimitive::class.java) { + override fun deserialize(p: JsonParser, ctxt: DeserializationContext): TwoUnitPrimitive = TwoUnitPrimitive(p.longValue + 100) + } + + class KeyDeserializer : JacksonKeyDeserializer() { + override fun deserializeKey(key: String, ctxt: DeserializationContext) = TwoUnitPrimitive(key.toLong() + 100) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/WithoutCustomDeserializeMethodTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/WithoutCustomDeserializeMethodTest.kt index 7706f66c..93f8f9ab 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/WithoutCustomDeserializeMethodTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/WithoutCustomDeserializeMethodTest.kt @@ -45,6 +45,12 @@ class WithoutCustomDeserializeMethodTest { assertNotEquals(NullableObject(null), result, "kogera #209 has been fixed.") } } + + @Test + fun twoUnitPrimitive() { + val result = defaultMapper.readValue("1") + assertEquals(TwoUnitPrimitive(1), result) + } } data class Dst( @@ -53,7 +59,9 @@ class WithoutCustomDeserializeMethodTest { val nnoNn: NonNullObject, val nnoN: NonNullObject?, val noNn: NullableObject, - val noN: NullableObject? + val noN: NullableObject?, + val tupNn: TwoUnitPrimitive, + val tupN: TwoUnitPrimitive? ) @Test @@ -64,7 +72,9 @@ class WithoutCustomDeserializeMethodTest { NonNullObject("foo"), NonNullObject("bar"), NullableObject("baz"), - NullableObject("qux") + NullableObject("qux"), + TwoUnitPrimitive(3), + TwoUnitPrimitive(4) ) val src = defaultMapper.writeValueAsString(expected) val result = defaultMapper.readValue(src) @@ -80,6 +90,8 @@ class WithoutCustomDeserializeMethodTest { NonNullObject("foo"), null, NullableObject(null), + null, + TwoUnitPrimitive(3), null ) val src = defaultMapper.writeValueAsString(expected) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/defaultArgument/TwoUnitPrimitiveTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/defaultArgument/TwoUnitPrimitiveTest.kt new file mode 100644 index 00000000..bcc45599 --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/defaultArgument/TwoUnitPrimitiveTest.kt @@ -0,0 +1,38 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.defaultArgument + +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class TwoUnitPrimitiveTest { + data class ByConstructor( + val nn: TwoUnitPrimitive = TwoUnitPrimitive(1), + val nNn: TwoUnitPrimitive? = TwoUnitPrimitive(2), + val nN: TwoUnitPrimitive? = null + ) + + @Test + fun byConstructorTest() { + assertEquals(ByConstructor(), defaultMapper.readValue("{}")) + } + + data class ByFactory(val nn: TwoUnitPrimitive, val nNn: TwoUnitPrimitive?, val nN: TwoUnitPrimitive?) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + nn: TwoUnitPrimitive = TwoUnitPrimitive(1), + nNn: TwoUnitPrimitive? = TwoUnitPrimitive(2), + nN: TwoUnitPrimitive? = null + ) = ByFactory(nn, nNn, nN) + } + } + + @Test + fun byFactoryTest() { + assertEquals(ByFactory.creator(), defaultMapper.readValue("{}")) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/SpecifiedForObjectMapperTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/SpecifiedForObjectMapperTest.kt index 288a13e6..220cf17f 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/SpecifiedForObjectMapperTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/SpecifiedForObjectMapperTest.kt @@ -5,6 +5,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive import com.fasterxml.jackson.module.kotlin.readValue import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Nested @@ -18,6 +19,7 @@ class SpecifiedForObjectMapperTest { this.addDeserializer(Primitive::class.java, Primitive.Deserializer()) this.addDeserializer(NonNullObject::class.java, NonNullObject.Deserializer()) this.addDeserializer(NullableObject::class.java, NullableObject.DeserializerWrapsNullable()) + this.addDeserializer(TwoUnitPrimitive::class.java, TwoUnitPrimitive.Deserializer()) } this.registerModule(module) } @@ -50,9 +52,15 @@ class SpecifiedForObjectMapperTest { @Test fun nullString() { val result = mapper.readValue("null") - assertNotEquals(NullableObject("null-value-deser"), result, "kogera #209 has been fixed.") + assertNotEquals(NullableObject("null-value-deser"), result, "#209 has been fixed.") } } + + @Test + fun twoUnitPrimitive() { + val result = mapper.readValue("1") + assertEquals(TwoUnitPrimitive(101), result) + } } data class Dst( @@ -61,7 +69,9 @@ class SpecifiedForObjectMapperTest { val nnoNn: NonNullObject, val nnoN: NonNullObject?, val noNn: NullableObject, - val noN: NullableObject? + val noN: NullableObject?, + val tupNn: TwoUnitPrimitive, + val tupN: TwoUnitPrimitive? ) @Test @@ -72,7 +82,9 @@ class SpecifiedForObjectMapperTest { NonNullObject("foo"), NonNullObject("bar"), NullableObject("baz"), - NullableObject("qux") + NullableObject("qux"), + TwoUnitPrimitive(3), + TwoUnitPrimitive(4) ) val src = mapper.writeValueAsString(base) val result = mapper.readValue(src) @@ -83,7 +95,9 @@ class SpecifiedForObjectMapperTest { NonNullObject("foo-deser"), NonNullObject("bar-deser"), NullableObject("baz-deser"), - NullableObject("qux-deser") + NullableObject("qux-deser"), + TwoUnitPrimitive(103), + TwoUnitPrimitive(104) ) assertEquals(expected, result) } @@ -96,6 +110,8 @@ class SpecifiedForObjectMapperTest { NonNullObject("foo"), null, NullableObject(null), + null, + TwoUnitPrimitive(3), null ) val src = mapper.writeValueAsString(base) @@ -107,6 +123,8 @@ class SpecifiedForObjectMapperTest { NonNullObject("foo-deser"), null, NullableObject("null-value-deser"), + null, + TwoUnitPrimitive(103), null ) assertEquals(expected, result) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/byAnnotation/specifiedForProperty/TwoUnitPrimitiveTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/byAnnotation/specifiedForProperty/TwoUnitPrimitiveTest.kt new file mode 100644 index 00000000..13bb61c5 --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/deserializer/byAnnotation/specifiedForProperty/TwoUnitPrimitiveTest.kt @@ -0,0 +1,67 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.deserializer.byAnnotation.specifiedForProperty + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test + +class TwoUnitPrimitiveTest { + data class NonNull( + @get:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class) + val getterAnn: TwoUnitPrimitive, + @field:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class) + val fieldAnn: TwoUnitPrimitive + ) + + @Test + fun nonNull() { + val result = defaultMapper.readValue( + """ + { + "getterAnn" : 1, + "fieldAnn" : 2 + } + """.trimIndent() + ) + assertEquals(NonNull(TwoUnitPrimitive(101), TwoUnitPrimitive(102)), result) + } + + data class Nullable( + @get:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class) + val getterAnn: TwoUnitPrimitive?, + @field:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class) + val fieldAnn: TwoUnitPrimitive? + ) + + @Nested + inner class NullableTest { + @Test + fun nonNullInput() { + val result = defaultMapper.readValue( + """ + { + "getterAnn" : 1, + "fieldAnn" : 2 + } + """.trimIndent() + ) + assertEquals(Nullable(TwoUnitPrimitive(101), TwoUnitPrimitive(102)), result) + } + + @Test + fun nullInput() { + val result = defaultMapper.readValue( + """ + { + "getterAnn" : null, + "fieldAnn" : null + } + """.trimIndent() + ) + assertEquals(Nullable(null, null), result) + } + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/jsonCreator/InCreatorArgumentTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/jsonCreator/InCreatorArgumentTest.kt index ddd9ecb7..34b48515 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/jsonCreator/InCreatorArgumentTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/jsonCreator/InCreatorArgumentTest.kt @@ -5,6 +5,7 @@ import com.fasterxml.jackson.module.kotlin.defaultMapper import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive import com.fasterxml.jackson.module.kotlin.readValue import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test @@ -12,6 +13,7 @@ import org.junit.jupiter.api.Test private fun Primitive.modify(): Primitive = Primitive(v + 100) private fun NonNullObject.modify(): NonNullObject = NonNullObject("$v-creator") private fun NullableObject.modify(): NullableObject = NullableObject(v!! + "-creator") +private fun TwoUnitPrimitive.modify(): TwoUnitPrimitive = TwoUnitPrimitive(v + 100) class InCreatorArgumentTest { data class Dst( @@ -20,7 +22,9 @@ class InCreatorArgumentTest { val nnoNn: NonNullObject, val nnoN: NonNullObject?, val noNn: NullableObject, - val noN: NullableObject? + val noN: NullableObject?, + val tupNn: TwoUnitPrimitive, + val tupN: TwoUnitPrimitive? ) { companion object { @JvmStatic @@ -31,14 +35,18 @@ class InCreatorArgumentTest { nnoNn: NonNullObject, nnoN: NonNullObject?, noNn: NullableObject, - noN: NullableObject? + noN: NullableObject?, + tupNn: TwoUnitPrimitive, + tupN: TwoUnitPrimitive? ) = Dst( pNn.modify(), pN?.modify(), nnoNn.modify(), nnoN?.modify(), noNn.modify(), - noN?.modify() + noN?.modify(), + tupNn.modify(), + tupN?.modify() ) } } @@ -51,7 +59,9 @@ class InCreatorArgumentTest { NonNullObject("nnoNn"), NonNullObject("nnoN"), NullableObject("noNn"), - NullableObject("noN") + NullableObject("noN"), + TwoUnitPrimitive(3), + TwoUnitPrimitive(4) ) val result = defaultMapper.readValue(defaultMapper.writeValueAsString(base)) @@ -62,7 +72,9 @@ class InCreatorArgumentTest { nnoNn = base.nnoNn.modify(), nnoN = base.nnoN?.modify(), noNn = base.noNn.modify(), - noN = base.noN?.modify() + noN = base.noN?.modify(), + tupNn = base.tupNn.modify(), + tupN = base.tupN?.modify() ), result ) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/WithoutCustomDeserializeMethodTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/WithoutCustomDeserializeMethodTest.kt index 3f018fe0..dc01969c 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/WithoutCustomDeserializeMethodTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/WithoutCustomDeserializeMethodTest.kt @@ -9,6 +9,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive import com.fasterxml.jackson.module.kotlin.readValue import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue @@ -42,12 +43,19 @@ class WithoutCustomDeserializeMethodTest { val result = defaultMapper.readValue>("""{"bar":null}""") assertEquals(mapOf(NullableObject("bar") to null), result) } + + @Test + fun twoUnitPrimitive() { + val result = defaultMapper.readValue>("""{"1":null}""") + assertEquals(mapOf(TwoUnitPrimitive(1) to null), result) + } } data class Dst( val p: Map, val nn: Map, - val n: Map + val n: Map, + val tup: Map ) @Test @@ -56,14 +64,16 @@ class WithoutCustomDeserializeMethodTest { { "p":{"1":null}, "nn":{"foo":null}, - "n":{"bar":null} + "n":{"bar":null}, + "tup":{"2":null} } """.trimIndent() val result = defaultMapper.readValue(src) val expected = Dst( mapOf(Primitive(1) to null), mapOf(NonNullObject("foo") to null), - mapOf(NullableObject("bar") to null) + mapOf(NullableObject("bar") to null), + mapOf(TwoUnitPrimitive(2) to null) ) assertEquals(expected, result) @@ -86,8 +96,9 @@ class WithoutCustomDeserializeMethodTest { data class Wrapped(val first: String, val second: String) { class KeyDeserializer : JacksonKeyDeserializer() { - override fun deserializeKey(key: String, ctxt: DeserializationContext) = - key.split("-").let { Wrapped(it[0], it[1]) } + override fun deserializeKey(key: String, ctxt: DeserializationContext) = key + .split("-") + .let { Wrapped(it[0], it[1]) } } } @@ -105,7 +116,9 @@ class WithoutCustomDeserializeMethodTest { val mapper = jacksonObjectMapper() .registerModule( object : SimpleModule() { - init { addKeyDeserializer(Wrapped::class.java, Wrapped.KeyDeserializer()) } + init { + addKeyDeserializer(Wrapped::class.java, Wrapped.KeyDeserializer()) + } } ) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/keyDeserializer/SpecifiedForObjectMapperTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/keyDeserializer/SpecifiedForObjectMapperTest.kt index 70b4a9ca..1c0e4a73 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/keyDeserializer/SpecifiedForObjectMapperTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/mapKey/keyDeserializer/SpecifiedForObjectMapperTest.kt @@ -5,6 +5,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive import com.fasterxml.jackson.module.kotlin.readValue import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Nested @@ -17,6 +18,7 @@ class SpecifiedForObjectMapperTest { this.addKeyDeserializer(Primitive::class.java, Primitive.KeyDeserializer()) this.addKeyDeserializer(NonNullObject::class.java, NonNullObject.KeyDeserializer()) this.addKeyDeserializer(NullableObject::class.java, NullableObject.KeyDeserializer()) + this.addKeyDeserializer(TwoUnitPrimitive::class.java, TwoUnitPrimitive.KeyDeserializer()) } this.registerModule(module) } @@ -41,12 +43,19 @@ class SpecifiedForObjectMapperTest { val result = mapper.readValue>("""{"bar":null}""") assertEquals(mapOf(NullableObject("bar-deser") to null), result) } + + @Test + fun twoUnitPrimitive() { + val result = mapper.readValue>("""{"1":null}""") + assertEquals(mapOf(TwoUnitPrimitive(101) to null), result) + } } data class Dst( val p: Map, val nn: Map, - val n: Map + val n: Map, + val tup: Map ) @Test @@ -55,14 +64,16 @@ class SpecifiedForObjectMapperTest { { "p":{"1":null}, "nn":{"foo":null}, - "n":{"bar":null} + "n":{"bar":null}, + "tup":{"1":null} } """.trimIndent() val result = mapper.readValue(src) val expected = Dst( mapOf(Primitive(101) to null), mapOf(NonNullObject("foo-deser") to null), - mapOf(NullableObject("bar-deser") to null) + mapOf(NullableObject("bar-deser") to null), + mapOf(TwoUnitPrimitive(101) to null) ) assertEquals(expected, result) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithDefaultArgumentsTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithDefaultArgumentsTest.kt new file mode 100644 index 00000000..624b8a3e --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithDefaultArgumentsTest.kt @@ -0,0 +1,387 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.parameterSize.twoUnitPrimitive + +import com.fasterxml.jackson.module.kotlin.assertReflectEquals +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import kotlin.reflect.jvm.internal.KotlinReflectionInternalError + +/** + * Up to argument size 32 there is one mask argument for the default argument, + * 33 ~ 64 there are two, and 65 there are three, so each boundary value is tested. + * Also, if the default argument is set, the maximum argument size that can be set in the constructor is 124, + * so that case is tested as well. + */ +class DeserializeByConstructorWithDefaultArgumentsTest { + data class Dst32( + val p00: TwoUnitPrimitive = TwoUnitPrimitive(0), + val p01: TwoUnitPrimitive = TwoUnitPrimitive(1), + val p02: TwoUnitPrimitive = TwoUnitPrimitive(2), + val p03: TwoUnitPrimitive = TwoUnitPrimitive(3), + val p04: TwoUnitPrimitive = TwoUnitPrimitive(4), + val p05: TwoUnitPrimitive = TwoUnitPrimitive(5), + val p06: TwoUnitPrimitive = TwoUnitPrimitive(6), + val p07: TwoUnitPrimitive = TwoUnitPrimitive(7), + val p08: TwoUnitPrimitive = TwoUnitPrimitive(8), + val p09: TwoUnitPrimitive = TwoUnitPrimitive(9), + val p10: TwoUnitPrimitive = TwoUnitPrimitive(10), + val p11: TwoUnitPrimitive = TwoUnitPrimitive(11), + val p12: TwoUnitPrimitive = TwoUnitPrimitive(12), + val p13: TwoUnitPrimitive = TwoUnitPrimitive(13), + val p14: TwoUnitPrimitive = TwoUnitPrimitive(14), + val p15: TwoUnitPrimitive = TwoUnitPrimitive(15), + val p16: TwoUnitPrimitive = TwoUnitPrimitive(16), + val p17: TwoUnitPrimitive = TwoUnitPrimitive(17), + val p18: TwoUnitPrimitive = TwoUnitPrimitive(18), + val p19: TwoUnitPrimitive = TwoUnitPrimitive(19), + val p20: TwoUnitPrimitive = TwoUnitPrimitive(20), + val p21: TwoUnitPrimitive = TwoUnitPrimitive(21), + val p22: TwoUnitPrimitive = TwoUnitPrimitive(22), + val p23: TwoUnitPrimitive = TwoUnitPrimitive(23), + val p24: TwoUnitPrimitive = TwoUnitPrimitive(24), + val p25: TwoUnitPrimitive = TwoUnitPrimitive(25), + val p26: TwoUnitPrimitive = TwoUnitPrimitive(26), + val p27: TwoUnitPrimitive = TwoUnitPrimitive(27), + val p28: TwoUnitPrimitive = TwoUnitPrimitive(28), + val p29: TwoUnitPrimitive = TwoUnitPrimitive(29), + val p30: TwoUnitPrimitive = TwoUnitPrimitive(30), + val p31: TwoUnitPrimitive = TwoUnitPrimitive(31) + ) + + @Test + fun test32() { + assertThrows { + Assertions.assertEquals(Dst32(), defaultMapper.readValue("{}")) + // TODO: #762 is resolved after Kotlin 2.0, so the reason why throw is done is to make CI with Kotlin 2.0 succeed. + // After upgrading to Kotlin 2.0, remove exception-related descriptions. + if (KotlinVersion.CURRENT.major >= 2) throw KotlinReflectionInternalError("") + } + } + + data class Dst33( + val p00: TwoUnitPrimitive = TwoUnitPrimitive(0), + val p01: TwoUnitPrimitive = TwoUnitPrimitive(1), + val p02: TwoUnitPrimitive = TwoUnitPrimitive(2), + val p03: TwoUnitPrimitive = TwoUnitPrimitive(3), + val p04: TwoUnitPrimitive = TwoUnitPrimitive(4), + val p05: TwoUnitPrimitive = TwoUnitPrimitive(5), + val p06: TwoUnitPrimitive = TwoUnitPrimitive(6), + val p07: TwoUnitPrimitive = TwoUnitPrimitive(7), + val p08: TwoUnitPrimitive = TwoUnitPrimitive(8), + val p09: TwoUnitPrimitive = TwoUnitPrimitive(9), + val p10: TwoUnitPrimitive = TwoUnitPrimitive(10), + val p11: TwoUnitPrimitive = TwoUnitPrimitive(11), + val p12: TwoUnitPrimitive = TwoUnitPrimitive(12), + val p13: TwoUnitPrimitive = TwoUnitPrimitive(13), + val p14: TwoUnitPrimitive = TwoUnitPrimitive(14), + val p15: TwoUnitPrimitive = TwoUnitPrimitive(15), + val p16: TwoUnitPrimitive = TwoUnitPrimitive(16), + val p17: TwoUnitPrimitive = TwoUnitPrimitive(17), + val p18: TwoUnitPrimitive = TwoUnitPrimitive(18), + val p19: TwoUnitPrimitive = TwoUnitPrimitive(19), + val p20: TwoUnitPrimitive = TwoUnitPrimitive(20), + val p21: TwoUnitPrimitive = TwoUnitPrimitive(21), + val p22: TwoUnitPrimitive = TwoUnitPrimitive(22), + val p23: TwoUnitPrimitive = TwoUnitPrimitive(23), + val p24: TwoUnitPrimitive = TwoUnitPrimitive(24), + val p25: TwoUnitPrimitive = TwoUnitPrimitive(25), + val p26: TwoUnitPrimitive = TwoUnitPrimitive(26), + val p27: TwoUnitPrimitive = TwoUnitPrimitive(27), + val p28: TwoUnitPrimitive = TwoUnitPrimitive(28), + val p29: TwoUnitPrimitive = TwoUnitPrimitive(29), + val p30: TwoUnitPrimitive = TwoUnitPrimitive(30), + val p31: TwoUnitPrimitive = TwoUnitPrimitive(31), + val p32: TwoUnitPrimitive = TwoUnitPrimitive(32) + ) + + @Test + fun test33() { + Assertions.assertEquals(Dst33(), defaultMapper.readValue("{}")) + } + + data class Dst64( + val p00: TwoUnitPrimitive = TwoUnitPrimitive(0), + val p01: TwoUnitPrimitive = TwoUnitPrimitive(1), + val p02: TwoUnitPrimitive = TwoUnitPrimitive(2), + val p03: TwoUnitPrimitive = TwoUnitPrimitive(3), + val p04: TwoUnitPrimitive = TwoUnitPrimitive(4), + val p05: TwoUnitPrimitive = TwoUnitPrimitive(5), + val p06: TwoUnitPrimitive = TwoUnitPrimitive(6), + val p07: TwoUnitPrimitive = TwoUnitPrimitive(7), + val p08: TwoUnitPrimitive = TwoUnitPrimitive(8), + val p09: TwoUnitPrimitive = TwoUnitPrimitive(9), + val p10: TwoUnitPrimitive = TwoUnitPrimitive(10), + val p11: TwoUnitPrimitive = TwoUnitPrimitive(11), + val p12: TwoUnitPrimitive = TwoUnitPrimitive(12), + val p13: TwoUnitPrimitive = TwoUnitPrimitive(13), + val p14: TwoUnitPrimitive = TwoUnitPrimitive(14), + val p15: TwoUnitPrimitive = TwoUnitPrimitive(15), + val p16: TwoUnitPrimitive = TwoUnitPrimitive(16), + val p17: TwoUnitPrimitive = TwoUnitPrimitive(17), + val p18: TwoUnitPrimitive = TwoUnitPrimitive(18), + val p19: TwoUnitPrimitive = TwoUnitPrimitive(19), + val p20: TwoUnitPrimitive = TwoUnitPrimitive(20), + val p21: TwoUnitPrimitive = TwoUnitPrimitive(21), + val p22: TwoUnitPrimitive = TwoUnitPrimitive(22), + val p23: TwoUnitPrimitive = TwoUnitPrimitive(23), + val p24: TwoUnitPrimitive = TwoUnitPrimitive(24), + val p25: TwoUnitPrimitive = TwoUnitPrimitive(25), + val p26: TwoUnitPrimitive = TwoUnitPrimitive(26), + val p27: TwoUnitPrimitive = TwoUnitPrimitive(27), + val p28: TwoUnitPrimitive = TwoUnitPrimitive(28), + val p29: TwoUnitPrimitive = TwoUnitPrimitive(29), + val p30: TwoUnitPrimitive = TwoUnitPrimitive(30), + val p31: TwoUnitPrimitive = TwoUnitPrimitive(31), + val p32: TwoUnitPrimitive = TwoUnitPrimitive(32), + val p33: TwoUnitPrimitive = TwoUnitPrimitive(33), + val p34: TwoUnitPrimitive = TwoUnitPrimitive(34), + val p35: TwoUnitPrimitive = TwoUnitPrimitive(35), + val p36: TwoUnitPrimitive = TwoUnitPrimitive(36), + val p37: TwoUnitPrimitive = TwoUnitPrimitive(37), + val p38: TwoUnitPrimitive = TwoUnitPrimitive(38), + val p39: TwoUnitPrimitive = TwoUnitPrimitive(39), + val p40: TwoUnitPrimitive = TwoUnitPrimitive(40), + val p41: TwoUnitPrimitive = TwoUnitPrimitive(41), + val p42: TwoUnitPrimitive = TwoUnitPrimitive(42), + val p43: TwoUnitPrimitive = TwoUnitPrimitive(43), + val p44: TwoUnitPrimitive = TwoUnitPrimitive(44), + val p45: TwoUnitPrimitive = TwoUnitPrimitive(45), + val p46: TwoUnitPrimitive = TwoUnitPrimitive(46), + val p47: TwoUnitPrimitive = TwoUnitPrimitive(47), + val p48: TwoUnitPrimitive = TwoUnitPrimitive(48), + val p49: TwoUnitPrimitive = TwoUnitPrimitive(49), + val p50: TwoUnitPrimitive = TwoUnitPrimitive(50), + val p51: TwoUnitPrimitive = TwoUnitPrimitive(51), + val p52: TwoUnitPrimitive = TwoUnitPrimitive(52), + val p53: TwoUnitPrimitive = TwoUnitPrimitive(53), + val p54: TwoUnitPrimitive = TwoUnitPrimitive(54), + val p55: TwoUnitPrimitive = TwoUnitPrimitive(55), + val p56: TwoUnitPrimitive = TwoUnitPrimitive(56), + val p57: TwoUnitPrimitive = TwoUnitPrimitive(57), + val p58: TwoUnitPrimitive = TwoUnitPrimitive(58), + val p59: TwoUnitPrimitive = TwoUnitPrimitive(59), + val p60: TwoUnitPrimitive = TwoUnitPrimitive(60), + val p61: TwoUnitPrimitive = TwoUnitPrimitive(61), + val p62: TwoUnitPrimitive = TwoUnitPrimitive(62), + val p63: TwoUnitPrimitive = TwoUnitPrimitive(63) + ) + + @Test + fun test64() { + assertThrows { + Assertions.assertEquals(Dst64(), defaultMapper.readValue("{}")) + // TODO: #762 is resolved after Kotlin 2.0, so the reason why throw is done is to make CI with Kotlin 2.0 succeed. + // After upgrading to Kotlin 2.0, remove exception-related descriptions. + if (KotlinVersion.CURRENT.major >= 2) throw KotlinReflectionInternalError("") + } + } + + data class Dst65( + val p00: TwoUnitPrimitive = TwoUnitPrimitive(0), + val p01: TwoUnitPrimitive = TwoUnitPrimitive(1), + val p02: TwoUnitPrimitive = TwoUnitPrimitive(2), + val p03: TwoUnitPrimitive = TwoUnitPrimitive(3), + val p04: TwoUnitPrimitive = TwoUnitPrimitive(4), + val p05: TwoUnitPrimitive = TwoUnitPrimitive(5), + val p06: TwoUnitPrimitive = TwoUnitPrimitive(6), + val p07: TwoUnitPrimitive = TwoUnitPrimitive(7), + val p08: TwoUnitPrimitive = TwoUnitPrimitive(8), + val p09: TwoUnitPrimitive = TwoUnitPrimitive(9), + val p10: TwoUnitPrimitive = TwoUnitPrimitive(10), + val p11: TwoUnitPrimitive = TwoUnitPrimitive(11), + val p12: TwoUnitPrimitive = TwoUnitPrimitive(12), + val p13: TwoUnitPrimitive = TwoUnitPrimitive(13), + val p14: TwoUnitPrimitive = TwoUnitPrimitive(14), + val p15: TwoUnitPrimitive = TwoUnitPrimitive(15), + val p16: TwoUnitPrimitive = TwoUnitPrimitive(16), + val p17: TwoUnitPrimitive = TwoUnitPrimitive(17), + val p18: TwoUnitPrimitive = TwoUnitPrimitive(18), + val p19: TwoUnitPrimitive = TwoUnitPrimitive(19), + val p20: TwoUnitPrimitive = TwoUnitPrimitive(20), + val p21: TwoUnitPrimitive = TwoUnitPrimitive(21), + val p22: TwoUnitPrimitive = TwoUnitPrimitive(22), + val p23: TwoUnitPrimitive = TwoUnitPrimitive(23), + val p24: TwoUnitPrimitive = TwoUnitPrimitive(24), + val p25: TwoUnitPrimitive = TwoUnitPrimitive(25), + val p26: TwoUnitPrimitive = TwoUnitPrimitive(26), + val p27: TwoUnitPrimitive = TwoUnitPrimitive(27), + val p28: TwoUnitPrimitive = TwoUnitPrimitive(28), + val p29: TwoUnitPrimitive = TwoUnitPrimitive(29), + val p30: TwoUnitPrimitive = TwoUnitPrimitive(30), + val p31: TwoUnitPrimitive = TwoUnitPrimitive(31), + val p32: TwoUnitPrimitive = TwoUnitPrimitive(32), + val p33: TwoUnitPrimitive = TwoUnitPrimitive(33), + val p34: TwoUnitPrimitive = TwoUnitPrimitive(34), + val p35: TwoUnitPrimitive = TwoUnitPrimitive(35), + val p36: TwoUnitPrimitive = TwoUnitPrimitive(36), + val p37: TwoUnitPrimitive = TwoUnitPrimitive(37), + val p38: TwoUnitPrimitive = TwoUnitPrimitive(38), + val p39: TwoUnitPrimitive = TwoUnitPrimitive(39), + val p40: TwoUnitPrimitive = TwoUnitPrimitive(40), + val p41: TwoUnitPrimitive = TwoUnitPrimitive(41), + val p42: TwoUnitPrimitive = TwoUnitPrimitive(42), + val p43: TwoUnitPrimitive = TwoUnitPrimitive(43), + val p44: TwoUnitPrimitive = TwoUnitPrimitive(44), + val p45: TwoUnitPrimitive = TwoUnitPrimitive(45), + val p46: TwoUnitPrimitive = TwoUnitPrimitive(46), + val p47: TwoUnitPrimitive = TwoUnitPrimitive(47), + val p48: TwoUnitPrimitive = TwoUnitPrimitive(48), + val p49: TwoUnitPrimitive = TwoUnitPrimitive(49), + val p50: TwoUnitPrimitive = TwoUnitPrimitive(50), + val p51: TwoUnitPrimitive = TwoUnitPrimitive(51), + val p52: TwoUnitPrimitive = TwoUnitPrimitive(52), + val p53: TwoUnitPrimitive = TwoUnitPrimitive(53), + val p54: TwoUnitPrimitive = TwoUnitPrimitive(54), + val p55: TwoUnitPrimitive = TwoUnitPrimitive(55), + val p56: TwoUnitPrimitive = TwoUnitPrimitive(56), + val p57: TwoUnitPrimitive = TwoUnitPrimitive(57), + val p58: TwoUnitPrimitive = TwoUnitPrimitive(58), + val p59: TwoUnitPrimitive = TwoUnitPrimitive(59), + val p60: TwoUnitPrimitive = TwoUnitPrimitive(60), + val p61: TwoUnitPrimitive = TwoUnitPrimitive(61), + val p62: TwoUnitPrimitive = TwoUnitPrimitive(62), + val p63: TwoUnitPrimitive = TwoUnitPrimitive(63), + val p64: TwoUnitPrimitive = TwoUnitPrimitive(64) + ) + + @Test + fun test65() { + Assertions.assertEquals(Dst65(), defaultMapper.readValue("{}")) + } + + // It cannot be a data class because the generated method would exceed the argument size limit. + class DstMax( + val p000: TwoUnitPrimitive = TwoUnitPrimitive(0), + val p001: TwoUnitPrimitive = TwoUnitPrimitive(1), + val p002: TwoUnitPrimitive = TwoUnitPrimitive(2), + val p003: TwoUnitPrimitive = TwoUnitPrimitive(3), + val p004: TwoUnitPrimitive = TwoUnitPrimitive(4), + val p005: TwoUnitPrimitive = TwoUnitPrimitive(5), + val p006: TwoUnitPrimitive = TwoUnitPrimitive(6), + val p007: TwoUnitPrimitive = TwoUnitPrimitive(7), + val p008: TwoUnitPrimitive = TwoUnitPrimitive(8), + val p009: TwoUnitPrimitive = TwoUnitPrimitive(9), + val p010: TwoUnitPrimitive = TwoUnitPrimitive(10), + val p011: TwoUnitPrimitive = TwoUnitPrimitive(11), + val p012: TwoUnitPrimitive = TwoUnitPrimitive(12), + val p013: TwoUnitPrimitive = TwoUnitPrimitive(13), + val p014: TwoUnitPrimitive = TwoUnitPrimitive(14), + val p015: TwoUnitPrimitive = TwoUnitPrimitive(15), + val p016: TwoUnitPrimitive = TwoUnitPrimitive(16), + val p017: TwoUnitPrimitive = TwoUnitPrimitive(17), + val p018: TwoUnitPrimitive = TwoUnitPrimitive(18), + val p019: TwoUnitPrimitive = TwoUnitPrimitive(19), + val p020: TwoUnitPrimitive = TwoUnitPrimitive(20), + val p021: TwoUnitPrimitive = TwoUnitPrimitive(21), + val p022: TwoUnitPrimitive = TwoUnitPrimitive(22), + val p023: TwoUnitPrimitive = TwoUnitPrimitive(23), + val p024: TwoUnitPrimitive = TwoUnitPrimitive(24), + val p025: TwoUnitPrimitive = TwoUnitPrimitive(25), + val p026: TwoUnitPrimitive = TwoUnitPrimitive(26), + val p027: TwoUnitPrimitive = TwoUnitPrimitive(27), + val p028: TwoUnitPrimitive = TwoUnitPrimitive(28), + val p029: TwoUnitPrimitive = TwoUnitPrimitive(29), + val p030: TwoUnitPrimitive = TwoUnitPrimitive(30), + val p031: TwoUnitPrimitive = TwoUnitPrimitive(31), + val p032: TwoUnitPrimitive = TwoUnitPrimitive(32), + val p033: TwoUnitPrimitive = TwoUnitPrimitive(33), + val p034: TwoUnitPrimitive = TwoUnitPrimitive(34), + val p035: TwoUnitPrimitive = TwoUnitPrimitive(35), + val p036: TwoUnitPrimitive = TwoUnitPrimitive(36), + val p037: TwoUnitPrimitive = TwoUnitPrimitive(37), + val p038: TwoUnitPrimitive = TwoUnitPrimitive(38), + val p039: TwoUnitPrimitive = TwoUnitPrimitive(39), + val p040: TwoUnitPrimitive = TwoUnitPrimitive(40), + val p041: TwoUnitPrimitive = TwoUnitPrimitive(41), + val p042: TwoUnitPrimitive = TwoUnitPrimitive(42), + val p043: TwoUnitPrimitive = TwoUnitPrimitive(43), + val p044: TwoUnitPrimitive = TwoUnitPrimitive(44), + val p045: TwoUnitPrimitive = TwoUnitPrimitive(45), + val p046: TwoUnitPrimitive = TwoUnitPrimitive(46), + val p047: TwoUnitPrimitive = TwoUnitPrimitive(47), + val p048: TwoUnitPrimitive = TwoUnitPrimitive(48), + val p049: TwoUnitPrimitive = TwoUnitPrimitive(49), + val p050: TwoUnitPrimitive = TwoUnitPrimitive(50), + val p051: TwoUnitPrimitive = TwoUnitPrimitive(51), + val p052: TwoUnitPrimitive = TwoUnitPrimitive(52), + val p053: TwoUnitPrimitive = TwoUnitPrimitive(53), + val p054: TwoUnitPrimitive = TwoUnitPrimitive(54), + val p055: TwoUnitPrimitive = TwoUnitPrimitive(55), + val p056: TwoUnitPrimitive = TwoUnitPrimitive(56), + val p057: TwoUnitPrimitive = TwoUnitPrimitive(57), + val p058: TwoUnitPrimitive = TwoUnitPrimitive(58), + val p059: TwoUnitPrimitive = TwoUnitPrimitive(59), + val p060: TwoUnitPrimitive = TwoUnitPrimitive(60), + val p061: TwoUnitPrimitive = TwoUnitPrimitive(61), + val p062: TwoUnitPrimitive = TwoUnitPrimitive(62), + val p063: TwoUnitPrimitive = TwoUnitPrimitive(63), + val p064: TwoUnitPrimitive = TwoUnitPrimitive(64), + val p065: TwoUnitPrimitive = TwoUnitPrimitive(65), + val p066: TwoUnitPrimitive = TwoUnitPrimitive(66), + val p067: TwoUnitPrimitive = TwoUnitPrimitive(67), + val p068: TwoUnitPrimitive = TwoUnitPrimitive(68), + val p069: TwoUnitPrimitive = TwoUnitPrimitive(69), + val p070: TwoUnitPrimitive = TwoUnitPrimitive(70), + val p071: TwoUnitPrimitive = TwoUnitPrimitive(71), + val p072: TwoUnitPrimitive = TwoUnitPrimitive(72), + val p073: TwoUnitPrimitive = TwoUnitPrimitive(73), + val p074: TwoUnitPrimitive = TwoUnitPrimitive(74), + val p075: TwoUnitPrimitive = TwoUnitPrimitive(75), + val p076: TwoUnitPrimitive = TwoUnitPrimitive(76), + val p077: TwoUnitPrimitive = TwoUnitPrimitive(77), + val p078: TwoUnitPrimitive = TwoUnitPrimitive(78), + val p079: TwoUnitPrimitive = TwoUnitPrimitive(79), + val p080: TwoUnitPrimitive = TwoUnitPrimitive(80), + val p081: TwoUnitPrimitive = TwoUnitPrimitive(81), + val p082: TwoUnitPrimitive = TwoUnitPrimitive(82), + val p083: TwoUnitPrimitive = TwoUnitPrimitive(83), + val p084: TwoUnitPrimitive = TwoUnitPrimitive(84), + val p085: TwoUnitPrimitive = TwoUnitPrimitive(85), + val p086: TwoUnitPrimitive = TwoUnitPrimitive(86), + val p087: TwoUnitPrimitive = TwoUnitPrimitive(87), + val p088: TwoUnitPrimitive = TwoUnitPrimitive(88), + val p089: TwoUnitPrimitive = TwoUnitPrimitive(89), + val p090: TwoUnitPrimitive = TwoUnitPrimitive(90), + val p091: TwoUnitPrimitive = TwoUnitPrimitive(91), + val p092: TwoUnitPrimitive = TwoUnitPrimitive(92), + val p093: TwoUnitPrimitive = TwoUnitPrimitive(93), + val p094: TwoUnitPrimitive = TwoUnitPrimitive(94), + val p095: TwoUnitPrimitive = TwoUnitPrimitive(95), + val p096: TwoUnitPrimitive = TwoUnitPrimitive(96), + val p097: TwoUnitPrimitive = TwoUnitPrimitive(97), + val p098: TwoUnitPrimitive = TwoUnitPrimitive(98), + val p099: TwoUnitPrimitive = TwoUnitPrimitive(99), + val p100: TwoUnitPrimitive = TwoUnitPrimitive(100), + val p101: TwoUnitPrimitive = TwoUnitPrimitive(101), + val p102: TwoUnitPrimitive = TwoUnitPrimitive(102), + val p103: TwoUnitPrimitive = TwoUnitPrimitive(103), + val p104: TwoUnitPrimitive = TwoUnitPrimitive(104), + val p105: TwoUnitPrimitive = TwoUnitPrimitive(105), + val p106: TwoUnitPrimitive = TwoUnitPrimitive(106), + val p107: TwoUnitPrimitive = TwoUnitPrimitive(107), + val p108: TwoUnitPrimitive = TwoUnitPrimitive(108), + val p109: TwoUnitPrimitive = TwoUnitPrimitive(109), + val p110: TwoUnitPrimitive = TwoUnitPrimitive(110), + val p111: TwoUnitPrimitive = TwoUnitPrimitive(111), + val p112: TwoUnitPrimitive = TwoUnitPrimitive(112), + val p113: TwoUnitPrimitive = TwoUnitPrimitive(113), + val p114: TwoUnitPrimitive = TwoUnitPrimitive(114), + val p115: TwoUnitPrimitive = TwoUnitPrimitive(115), + val p116: TwoUnitPrimitive = TwoUnitPrimitive(116), + val p117: TwoUnitPrimitive = TwoUnitPrimitive(117), + val p118: TwoUnitPrimitive = TwoUnitPrimitive(118), + val p119: TwoUnitPrimitive = TwoUnitPrimitive(119), + val p120: TwoUnitPrimitive = TwoUnitPrimitive(120), + val p121: TwoUnitPrimitive = TwoUnitPrimitive(121), + val p122: TwoUnitPrimitive = TwoUnitPrimitive(122), + val p123: TwoUnitPrimitive = TwoUnitPrimitive(123) + ) + + @Test + fun testMax() { + assertReflectEquals(DstMax(), defaultMapper.readValue("{}")) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithoutDefaultArgumentsTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithoutDefaultArgumentsTest.kt new file mode 100644 index 00000000..249f6347 --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByConstructorWithoutDefaultArgumentsTest.kt @@ -0,0 +1,388 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.parameterSize.twoUnitPrimitive + +import com.fasterxml.jackson.module.kotlin.assertReflectEquals +import com.fasterxml.jackson.module.kotlin.callPrimaryConstructor +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +/** + * Up to argument size 32 there is one mask argument for the default argument, + * 33 ~ 64 there are two, and 65 there are three, so each boundary value is tested. + * Also, the maximum size of arguments that can be set by a constructor + * that includes a value class as an argument is 126 (one less by DefaultConstructorMarker), so test that case as well. + */ +class DeserializeByConstructorWithoutDefaultArgumentsTest { + data class Dst32( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive + ) + + @Test + fun test32() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = defaultMapper.writeValueAsString(expected) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst33( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive + ) + + @Test + fun test33() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = defaultMapper.writeValueAsString(expected) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst64( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive + ) + + @Test + fun test64() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = defaultMapper.writeValueAsString(expected) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst65( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive, + val p64: TwoUnitPrimitive + ) + + @Test + fun test65() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = defaultMapper.writeValueAsString(expected) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + // It cannot be a data class because the generated method would exceed the argument size limit. + class DstMax( + val p000: TwoUnitPrimitive, + val p001: TwoUnitPrimitive, + val p002: TwoUnitPrimitive, + val p003: TwoUnitPrimitive, + val p004: TwoUnitPrimitive, + val p005: TwoUnitPrimitive, + val p006: TwoUnitPrimitive, + val p007: TwoUnitPrimitive, + val p008: TwoUnitPrimitive, + val p009: TwoUnitPrimitive, + val p010: TwoUnitPrimitive, + val p011: TwoUnitPrimitive, + val p012: TwoUnitPrimitive, + val p013: TwoUnitPrimitive, + val p014: TwoUnitPrimitive, + val p015: TwoUnitPrimitive, + val p016: TwoUnitPrimitive, + val p017: TwoUnitPrimitive, + val p018: TwoUnitPrimitive, + val p019: TwoUnitPrimitive, + val p020: TwoUnitPrimitive, + val p021: TwoUnitPrimitive, + val p022: TwoUnitPrimitive, + val p023: TwoUnitPrimitive, + val p024: TwoUnitPrimitive, + val p025: TwoUnitPrimitive, + val p026: TwoUnitPrimitive, + val p027: TwoUnitPrimitive, + val p028: TwoUnitPrimitive, + val p029: TwoUnitPrimitive, + val p030: TwoUnitPrimitive, + val p031: TwoUnitPrimitive, + val p032: TwoUnitPrimitive, + val p033: TwoUnitPrimitive, + val p034: TwoUnitPrimitive, + val p035: TwoUnitPrimitive, + val p036: TwoUnitPrimitive, + val p037: TwoUnitPrimitive, + val p038: TwoUnitPrimitive, + val p039: TwoUnitPrimitive, + val p040: TwoUnitPrimitive, + val p041: TwoUnitPrimitive, + val p042: TwoUnitPrimitive, + val p043: TwoUnitPrimitive, + val p044: TwoUnitPrimitive, + val p045: TwoUnitPrimitive, + val p046: TwoUnitPrimitive, + val p047: TwoUnitPrimitive, + val p048: TwoUnitPrimitive, + val p049: TwoUnitPrimitive, + val p050: TwoUnitPrimitive, + val p051: TwoUnitPrimitive, + val p052: TwoUnitPrimitive, + val p053: TwoUnitPrimitive, + val p054: TwoUnitPrimitive, + val p055: TwoUnitPrimitive, + val p056: TwoUnitPrimitive, + val p057: TwoUnitPrimitive, + val p058: TwoUnitPrimitive, + val p059: TwoUnitPrimitive, + val p060: TwoUnitPrimitive, + val p061: TwoUnitPrimitive, + val p062: TwoUnitPrimitive, + val p063: TwoUnitPrimitive, + val p064: TwoUnitPrimitive, + val p065: TwoUnitPrimitive, + val p066: TwoUnitPrimitive, + val p067: TwoUnitPrimitive, + val p068: TwoUnitPrimitive, + val p069: TwoUnitPrimitive, + val p070: TwoUnitPrimitive, + val p071: TwoUnitPrimitive, + val p072: TwoUnitPrimitive, + val p073: TwoUnitPrimitive, + val p074: TwoUnitPrimitive, + val p075: TwoUnitPrimitive, + val p076: TwoUnitPrimitive, + val p077: TwoUnitPrimitive, + val p078: TwoUnitPrimitive, + val p079: TwoUnitPrimitive, + val p080: TwoUnitPrimitive, + val p081: TwoUnitPrimitive, + val p082: TwoUnitPrimitive, + val p083: TwoUnitPrimitive, + val p084: TwoUnitPrimitive, + val p085: TwoUnitPrimitive, + val p086: TwoUnitPrimitive, + val p087: TwoUnitPrimitive, + val p088: TwoUnitPrimitive, + val p089: TwoUnitPrimitive, + val p090: TwoUnitPrimitive, + val p091: TwoUnitPrimitive, + val p092: TwoUnitPrimitive, + val p093: TwoUnitPrimitive, + val p094: TwoUnitPrimitive, + val p095: TwoUnitPrimitive, + val p096: TwoUnitPrimitive, + val p097: TwoUnitPrimitive, + val p098: TwoUnitPrimitive, + val p099: TwoUnitPrimitive, + val p100: TwoUnitPrimitive, + val p101: TwoUnitPrimitive, + val p102: TwoUnitPrimitive, + val p103: TwoUnitPrimitive, + val p104: TwoUnitPrimitive, + val p105: TwoUnitPrimitive, + val p106: TwoUnitPrimitive, + val p107: TwoUnitPrimitive, + val p108: TwoUnitPrimitive, + val p109: TwoUnitPrimitive, + val p110: TwoUnitPrimitive, + val p111: TwoUnitPrimitive, + val p112: TwoUnitPrimitive, + val p113: TwoUnitPrimitive, + val p114: TwoUnitPrimitive, + val p115: TwoUnitPrimitive, + val p116: TwoUnitPrimitive, + val p117: TwoUnitPrimitive, + val p118: TwoUnitPrimitive, + val p119: TwoUnitPrimitive, + val p120: TwoUnitPrimitive, + val p121: TwoUnitPrimitive, + val p122: TwoUnitPrimitive, + val p123: TwoUnitPrimitive, + val p124: TwoUnitPrimitive, + val p125: TwoUnitPrimitive + ) + + @Test + fun testMax() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = defaultMapper.writeValueAsString(expected) + assertReflectEquals(expected, defaultMapper.readValue(src)) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithDefaultArgumentsTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithDefaultArgumentsTest.kt new file mode 100644 index 00000000..aa09eb2e --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithDefaultArgumentsTest.kt @@ -0,0 +1,1051 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.parameterSize.twoUnitPrimitive + +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.module.kotlin.assertReflectEquals +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +/** + * Up to argument size 32 there is one mask argument for the default argument, + * 33 ~ 64 there are two, and 65 there are three, so each boundary value is tested. + * Also, the maximum argument size that can be set in the constructor is 124, so that case is tested as well. + */ +class DeserializeByFactoryWithDefaultArgumentsTest { + data class Dst32( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive = TwoUnitPrimitive(0), + q01: TwoUnitPrimitive = TwoUnitPrimitive(1), + q02: TwoUnitPrimitive = TwoUnitPrimitive(2), + q03: TwoUnitPrimitive = TwoUnitPrimitive(3), + q04: TwoUnitPrimitive = TwoUnitPrimitive(4), + q05: TwoUnitPrimitive = TwoUnitPrimitive(5), + q06: TwoUnitPrimitive = TwoUnitPrimitive(6), + q07: TwoUnitPrimitive = TwoUnitPrimitive(7), + q08: TwoUnitPrimitive = TwoUnitPrimitive(8), + q09: TwoUnitPrimitive = TwoUnitPrimitive(9), + q10: TwoUnitPrimitive = TwoUnitPrimitive(10), + q11: TwoUnitPrimitive = TwoUnitPrimitive(11), + q12: TwoUnitPrimitive = TwoUnitPrimitive(12), + q13: TwoUnitPrimitive = TwoUnitPrimitive(13), + q14: TwoUnitPrimitive = TwoUnitPrimitive(14), + q15: TwoUnitPrimitive = TwoUnitPrimitive(15), + q16: TwoUnitPrimitive = TwoUnitPrimitive(16), + q17: TwoUnitPrimitive = TwoUnitPrimitive(17), + q18: TwoUnitPrimitive = TwoUnitPrimitive(18), + q19: TwoUnitPrimitive = TwoUnitPrimitive(19), + q20: TwoUnitPrimitive = TwoUnitPrimitive(20), + q21: TwoUnitPrimitive = TwoUnitPrimitive(21), + q22: TwoUnitPrimitive = TwoUnitPrimitive(22), + q23: TwoUnitPrimitive = TwoUnitPrimitive(23), + q24: TwoUnitPrimitive = TwoUnitPrimitive(24), + q25: TwoUnitPrimitive = TwoUnitPrimitive(25), + q26: TwoUnitPrimitive = TwoUnitPrimitive(26), + q27: TwoUnitPrimitive = TwoUnitPrimitive(27), + q28: TwoUnitPrimitive = TwoUnitPrimitive(28), + q29: TwoUnitPrimitive = TwoUnitPrimitive(29), + q30: TwoUnitPrimitive = TwoUnitPrimitive(30), + q31: TwoUnitPrimitive = TwoUnitPrimitive(31) + ) = Dst32( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31 + ) + } + } + + @Test + fun test32() { + Assertions.assertEquals(Dst32.creator(), defaultMapper.readValue("{}")) + } + + data class Dst33( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive = TwoUnitPrimitive(0), + q01: TwoUnitPrimitive = TwoUnitPrimitive(1), + q02: TwoUnitPrimitive = TwoUnitPrimitive(2), + q03: TwoUnitPrimitive = TwoUnitPrimitive(3), + q04: TwoUnitPrimitive = TwoUnitPrimitive(4), + q05: TwoUnitPrimitive = TwoUnitPrimitive(5), + q06: TwoUnitPrimitive = TwoUnitPrimitive(6), + q07: TwoUnitPrimitive = TwoUnitPrimitive(7), + q08: TwoUnitPrimitive = TwoUnitPrimitive(8), + q09: TwoUnitPrimitive = TwoUnitPrimitive(9), + q10: TwoUnitPrimitive = TwoUnitPrimitive(10), + q11: TwoUnitPrimitive = TwoUnitPrimitive(11), + q12: TwoUnitPrimitive = TwoUnitPrimitive(12), + q13: TwoUnitPrimitive = TwoUnitPrimitive(13), + q14: TwoUnitPrimitive = TwoUnitPrimitive(14), + q15: TwoUnitPrimitive = TwoUnitPrimitive(15), + q16: TwoUnitPrimitive = TwoUnitPrimitive(16), + q17: TwoUnitPrimitive = TwoUnitPrimitive(17), + q18: TwoUnitPrimitive = TwoUnitPrimitive(18), + q19: TwoUnitPrimitive = TwoUnitPrimitive(19), + q20: TwoUnitPrimitive = TwoUnitPrimitive(20), + q21: TwoUnitPrimitive = TwoUnitPrimitive(21), + q22: TwoUnitPrimitive = TwoUnitPrimitive(22), + q23: TwoUnitPrimitive = TwoUnitPrimitive(23), + q24: TwoUnitPrimitive = TwoUnitPrimitive(24), + q25: TwoUnitPrimitive = TwoUnitPrimitive(25), + q26: TwoUnitPrimitive = TwoUnitPrimitive(26), + q27: TwoUnitPrimitive = TwoUnitPrimitive(27), + q28: TwoUnitPrimitive = TwoUnitPrimitive(28), + q29: TwoUnitPrimitive = TwoUnitPrimitive(29), + q30: TwoUnitPrimitive = TwoUnitPrimitive(30), + q31: TwoUnitPrimitive = TwoUnitPrimitive(31), + q32: TwoUnitPrimitive = TwoUnitPrimitive(32) + ) = Dst33( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32 + ) + } + } + + @Test + fun test33() { + Assertions.assertEquals(Dst33.creator(), defaultMapper.readValue("{}")) + } + + data class Dst64( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive = TwoUnitPrimitive(0), + q01: TwoUnitPrimitive = TwoUnitPrimitive(1), + q02: TwoUnitPrimitive = TwoUnitPrimitive(2), + q03: TwoUnitPrimitive = TwoUnitPrimitive(3), + q04: TwoUnitPrimitive = TwoUnitPrimitive(4), + q05: TwoUnitPrimitive = TwoUnitPrimitive(5), + q06: TwoUnitPrimitive = TwoUnitPrimitive(6), + q07: TwoUnitPrimitive = TwoUnitPrimitive(7), + q08: TwoUnitPrimitive = TwoUnitPrimitive(8), + q09: TwoUnitPrimitive = TwoUnitPrimitive(9), + q10: TwoUnitPrimitive = TwoUnitPrimitive(10), + q11: TwoUnitPrimitive = TwoUnitPrimitive(11), + q12: TwoUnitPrimitive = TwoUnitPrimitive(12), + q13: TwoUnitPrimitive = TwoUnitPrimitive(13), + q14: TwoUnitPrimitive = TwoUnitPrimitive(14), + q15: TwoUnitPrimitive = TwoUnitPrimitive(15), + q16: TwoUnitPrimitive = TwoUnitPrimitive(16), + q17: TwoUnitPrimitive = TwoUnitPrimitive(17), + q18: TwoUnitPrimitive = TwoUnitPrimitive(18), + q19: TwoUnitPrimitive = TwoUnitPrimitive(19), + q20: TwoUnitPrimitive = TwoUnitPrimitive(20), + q21: TwoUnitPrimitive = TwoUnitPrimitive(21), + q22: TwoUnitPrimitive = TwoUnitPrimitive(22), + q23: TwoUnitPrimitive = TwoUnitPrimitive(23), + q24: TwoUnitPrimitive = TwoUnitPrimitive(24), + q25: TwoUnitPrimitive = TwoUnitPrimitive(25), + q26: TwoUnitPrimitive = TwoUnitPrimitive(26), + q27: TwoUnitPrimitive = TwoUnitPrimitive(27), + q28: TwoUnitPrimitive = TwoUnitPrimitive(28), + q29: TwoUnitPrimitive = TwoUnitPrimitive(29), + q30: TwoUnitPrimitive = TwoUnitPrimitive(30), + q31: TwoUnitPrimitive = TwoUnitPrimitive(31), + q32: TwoUnitPrimitive = TwoUnitPrimitive(32), + q33: TwoUnitPrimitive = TwoUnitPrimitive(33), + q34: TwoUnitPrimitive = TwoUnitPrimitive(34), + q35: TwoUnitPrimitive = TwoUnitPrimitive(35), + q36: TwoUnitPrimitive = TwoUnitPrimitive(36), + q37: TwoUnitPrimitive = TwoUnitPrimitive(37), + q38: TwoUnitPrimitive = TwoUnitPrimitive(38), + q39: TwoUnitPrimitive = TwoUnitPrimitive(39), + q40: TwoUnitPrimitive = TwoUnitPrimitive(40), + q41: TwoUnitPrimitive = TwoUnitPrimitive(41), + q42: TwoUnitPrimitive = TwoUnitPrimitive(42), + q43: TwoUnitPrimitive = TwoUnitPrimitive(43), + q44: TwoUnitPrimitive = TwoUnitPrimitive(44), + q45: TwoUnitPrimitive = TwoUnitPrimitive(45), + q46: TwoUnitPrimitive = TwoUnitPrimitive(46), + q47: TwoUnitPrimitive = TwoUnitPrimitive(47), + q48: TwoUnitPrimitive = TwoUnitPrimitive(48), + q49: TwoUnitPrimitive = TwoUnitPrimitive(49), + q50: TwoUnitPrimitive = TwoUnitPrimitive(50), + q51: TwoUnitPrimitive = TwoUnitPrimitive(51), + q52: TwoUnitPrimitive = TwoUnitPrimitive(52), + q53: TwoUnitPrimitive = TwoUnitPrimitive(53), + q54: TwoUnitPrimitive = TwoUnitPrimitive(54), + q55: TwoUnitPrimitive = TwoUnitPrimitive(55), + q56: TwoUnitPrimitive = TwoUnitPrimitive(56), + q57: TwoUnitPrimitive = TwoUnitPrimitive(57), + q58: TwoUnitPrimitive = TwoUnitPrimitive(58), + q59: TwoUnitPrimitive = TwoUnitPrimitive(59), + q60: TwoUnitPrimitive = TwoUnitPrimitive(60), + q61: TwoUnitPrimitive = TwoUnitPrimitive(61), + q62: TwoUnitPrimitive = TwoUnitPrimitive(62), + q63: TwoUnitPrimitive = TwoUnitPrimitive(63) + ) = Dst64( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32, + q33, + q34, + q35, + q36, + q37, + q38, + q39, + q40, + q41, + q42, + q43, + q44, + q45, + q46, + q47, + q48, + q49, + q50, + q51, + q52, + q53, + q54, + q55, + q56, + q57, + q58, + q59, + q60, + q61, + q62, + q63 + ) + } + } + + @Test + fun test64() { + Assertions.assertEquals(Dst64.creator(), defaultMapper.readValue("{}")) + } + + data class Dst65( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive, + val p64: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive = TwoUnitPrimitive(0), + q01: TwoUnitPrimitive = TwoUnitPrimitive(1), + q02: TwoUnitPrimitive = TwoUnitPrimitive(2), + q03: TwoUnitPrimitive = TwoUnitPrimitive(3), + q04: TwoUnitPrimitive = TwoUnitPrimitive(4), + q05: TwoUnitPrimitive = TwoUnitPrimitive(5), + q06: TwoUnitPrimitive = TwoUnitPrimitive(6), + q07: TwoUnitPrimitive = TwoUnitPrimitive(7), + q08: TwoUnitPrimitive = TwoUnitPrimitive(8), + q09: TwoUnitPrimitive = TwoUnitPrimitive(9), + q10: TwoUnitPrimitive = TwoUnitPrimitive(10), + q11: TwoUnitPrimitive = TwoUnitPrimitive(11), + q12: TwoUnitPrimitive = TwoUnitPrimitive(12), + q13: TwoUnitPrimitive = TwoUnitPrimitive(13), + q14: TwoUnitPrimitive = TwoUnitPrimitive(14), + q15: TwoUnitPrimitive = TwoUnitPrimitive(15), + q16: TwoUnitPrimitive = TwoUnitPrimitive(16), + q17: TwoUnitPrimitive = TwoUnitPrimitive(17), + q18: TwoUnitPrimitive = TwoUnitPrimitive(18), + q19: TwoUnitPrimitive = TwoUnitPrimitive(19), + q20: TwoUnitPrimitive = TwoUnitPrimitive(20), + q21: TwoUnitPrimitive = TwoUnitPrimitive(21), + q22: TwoUnitPrimitive = TwoUnitPrimitive(22), + q23: TwoUnitPrimitive = TwoUnitPrimitive(23), + q24: TwoUnitPrimitive = TwoUnitPrimitive(24), + q25: TwoUnitPrimitive = TwoUnitPrimitive(25), + q26: TwoUnitPrimitive = TwoUnitPrimitive(26), + q27: TwoUnitPrimitive = TwoUnitPrimitive(27), + q28: TwoUnitPrimitive = TwoUnitPrimitive(28), + q29: TwoUnitPrimitive = TwoUnitPrimitive(29), + q30: TwoUnitPrimitive = TwoUnitPrimitive(30), + q31: TwoUnitPrimitive = TwoUnitPrimitive(31), + q32: TwoUnitPrimitive = TwoUnitPrimitive(32), + q33: TwoUnitPrimitive = TwoUnitPrimitive(33), + q34: TwoUnitPrimitive = TwoUnitPrimitive(34), + q35: TwoUnitPrimitive = TwoUnitPrimitive(35), + q36: TwoUnitPrimitive = TwoUnitPrimitive(36), + q37: TwoUnitPrimitive = TwoUnitPrimitive(37), + q38: TwoUnitPrimitive = TwoUnitPrimitive(38), + q39: TwoUnitPrimitive = TwoUnitPrimitive(39), + q40: TwoUnitPrimitive = TwoUnitPrimitive(40), + q41: TwoUnitPrimitive = TwoUnitPrimitive(41), + q42: TwoUnitPrimitive = TwoUnitPrimitive(42), + q43: TwoUnitPrimitive = TwoUnitPrimitive(43), + q44: TwoUnitPrimitive = TwoUnitPrimitive(44), + q45: TwoUnitPrimitive = TwoUnitPrimitive(45), + q46: TwoUnitPrimitive = TwoUnitPrimitive(46), + q47: TwoUnitPrimitive = TwoUnitPrimitive(47), + q48: TwoUnitPrimitive = TwoUnitPrimitive(48), + q49: TwoUnitPrimitive = TwoUnitPrimitive(49), + q50: TwoUnitPrimitive = TwoUnitPrimitive(50), + q51: TwoUnitPrimitive = TwoUnitPrimitive(51), + q52: TwoUnitPrimitive = TwoUnitPrimitive(52), + q53: TwoUnitPrimitive = TwoUnitPrimitive(53), + q54: TwoUnitPrimitive = TwoUnitPrimitive(54), + q55: TwoUnitPrimitive = TwoUnitPrimitive(55), + q56: TwoUnitPrimitive = TwoUnitPrimitive(56), + q57: TwoUnitPrimitive = TwoUnitPrimitive(57), + q58: TwoUnitPrimitive = TwoUnitPrimitive(58), + q59: TwoUnitPrimitive = TwoUnitPrimitive(59), + q60: TwoUnitPrimitive = TwoUnitPrimitive(60), + q61: TwoUnitPrimitive = TwoUnitPrimitive(61), + q62: TwoUnitPrimitive = TwoUnitPrimitive(62), + q63: TwoUnitPrimitive = TwoUnitPrimitive(63), + q64: TwoUnitPrimitive = TwoUnitPrimitive(64) + ) = Dst65( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32, + q33, + q34, + q35, + q36, + q37, + q38, + q39, + q40, + q41, + q42, + q43, + q44, + q45, + q46, + q47, + q48, + q49, + q50, + q51, + q52, + q53, + q54, + q55, + q56, + q57, + q58, + q59, + q60, + q61, + q62, + q63, + q64 + ) + } + } + + @Test + fun test65() { + Assertions.assertEquals(Dst65.creator(), defaultMapper.readValue("{}")) + } + + // It cannot be a data class because the generated method would exceed the argument size limit. + class DstMax( + val p000: TwoUnitPrimitive, + val p001: TwoUnitPrimitive, + val p002: TwoUnitPrimitive, + val p003: TwoUnitPrimitive, + val p004: TwoUnitPrimitive, + val p005: TwoUnitPrimitive, + val p006: TwoUnitPrimitive, + val p007: TwoUnitPrimitive, + val p008: TwoUnitPrimitive, + val p009: TwoUnitPrimitive, + val p010: TwoUnitPrimitive, + val p011: TwoUnitPrimitive, + val p012: TwoUnitPrimitive, + val p013: TwoUnitPrimitive, + val p014: TwoUnitPrimitive, + val p015: TwoUnitPrimitive, + val p016: TwoUnitPrimitive, + val p017: TwoUnitPrimitive, + val p018: TwoUnitPrimitive, + val p019: TwoUnitPrimitive, + val p020: TwoUnitPrimitive, + val p021: TwoUnitPrimitive, + val p022: TwoUnitPrimitive, + val p023: TwoUnitPrimitive, + val p024: TwoUnitPrimitive, + val p025: TwoUnitPrimitive, + val p026: TwoUnitPrimitive, + val p027: TwoUnitPrimitive, + val p028: TwoUnitPrimitive, + val p029: TwoUnitPrimitive, + val p030: TwoUnitPrimitive, + val p031: TwoUnitPrimitive, + val p032: TwoUnitPrimitive, + val p033: TwoUnitPrimitive, + val p034: TwoUnitPrimitive, + val p035: TwoUnitPrimitive, + val p036: TwoUnitPrimitive, + val p037: TwoUnitPrimitive, + val p038: TwoUnitPrimitive, + val p039: TwoUnitPrimitive, + val p040: TwoUnitPrimitive, + val p041: TwoUnitPrimitive, + val p042: TwoUnitPrimitive, + val p043: TwoUnitPrimitive, + val p044: TwoUnitPrimitive, + val p045: TwoUnitPrimitive, + val p046: TwoUnitPrimitive, + val p047: TwoUnitPrimitive, + val p048: TwoUnitPrimitive, + val p049: TwoUnitPrimitive, + val p050: TwoUnitPrimitive, + val p051: TwoUnitPrimitive, + val p052: TwoUnitPrimitive, + val p053: TwoUnitPrimitive, + val p054: TwoUnitPrimitive, + val p055: TwoUnitPrimitive, + val p056: TwoUnitPrimitive, + val p057: TwoUnitPrimitive, + val p058: TwoUnitPrimitive, + val p059: TwoUnitPrimitive, + val p060: TwoUnitPrimitive, + val p061: TwoUnitPrimitive, + val p062: TwoUnitPrimitive, + val p063: TwoUnitPrimitive, + val p064: TwoUnitPrimitive, + val p065: TwoUnitPrimitive, + val p066: TwoUnitPrimitive, + val p067: TwoUnitPrimitive, + val p068: TwoUnitPrimitive, + val p069: TwoUnitPrimitive, + val p070: TwoUnitPrimitive, + val p071: TwoUnitPrimitive, + val p072: TwoUnitPrimitive, + val p073: TwoUnitPrimitive, + val p074: TwoUnitPrimitive, + val p075: TwoUnitPrimitive, + val p076: TwoUnitPrimitive, + val p077: TwoUnitPrimitive, + val p078: TwoUnitPrimitive, + val p079: TwoUnitPrimitive, + val p080: TwoUnitPrimitive, + val p081: TwoUnitPrimitive, + val p082: TwoUnitPrimitive, + val p083: TwoUnitPrimitive, + val p084: TwoUnitPrimitive, + val p085: TwoUnitPrimitive, + val p086: TwoUnitPrimitive, + val p087: TwoUnitPrimitive, + val p088: TwoUnitPrimitive, + val p089: TwoUnitPrimitive, + val p090: TwoUnitPrimitive, + val p091: TwoUnitPrimitive, + val p092: TwoUnitPrimitive, + val p093: TwoUnitPrimitive, + val p094: TwoUnitPrimitive, + val p095: TwoUnitPrimitive, + val p096: TwoUnitPrimitive, + val p097: TwoUnitPrimitive, + val p098: TwoUnitPrimitive, + val p099: TwoUnitPrimitive, + val p100: TwoUnitPrimitive, + val p101: TwoUnitPrimitive, + val p102: TwoUnitPrimitive, + val p103: TwoUnitPrimitive, + val p104: TwoUnitPrimitive, + val p105: TwoUnitPrimitive, + val p106: TwoUnitPrimitive, + val p107: TwoUnitPrimitive, + val p108: TwoUnitPrimitive, + val p109: TwoUnitPrimitive, + val p110: TwoUnitPrimitive, + val p111: TwoUnitPrimitive, + val p112: TwoUnitPrimitive, + val p113: TwoUnitPrimitive, + val p114: TwoUnitPrimitive, + val p115: TwoUnitPrimitive, + val p116: TwoUnitPrimitive, + val p117: TwoUnitPrimitive, + val p118: TwoUnitPrimitive, + val p119: TwoUnitPrimitive, + val p120: TwoUnitPrimitive, + val p121: TwoUnitPrimitive, + val p122: TwoUnitPrimitive, + val p123: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q000: TwoUnitPrimitive = TwoUnitPrimitive(0), + q001: TwoUnitPrimitive = TwoUnitPrimitive(1), + q002: TwoUnitPrimitive = TwoUnitPrimitive(2), + q003: TwoUnitPrimitive = TwoUnitPrimitive(3), + q004: TwoUnitPrimitive = TwoUnitPrimitive(4), + q005: TwoUnitPrimitive = TwoUnitPrimitive(5), + q006: TwoUnitPrimitive = TwoUnitPrimitive(6), + q007: TwoUnitPrimitive = TwoUnitPrimitive(7), + q008: TwoUnitPrimitive = TwoUnitPrimitive(8), + q009: TwoUnitPrimitive = TwoUnitPrimitive(9), + q010: TwoUnitPrimitive = TwoUnitPrimitive(10), + q011: TwoUnitPrimitive = TwoUnitPrimitive(11), + q012: TwoUnitPrimitive = TwoUnitPrimitive(12), + q013: TwoUnitPrimitive = TwoUnitPrimitive(13), + q014: TwoUnitPrimitive = TwoUnitPrimitive(14), + q015: TwoUnitPrimitive = TwoUnitPrimitive(15), + q016: TwoUnitPrimitive = TwoUnitPrimitive(16), + q017: TwoUnitPrimitive = TwoUnitPrimitive(17), + q018: TwoUnitPrimitive = TwoUnitPrimitive(18), + q019: TwoUnitPrimitive = TwoUnitPrimitive(19), + q020: TwoUnitPrimitive = TwoUnitPrimitive(20), + q021: TwoUnitPrimitive = TwoUnitPrimitive(21), + q022: TwoUnitPrimitive = TwoUnitPrimitive(22), + q023: TwoUnitPrimitive = TwoUnitPrimitive(23), + q024: TwoUnitPrimitive = TwoUnitPrimitive(24), + q025: TwoUnitPrimitive = TwoUnitPrimitive(25), + q026: TwoUnitPrimitive = TwoUnitPrimitive(26), + q027: TwoUnitPrimitive = TwoUnitPrimitive(27), + q028: TwoUnitPrimitive = TwoUnitPrimitive(28), + q029: TwoUnitPrimitive = TwoUnitPrimitive(29), + q030: TwoUnitPrimitive = TwoUnitPrimitive(30), + q031: TwoUnitPrimitive = TwoUnitPrimitive(31), + q032: TwoUnitPrimitive = TwoUnitPrimitive(32), + q033: TwoUnitPrimitive = TwoUnitPrimitive(33), + q034: TwoUnitPrimitive = TwoUnitPrimitive(34), + q035: TwoUnitPrimitive = TwoUnitPrimitive(35), + q036: TwoUnitPrimitive = TwoUnitPrimitive(36), + q037: TwoUnitPrimitive = TwoUnitPrimitive(37), + q038: TwoUnitPrimitive = TwoUnitPrimitive(38), + q039: TwoUnitPrimitive = TwoUnitPrimitive(39), + q040: TwoUnitPrimitive = TwoUnitPrimitive(40), + q041: TwoUnitPrimitive = TwoUnitPrimitive(41), + q042: TwoUnitPrimitive = TwoUnitPrimitive(42), + q043: TwoUnitPrimitive = TwoUnitPrimitive(43), + q044: TwoUnitPrimitive = TwoUnitPrimitive(44), + q045: TwoUnitPrimitive = TwoUnitPrimitive(45), + q046: TwoUnitPrimitive = TwoUnitPrimitive(46), + q047: TwoUnitPrimitive = TwoUnitPrimitive(47), + q048: TwoUnitPrimitive = TwoUnitPrimitive(48), + q049: TwoUnitPrimitive = TwoUnitPrimitive(49), + q050: TwoUnitPrimitive = TwoUnitPrimitive(50), + q051: TwoUnitPrimitive = TwoUnitPrimitive(51), + q052: TwoUnitPrimitive = TwoUnitPrimitive(52), + q053: TwoUnitPrimitive = TwoUnitPrimitive(53), + q054: TwoUnitPrimitive = TwoUnitPrimitive(54), + q055: TwoUnitPrimitive = TwoUnitPrimitive(55), + q056: TwoUnitPrimitive = TwoUnitPrimitive(56), + q057: TwoUnitPrimitive = TwoUnitPrimitive(57), + q058: TwoUnitPrimitive = TwoUnitPrimitive(58), + q059: TwoUnitPrimitive = TwoUnitPrimitive(59), + q060: TwoUnitPrimitive = TwoUnitPrimitive(60), + q061: TwoUnitPrimitive = TwoUnitPrimitive(61), + q062: TwoUnitPrimitive = TwoUnitPrimitive(62), + q063: TwoUnitPrimitive = TwoUnitPrimitive(63), + q064: TwoUnitPrimitive = TwoUnitPrimitive(64), + q065: TwoUnitPrimitive = TwoUnitPrimitive(65), + q066: TwoUnitPrimitive = TwoUnitPrimitive(66), + q067: TwoUnitPrimitive = TwoUnitPrimitive(67), + q068: TwoUnitPrimitive = TwoUnitPrimitive(68), + q069: TwoUnitPrimitive = TwoUnitPrimitive(69), + q070: TwoUnitPrimitive = TwoUnitPrimitive(70), + q071: TwoUnitPrimitive = TwoUnitPrimitive(71), + q072: TwoUnitPrimitive = TwoUnitPrimitive(72), + q073: TwoUnitPrimitive = TwoUnitPrimitive(73), + q074: TwoUnitPrimitive = TwoUnitPrimitive(74), + q075: TwoUnitPrimitive = TwoUnitPrimitive(75), + q076: TwoUnitPrimitive = TwoUnitPrimitive(76), + q077: TwoUnitPrimitive = TwoUnitPrimitive(77), + q078: TwoUnitPrimitive = TwoUnitPrimitive(78), + q079: TwoUnitPrimitive = TwoUnitPrimitive(79), + q080: TwoUnitPrimitive = TwoUnitPrimitive(80), + q081: TwoUnitPrimitive = TwoUnitPrimitive(81), + q082: TwoUnitPrimitive = TwoUnitPrimitive(82), + q083: TwoUnitPrimitive = TwoUnitPrimitive(83), + q084: TwoUnitPrimitive = TwoUnitPrimitive(84), + q085: TwoUnitPrimitive = TwoUnitPrimitive(85), + q086: TwoUnitPrimitive = TwoUnitPrimitive(86), + q087: TwoUnitPrimitive = TwoUnitPrimitive(87), + q088: TwoUnitPrimitive = TwoUnitPrimitive(88), + q089: TwoUnitPrimitive = TwoUnitPrimitive(89), + q090: TwoUnitPrimitive = TwoUnitPrimitive(90), + q091: TwoUnitPrimitive = TwoUnitPrimitive(91), + q092: TwoUnitPrimitive = TwoUnitPrimitive(92), + q093: TwoUnitPrimitive = TwoUnitPrimitive(93), + q094: TwoUnitPrimitive = TwoUnitPrimitive(94), + q095: TwoUnitPrimitive = TwoUnitPrimitive(95), + q096: TwoUnitPrimitive = TwoUnitPrimitive(96), + q097: TwoUnitPrimitive = TwoUnitPrimitive(97), + q098: TwoUnitPrimitive = TwoUnitPrimitive(98), + q099: TwoUnitPrimitive = TwoUnitPrimitive(99), + q100: TwoUnitPrimitive = TwoUnitPrimitive(100), + q101: TwoUnitPrimitive = TwoUnitPrimitive(101), + q102: TwoUnitPrimitive = TwoUnitPrimitive(102), + q103: TwoUnitPrimitive = TwoUnitPrimitive(103), + q104: TwoUnitPrimitive = TwoUnitPrimitive(104), + q105: TwoUnitPrimitive = TwoUnitPrimitive(105), + q106: TwoUnitPrimitive = TwoUnitPrimitive(106), + q107: TwoUnitPrimitive = TwoUnitPrimitive(107), + q108: TwoUnitPrimitive = TwoUnitPrimitive(108), + q109: TwoUnitPrimitive = TwoUnitPrimitive(109), + q110: TwoUnitPrimitive = TwoUnitPrimitive(110), + q111: TwoUnitPrimitive = TwoUnitPrimitive(111), + q112: TwoUnitPrimitive = TwoUnitPrimitive(112), + q113: TwoUnitPrimitive = TwoUnitPrimitive(113), + q114: TwoUnitPrimitive = TwoUnitPrimitive(114), + q115: TwoUnitPrimitive = TwoUnitPrimitive(115), + q116: TwoUnitPrimitive = TwoUnitPrimitive(116), + q117: TwoUnitPrimitive = TwoUnitPrimitive(117), + q118: TwoUnitPrimitive = TwoUnitPrimitive(118), + q119: TwoUnitPrimitive = TwoUnitPrimitive(119), + q120: TwoUnitPrimitive = TwoUnitPrimitive(120), + q121: TwoUnitPrimitive = TwoUnitPrimitive(121), + q122: TwoUnitPrimitive = TwoUnitPrimitive(122), + q123: TwoUnitPrimitive = TwoUnitPrimitive(123) + ) = DstMax( + q000, + q001, + q002, + q003, + q004, + q005, + q006, + q007, + q008, + q009, + q010, + q011, + q012, + q013, + q014, + q015, + q016, + q017, + q018, + q019, + q020, + q021, + q022, + q023, + q024, + q025, + q026, + q027, + q028, + q029, + q030, + q031, + q032, + q033, + q034, + q035, + q036, + q037, + q038, + q039, + q040, + q041, + q042, + q043, + q044, + q045, + q046, + q047, + q048, + q049, + q050, + q051, + q052, + q053, + q054, + q055, + q056, + q057, + q058, + q059, + q060, + q061, + q062, + q063, + q064, + q065, + q066, + q067, + q068, + q069, + q070, + q071, + q072, + q073, + q074, + q075, + q076, + q077, + q078, + q079, + q080, + q081, + q082, + q083, + q084, + q085, + q086, + q087, + q088, + q089, + q090, + q091, + q092, + q093, + q094, + q095, + q096, + q097, + q098, + q099, + q100, + q101, + q102, + q103, + q104, + q105, + q106, + q107, + q108, + q109, + q110, + q111, + q112, + q113, + q114, + q115, + q116, + q117, + q118, + q119, + q120, + q121, + q122, + q123 + ) + } + } + + @Test + fun testMax() { + assertReflectEquals(DstMax.creator(), defaultMapper.readValue("{}")) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithoutDefaultArgumentsTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithoutDefaultArgumentsTest.kt new file mode 100644 index 00000000..5d0e63dc --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/deser/valueClass/parameterSize/twoUnitPrimitive/DeserializeByFactoryWithoutDefaultArgumentsTest.kt @@ -0,0 +1,1072 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.parameterSize.twoUnitPrimitive + +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.module.kotlin.assertReflectEquals +import com.fasterxml.jackson.module.kotlin.callPrimaryConstructor +import com.fasterxml.jackson.module.kotlin.defaultMapper +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test + +// Convert the property p to q (but not the value) to make it an input to the factory function. +private fun replacePQ(src: String) = src.replace(Regex("""p\d+":""")) { "q" + it.value.substring(1) } + +/** + * Up to argument size 32 there is one mask argument for the default argument, + * 33 ~ 64 there are two, and 65 there are three, so each boundary value is tested. + * Also, the maximum size of arguments that can be set by a constructor + * that includes a value class as an argument is 126 (one less by DefaultConstructorMarker), so test that case as well. + */ +class DeserializeByFactoryWithoutDefaultArgumentsTest { + data class Dst32( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive, + q01: TwoUnitPrimitive, + q02: TwoUnitPrimitive, + q03: TwoUnitPrimitive, + q04: TwoUnitPrimitive, + q05: TwoUnitPrimitive, + q06: TwoUnitPrimitive, + q07: TwoUnitPrimitive, + q08: TwoUnitPrimitive, + q09: TwoUnitPrimitive, + q10: TwoUnitPrimitive, + q11: TwoUnitPrimitive, + q12: TwoUnitPrimitive, + q13: TwoUnitPrimitive, + q14: TwoUnitPrimitive, + q15: TwoUnitPrimitive, + q16: TwoUnitPrimitive, + q17: TwoUnitPrimitive, + q18: TwoUnitPrimitive, + q19: TwoUnitPrimitive, + q20: TwoUnitPrimitive, + q21: TwoUnitPrimitive, + q22: TwoUnitPrimitive, + q23: TwoUnitPrimitive, + q24: TwoUnitPrimitive, + q25: TwoUnitPrimitive, + q26: TwoUnitPrimitive, + q27: TwoUnitPrimitive, + q28: TwoUnitPrimitive, + q29: TwoUnitPrimitive, + q30: TwoUnitPrimitive, + q31: TwoUnitPrimitive + ) = Dst32( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31 + ) + } + } + + @Test + fun test32() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = replacePQ(defaultMapper.writeValueAsString(expected)) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst33( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive, + q01: TwoUnitPrimitive, + q02: TwoUnitPrimitive, + q03: TwoUnitPrimitive, + q04: TwoUnitPrimitive, + q05: TwoUnitPrimitive, + q06: TwoUnitPrimitive, + q07: TwoUnitPrimitive, + q08: TwoUnitPrimitive, + q09: TwoUnitPrimitive, + q10: TwoUnitPrimitive, + q11: TwoUnitPrimitive, + q12: TwoUnitPrimitive, + q13: TwoUnitPrimitive, + q14: TwoUnitPrimitive, + q15: TwoUnitPrimitive, + q16: TwoUnitPrimitive, + q17: TwoUnitPrimitive, + q18: TwoUnitPrimitive, + q19: TwoUnitPrimitive, + q20: TwoUnitPrimitive, + q21: TwoUnitPrimitive, + q22: TwoUnitPrimitive, + q23: TwoUnitPrimitive, + q24: TwoUnitPrimitive, + q25: TwoUnitPrimitive, + q26: TwoUnitPrimitive, + q27: TwoUnitPrimitive, + q28: TwoUnitPrimitive, + q29: TwoUnitPrimitive, + q30: TwoUnitPrimitive, + q31: TwoUnitPrimitive, + q32: TwoUnitPrimitive + ) = Dst33( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32 + ) + } + } + + @Test + fun test33() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = replacePQ(defaultMapper.writeValueAsString(expected)) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst64( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive, + q01: TwoUnitPrimitive, + q02: TwoUnitPrimitive, + q03: TwoUnitPrimitive, + q04: TwoUnitPrimitive, + q05: TwoUnitPrimitive, + q06: TwoUnitPrimitive, + q07: TwoUnitPrimitive, + q08: TwoUnitPrimitive, + q09: TwoUnitPrimitive, + q10: TwoUnitPrimitive, + q11: TwoUnitPrimitive, + q12: TwoUnitPrimitive, + q13: TwoUnitPrimitive, + q14: TwoUnitPrimitive, + q15: TwoUnitPrimitive, + q16: TwoUnitPrimitive, + q17: TwoUnitPrimitive, + q18: TwoUnitPrimitive, + q19: TwoUnitPrimitive, + q20: TwoUnitPrimitive, + q21: TwoUnitPrimitive, + q22: TwoUnitPrimitive, + q23: TwoUnitPrimitive, + q24: TwoUnitPrimitive, + q25: TwoUnitPrimitive, + q26: TwoUnitPrimitive, + q27: TwoUnitPrimitive, + q28: TwoUnitPrimitive, + q29: TwoUnitPrimitive, + q30: TwoUnitPrimitive, + q31: TwoUnitPrimitive, + q32: TwoUnitPrimitive, + q33: TwoUnitPrimitive, + q34: TwoUnitPrimitive, + q35: TwoUnitPrimitive, + q36: TwoUnitPrimitive, + q37: TwoUnitPrimitive, + q38: TwoUnitPrimitive, + q39: TwoUnitPrimitive, + q40: TwoUnitPrimitive, + q41: TwoUnitPrimitive, + q42: TwoUnitPrimitive, + q43: TwoUnitPrimitive, + q44: TwoUnitPrimitive, + q45: TwoUnitPrimitive, + q46: TwoUnitPrimitive, + q47: TwoUnitPrimitive, + q48: TwoUnitPrimitive, + q49: TwoUnitPrimitive, + q50: TwoUnitPrimitive, + q51: TwoUnitPrimitive, + q52: TwoUnitPrimitive, + q53: TwoUnitPrimitive, + q54: TwoUnitPrimitive, + q55: TwoUnitPrimitive, + q56: TwoUnitPrimitive, + q57: TwoUnitPrimitive, + q58: TwoUnitPrimitive, + q59: TwoUnitPrimitive, + q60: TwoUnitPrimitive, + q61: TwoUnitPrimitive, + q62: TwoUnitPrimitive, + q63: TwoUnitPrimitive + ) = Dst64( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32, + q33, + q34, + q35, + q36, + q37, + q38, + q39, + q40, + q41, + q42, + q43, + q44, + q45, + q46, + q47, + q48, + q49, + q50, + q51, + q52, + q53, + q54, + q55, + q56, + q57, + q58, + q59, + q60, + q61, + q62, + q63 + ) + } + } + + @Test + fun test64() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = replacePQ(defaultMapper.writeValueAsString(expected)) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + data class Dst65( + val p00: TwoUnitPrimitive, + val p01: TwoUnitPrimitive, + val p02: TwoUnitPrimitive, + val p03: TwoUnitPrimitive, + val p04: TwoUnitPrimitive, + val p05: TwoUnitPrimitive, + val p06: TwoUnitPrimitive, + val p07: TwoUnitPrimitive, + val p08: TwoUnitPrimitive, + val p09: TwoUnitPrimitive, + val p10: TwoUnitPrimitive, + val p11: TwoUnitPrimitive, + val p12: TwoUnitPrimitive, + val p13: TwoUnitPrimitive, + val p14: TwoUnitPrimitive, + val p15: TwoUnitPrimitive, + val p16: TwoUnitPrimitive, + val p17: TwoUnitPrimitive, + val p18: TwoUnitPrimitive, + val p19: TwoUnitPrimitive, + val p20: TwoUnitPrimitive, + val p21: TwoUnitPrimitive, + val p22: TwoUnitPrimitive, + val p23: TwoUnitPrimitive, + val p24: TwoUnitPrimitive, + val p25: TwoUnitPrimitive, + val p26: TwoUnitPrimitive, + val p27: TwoUnitPrimitive, + val p28: TwoUnitPrimitive, + val p29: TwoUnitPrimitive, + val p30: TwoUnitPrimitive, + val p31: TwoUnitPrimitive, + val p32: TwoUnitPrimitive, + val p33: TwoUnitPrimitive, + val p34: TwoUnitPrimitive, + val p35: TwoUnitPrimitive, + val p36: TwoUnitPrimitive, + val p37: TwoUnitPrimitive, + val p38: TwoUnitPrimitive, + val p39: TwoUnitPrimitive, + val p40: TwoUnitPrimitive, + val p41: TwoUnitPrimitive, + val p42: TwoUnitPrimitive, + val p43: TwoUnitPrimitive, + val p44: TwoUnitPrimitive, + val p45: TwoUnitPrimitive, + val p46: TwoUnitPrimitive, + val p47: TwoUnitPrimitive, + val p48: TwoUnitPrimitive, + val p49: TwoUnitPrimitive, + val p50: TwoUnitPrimitive, + val p51: TwoUnitPrimitive, + val p52: TwoUnitPrimitive, + val p53: TwoUnitPrimitive, + val p54: TwoUnitPrimitive, + val p55: TwoUnitPrimitive, + val p56: TwoUnitPrimitive, + val p57: TwoUnitPrimitive, + val p58: TwoUnitPrimitive, + val p59: TwoUnitPrimitive, + val p60: TwoUnitPrimitive, + val p61: TwoUnitPrimitive, + val p62: TwoUnitPrimitive, + val p63: TwoUnitPrimitive, + val p64: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q00: TwoUnitPrimitive, + q01: TwoUnitPrimitive, + q02: TwoUnitPrimitive, + q03: TwoUnitPrimitive, + q04: TwoUnitPrimitive, + q05: TwoUnitPrimitive, + q06: TwoUnitPrimitive, + q07: TwoUnitPrimitive, + q08: TwoUnitPrimitive, + q09: TwoUnitPrimitive, + q10: TwoUnitPrimitive, + q11: TwoUnitPrimitive, + q12: TwoUnitPrimitive, + q13: TwoUnitPrimitive, + q14: TwoUnitPrimitive, + q15: TwoUnitPrimitive, + q16: TwoUnitPrimitive, + q17: TwoUnitPrimitive, + q18: TwoUnitPrimitive, + q19: TwoUnitPrimitive, + q20: TwoUnitPrimitive, + q21: TwoUnitPrimitive, + q22: TwoUnitPrimitive, + q23: TwoUnitPrimitive, + q24: TwoUnitPrimitive, + q25: TwoUnitPrimitive, + q26: TwoUnitPrimitive, + q27: TwoUnitPrimitive, + q28: TwoUnitPrimitive, + q29: TwoUnitPrimitive, + q30: TwoUnitPrimitive, + q31: TwoUnitPrimitive, + q32: TwoUnitPrimitive, + q33: TwoUnitPrimitive, + q34: TwoUnitPrimitive, + q35: TwoUnitPrimitive, + q36: TwoUnitPrimitive, + q37: TwoUnitPrimitive, + q38: TwoUnitPrimitive, + q39: TwoUnitPrimitive, + q40: TwoUnitPrimitive, + q41: TwoUnitPrimitive, + q42: TwoUnitPrimitive, + q43: TwoUnitPrimitive, + q44: TwoUnitPrimitive, + q45: TwoUnitPrimitive, + q46: TwoUnitPrimitive, + q47: TwoUnitPrimitive, + q48: TwoUnitPrimitive, + q49: TwoUnitPrimitive, + q50: TwoUnitPrimitive, + q51: TwoUnitPrimitive, + q52: TwoUnitPrimitive, + q53: TwoUnitPrimitive, + q54: TwoUnitPrimitive, + q55: TwoUnitPrimitive, + q56: TwoUnitPrimitive, + q57: TwoUnitPrimitive, + q58: TwoUnitPrimitive, + q59: TwoUnitPrimitive, + q60: TwoUnitPrimitive, + q61: TwoUnitPrimitive, + q62: TwoUnitPrimitive, + q63: TwoUnitPrimitive, + q64: TwoUnitPrimitive + ) = Dst65( + q00, + q01, + q02, + q03, + q04, + q05, + q06, + q07, + q08, + q09, + q10, + q11, + q12, + q13, + q14, + q15, + q16, + q17, + q18, + q19, + q20, + q21, + q22, + q23, + q24, + q25, + q26, + q27, + q28, + q29, + q30, + q31, + q32, + q33, + q34, + q35, + q36, + q37, + q38, + q39, + q40, + q41, + q42, + q43, + q44, + q45, + q46, + q47, + q48, + q49, + q50, + q51, + q52, + q53, + q54, + q55, + q56, + q57, + q58, + q59, + q60, + q61, + q62, + q63, + q64 + ) + } + } + + @Test + fun test65() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = replacePQ(defaultMapper.writeValueAsString(expected)) + Assertions.assertEquals(expected, defaultMapper.readValue(src)) + } + + // It cannot be a data class because the generated method would exceed the argument size limit. + class DstMax( + val p000: TwoUnitPrimitive, + val p001: TwoUnitPrimitive, + val p002: TwoUnitPrimitive, + val p003: TwoUnitPrimitive, + val p004: TwoUnitPrimitive, + val p005: TwoUnitPrimitive, + val p006: TwoUnitPrimitive, + val p007: TwoUnitPrimitive, + val p008: TwoUnitPrimitive, + val p009: TwoUnitPrimitive, + val p010: TwoUnitPrimitive, + val p011: TwoUnitPrimitive, + val p012: TwoUnitPrimitive, + val p013: TwoUnitPrimitive, + val p014: TwoUnitPrimitive, + val p015: TwoUnitPrimitive, + val p016: TwoUnitPrimitive, + val p017: TwoUnitPrimitive, + val p018: TwoUnitPrimitive, + val p019: TwoUnitPrimitive, + val p020: TwoUnitPrimitive, + val p021: TwoUnitPrimitive, + val p022: TwoUnitPrimitive, + val p023: TwoUnitPrimitive, + val p024: TwoUnitPrimitive, + val p025: TwoUnitPrimitive, + val p026: TwoUnitPrimitive, + val p027: TwoUnitPrimitive, + val p028: TwoUnitPrimitive, + val p029: TwoUnitPrimitive, + val p030: TwoUnitPrimitive, + val p031: TwoUnitPrimitive, + val p032: TwoUnitPrimitive, + val p033: TwoUnitPrimitive, + val p034: TwoUnitPrimitive, + val p035: TwoUnitPrimitive, + val p036: TwoUnitPrimitive, + val p037: TwoUnitPrimitive, + val p038: TwoUnitPrimitive, + val p039: TwoUnitPrimitive, + val p040: TwoUnitPrimitive, + val p041: TwoUnitPrimitive, + val p042: TwoUnitPrimitive, + val p043: TwoUnitPrimitive, + val p044: TwoUnitPrimitive, + val p045: TwoUnitPrimitive, + val p046: TwoUnitPrimitive, + val p047: TwoUnitPrimitive, + val p048: TwoUnitPrimitive, + val p049: TwoUnitPrimitive, + val p050: TwoUnitPrimitive, + val p051: TwoUnitPrimitive, + val p052: TwoUnitPrimitive, + val p053: TwoUnitPrimitive, + val p054: TwoUnitPrimitive, + val p055: TwoUnitPrimitive, + val p056: TwoUnitPrimitive, + val p057: TwoUnitPrimitive, + val p058: TwoUnitPrimitive, + val p059: TwoUnitPrimitive, + val p060: TwoUnitPrimitive, + val p061: TwoUnitPrimitive, + val p062: TwoUnitPrimitive, + val p063: TwoUnitPrimitive, + val p064: TwoUnitPrimitive, + val p065: TwoUnitPrimitive, + val p066: TwoUnitPrimitive, + val p067: TwoUnitPrimitive, + val p068: TwoUnitPrimitive, + val p069: TwoUnitPrimitive, + val p070: TwoUnitPrimitive, + val p071: TwoUnitPrimitive, + val p072: TwoUnitPrimitive, + val p073: TwoUnitPrimitive, + val p074: TwoUnitPrimitive, + val p075: TwoUnitPrimitive, + val p076: TwoUnitPrimitive, + val p077: TwoUnitPrimitive, + val p078: TwoUnitPrimitive, + val p079: TwoUnitPrimitive, + val p080: TwoUnitPrimitive, + val p081: TwoUnitPrimitive, + val p082: TwoUnitPrimitive, + val p083: TwoUnitPrimitive, + val p084: TwoUnitPrimitive, + val p085: TwoUnitPrimitive, + val p086: TwoUnitPrimitive, + val p087: TwoUnitPrimitive, + val p088: TwoUnitPrimitive, + val p089: TwoUnitPrimitive, + val p090: TwoUnitPrimitive, + val p091: TwoUnitPrimitive, + val p092: TwoUnitPrimitive, + val p093: TwoUnitPrimitive, + val p094: TwoUnitPrimitive, + val p095: TwoUnitPrimitive, + val p096: TwoUnitPrimitive, + val p097: TwoUnitPrimitive, + val p098: TwoUnitPrimitive, + val p099: TwoUnitPrimitive, + val p100: TwoUnitPrimitive, + val p101: TwoUnitPrimitive, + val p102: TwoUnitPrimitive, + val p103: TwoUnitPrimitive, + val p104: TwoUnitPrimitive, + val p105: TwoUnitPrimitive, + val p106: TwoUnitPrimitive, + val p107: TwoUnitPrimitive, + val p108: TwoUnitPrimitive, + val p109: TwoUnitPrimitive, + val p110: TwoUnitPrimitive, + val p111: TwoUnitPrimitive, + val p112: TwoUnitPrimitive, + val p113: TwoUnitPrimitive, + val p114: TwoUnitPrimitive, + val p115: TwoUnitPrimitive, + val p116: TwoUnitPrimitive, + val p117: TwoUnitPrimitive, + val p118: TwoUnitPrimitive, + val p119: TwoUnitPrimitive, + val p120: TwoUnitPrimitive, + val p121: TwoUnitPrimitive, + val p122: TwoUnitPrimitive, + val p123: TwoUnitPrimitive, + val p124: TwoUnitPrimitive, + val p125: TwoUnitPrimitive + ) { + companion object { + @JvmStatic + @JsonCreator + fun creator( + q000: TwoUnitPrimitive, + q001: TwoUnitPrimitive, + q002: TwoUnitPrimitive, + q003: TwoUnitPrimitive, + q004: TwoUnitPrimitive, + q005: TwoUnitPrimitive, + q006: TwoUnitPrimitive, + q007: TwoUnitPrimitive, + q008: TwoUnitPrimitive, + q009: TwoUnitPrimitive, + q010: TwoUnitPrimitive, + q011: TwoUnitPrimitive, + q012: TwoUnitPrimitive, + q013: TwoUnitPrimitive, + q014: TwoUnitPrimitive, + q015: TwoUnitPrimitive, + q016: TwoUnitPrimitive, + q017: TwoUnitPrimitive, + q018: TwoUnitPrimitive, + q019: TwoUnitPrimitive, + q020: TwoUnitPrimitive, + q021: TwoUnitPrimitive, + q022: TwoUnitPrimitive, + q023: TwoUnitPrimitive, + q024: TwoUnitPrimitive, + q025: TwoUnitPrimitive, + q026: TwoUnitPrimitive, + q027: TwoUnitPrimitive, + q028: TwoUnitPrimitive, + q029: TwoUnitPrimitive, + q030: TwoUnitPrimitive, + q031: TwoUnitPrimitive, + q032: TwoUnitPrimitive, + q033: TwoUnitPrimitive, + q034: TwoUnitPrimitive, + q035: TwoUnitPrimitive, + q036: TwoUnitPrimitive, + q037: TwoUnitPrimitive, + q038: TwoUnitPrimitive, + q039: TwoUnitPrimitive, + q040: TwoUnitPrimitive, + q041: TwoUnitPrimitive, + q042: TwoUnitPrimitive, + q043: TwoUnitPrimitive, + q044: TwoUnitPrimitive, + q045: TwoUnitPrimitive, + q046: TwoUnitPrimitive, + q047: TwoUnitPrimitive, + q048: TwoUnitPrimitive, + q049: TwoUnitPrimitive, + q050: TwoUnitPrimitive, + q051: TwoUnitPrimitive, + q052: TwoUnitPrimitive, + q053: TwoUnitPrimitive, + q054: TwoUnitPrimitive, + q055: TwoUnitPrimitive, + q056: TwoUnitPrimitive, + q057: TwoUnitPrimitive, + q058: TwoUnitPrimitive, + q059: TwoUnitPrimitive, + q060: TwoUnitPrimitive, + q061: TwoUnitPrimitive, + q062: TwoUnitPrimitive, + q063: TwoUnitPrimitive, + q064: TwoUnitPrimitive, + q065: TwoUnitPrimitive, + q066: TwoUnitPrimitive, + q067: TwoUnitPrimitive, + q068: TwoUnitPrimitive, + q069: TwoUnitPrimitive, + q070: TwoUnitPrimitive, + q071: TwoUnitPrimitive, + q072: TwoUnitPrimitive, + q073: TwoUnitPrimitive, + q074: TwoUnitPrimitive, + q075: TwoUnitPrimitive, + q076: TwoUnitPrimitive, + q077: TwoUnitPrimitive, + q078: TwoUnitPrimitive, + q079: TwoUnitPrimitive, + q080: TwoUnitPrimitive, + q081: TwoUnitPrimitive, + q082: TwoUnitPrimitive, + q083: TwoUnitPrimitive, + q084: TwoUnitPrimitive, + q085: TwoUnitPrimitive, + q086: TwoUnitPrimitive, + q087: TwoUnitPrimitive, + q088: TwoUnitPrimitive, + q089: TwoUnitPrimitive, + q090: TwoUnitPrimitive, + q091: TwoUnitPrimitive, + q092: TwoUnitPrimitive, + q093: TwoUnitPrimitive, + q094: TwoUnitPrimitive, + q095: TwoUnitPrimitive, + q096: TwoUnitPrimitive, + q097: TwoUnitPrimitive, + q098: TwoUnitPrimitive, + q099: TwoUnitPrimitive, + q100: TwoUnitPrimitive, + q101: TwoUnitPrimitive, + q102: TwoUnitPrimitive, + q103: TwoUnitPrimitive, + q104: TwoUnitPrimitive, + q105: TwoUnitPrimitive, + q106: TwoUnitPrimitive, + q107: TwoUnitPrimitive, + q108: TwoUnitPrimitive, + q109: TwoUnitPrimitive, + q110: TwoUnitPrimitive, + q111: TwoUnitPrimitive, + q112: TwoUnitPrimitive, + q113: TwoUnitPrimitive, + q114: TwoUnitPrimitive, + q115: TwoUnitPrimitive, + q116: TwoUnitPrimitive, + q117: TwoUnitPrimitive, + q118: TwoUnitPrimitive, + q119: TwoUnitPrimitive, + q120: TwoUnitPrimitive, + q121: TwoUnitPrimitive, + q122: TwoUnitPrimitive, + q123: TwoUnitPrimitive, + q124: TwoUnitPrimitive, + q125: TwoUnitPrimitive + ) = DstMax( + q000, + q001, + q002, + q003, + q004, + q005, + q006, + q007, + q008, + q009, + q010, + q011, + q012, + q013, + q014, + q015, + q016, + q017, + q018, + q019, + q020, + q021, + q022, + q023, + q024, + q025, + q026, + q027, + q028, + q029, + q030, + q031, + q032, + q033, + q034, + q035, + q036, + q037, + q038, + q039, + q040, + q041, + q042, + q043, + q044, + q045, + q046, + q047, + q048, + q049, + q050, + q051, + q052, + q053, + q054, + q055, + q056, + q057, + q058, + q059, + q060, + q061, + q062, + q063, + q064, + q065, + q066, + q067, + q068, + q069, + q070, + q071, + q072, + q073, + q074, + q075, + q076, + q077, + q078, + q079, + q080, + q081, + q082, + q083, + q084, + q085, + q086, + q087, + q088, + q089, + q090, + q091, + q092, + q093, + q094, + q095, + q096, + q097, + q098, + q099, + q100, + q101, + q102, + q103, + q104, + q105, + q106, + q107, + q108, + q109, + q110, + q111, + q112, + q113, + q114, + q115, + q116, + q117, + q118, + q119, + q120, + q121, + q122, + q123, + q124, + q125 + ) + } + } + + @Test + fun testMax() { + val expected = callPrimaryConstructor { TwoUnitPrimitive(it.index.toLong()) } + val src = replacePQ(defaultMapper.writeValueAsString(expected)) + assertReflectEquals(expected, defaultMapper.readValue(src)) + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeCustomTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeCustomTest.kt index 7f5a502a..7a35054c 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeCustomTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeCustomTest.kt @@ -17,7 +17,8 @@ class JsonIncludeCustomTest { data class NullFilterDto( val pN: Primitive? = null, val nnoN: NonNullObject? = null, - val noN1: NullableObject? = null + val noN1: NullableObject? = null, + val tupN: TwoUnitPrimitive? = null ) @Test diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeNonNullTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeNonNullTest.kt index ef8535d7..87606c82 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeNonNullTest.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/JsonIncludeNonNullTest.kt @@ -11,7 +11,8 @@ class JsonIncludeNonNullTest { data class Dto( val pN: Primitive? = null, val nnoN: NonNullObject? = null, - val noN1: NullableObject? = null + val noN1: NullableObject? = null, + val tupN: TwoUnitPrimitive? = null ) @Test diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/ValueClasses.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/ValueClasses.kt index 1a6804cd..da0eedaa 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/ValueClasses.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/jsonInclude/ValueClasses.kt @@ -8,3 +8,6 @@ value class NonNullObject(val v: String) @JvmInline value class NullableObject(val v: String?) + +@JvmInline +value class TwoUnitPrimitive(val v: Long) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/ValueClasses.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/ValueClasses.kt index 30ef5ddd..fd9fea2f 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/ValueClasses.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/ValueClasses.kt @@ -30,3 +30,12 @@ value class NullableObject(val v: String?) { } } } + +@JvmInline +value class TwoUnitPrimitive(val v: Long) { + class Serializer : StdSerializer(TwoUnitPrimitive::class.java) { + override fun serialize(value: TwoUnitPrimitive, gen: JsonGenerator, provider: SerializerProvider) { + gen.writeNumber(value.v + 100) + } + } +} diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/byAnnotation/twoUnitPrimitive/ByAnnotationTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/byAnnotation/twoUnitPrimitive/ByAnnotationTest.kt new file mode 100644 index 00000000..3b0ec889 --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/kogeraIntegration/ser.valueClass/serializer/byAnnotation/twoUnitPrimitive/ByAnnotationTest.kt @@ -0,0 +1,83 @@ +package com.fasterxml.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.twoUnitPrimitive + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.annotation.JsonSerialize +import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.fasterxml.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.TwoUnitPrimitive +import com.fasterxml.jackson.module.kotlin.testPrettyWriter +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class ByAnnotationTest { + companion object { + val writer = KotlinModule.Builder() + .build() + .let { ObjectMapper().registerModule(it) } + .testPrettyWriter() + } + + data class NonNullSrc( + // @see #651 + // @JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + // val paramAnn: TwoUnitPrimitive, + @get:JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + val getterAnn: TwoUnitPrimitive, + @field:JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + val fieldAnn: TwoUnitPrimitive + ) + + @Test + fun nonNull() { + val src = NonNullSrc(/* TwoUnitPrimitive(0),*/ TwoUnitPrimitive(1), TwoUnitPrimitive(2)) + + assertEquals( + """ + { + "getterAnn" : 101, + "fieldAnn" : 102 + } + """.trimIndent(), + writer.writeValueAsString(src) + ) + } + + data class NullableSrc( + // @see #651 + // @JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + // val paramAnn: TwoUnitPrimitive?, + @get:JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + val getterAnn: TwoUnitPrimitive?, + @field:JsonSerialize(using = TwoUnitPrimitive.Serializer::class) + val fieldAnn: TwoUnitPrimitive? + ) + + @Test + fun nullableWithoutNull() { + val src = NullableSrc(/* TwoUnitPrimitive(0),*/ TwoUnitPrimitive(1), TwoUnitPrimitive(2)) + + assertEquals( + """ + { + "getterAnn" : 101, + "fieldAnn" : 102 + } + """.trimIndent(), + writer.writeValueAsString(src) + ) + } + + @Test + fun nullableWithNull() { + val src = NullableSrc(null, null) + + assertEquals( + """ + { + "getterAnn" : null, + "fieldAnn" : null + } + """.trimIndent(), + writer.writeValueAsString(src) + ) + } +}