Browse Source

Add Kotlin value classes tests with primitive types

This commit adds more Kotlin value classes tests with
primitive types to ensure testing unwrapped use case.

See gh-28638
pull/31025/head
Sébastien Deleuze 3 years ago
parent
commit
c38f053905
  1. 36
      spring-beans/src/test/kotlin/org/springframework/beans/BeanUtilsKotlinTests.kt

36
spring-beans/src/test/kotlin/org/springframework/beans/BeanUtilsKotlinTests.kt

@ -128,6 +128,35 @@ class BeanUtilsKotlinTests { @@ -128,6 +128,35 @@ class BeanUtilsKotlinTests {
assertThat(instance).isEqualTo(OneConstructorWithNullableValueClass(null))
}
@Test
fun `Instantiate primitive value class`() {
val constructor = BeanUtils.findPrimaryConstructor(PrimitiveValueClass::class.java)!!
assertThat(constructor).isNotNull()
val value = 0
val instance = BeanUtils.instantiateClass(constructor, value)
assertThat(instance).isEqualTo(PrimitiveValueClass(value))
}
@Test
fun `Instantiate class with primitive value class parameter`() {
val constructor = BeanUtils.findPrimaryConstructor(OneConstructorWithPrimitiveValueClass::class.java)!!
assertThat(constructor).isNotNull()
val value = PrimitiveValueClass(0)
val instance = BeanUtils.instantiateClass(constructor, value)
assertThat(instance).isEqualTo(OneConstructorWithPrimitiveValueClass(value))
}
@Test
fun `Instantiate class with nullable primitive value class parameter`() {
val constructor = BeanUtils.findPrimaryConstructor(OneConstructorWithNullablePrimitiveValueClass::class.java)!!
assertThat(constructor).isNotNull()
val value = PrimitiveValueClass(0)
var instance = BeanUtils.instantiateClass(constructor, value)
assertThat(instance).isEqualTo(OneConstructorWithNullablePrimitiveValueClass(value))
instance = BeanUtils.instantiateClass(constructor, null)
assertThat(instance).isEqualTo(OneConstructorWithNullablePrimitiveValueClass(null))
}
class Foo(val param1: String, val param2: Int)
@ -180,4 +209,11 @@ class BeanUtilsKotlinTests { @@ -180,4 +209,11 @@ class BeanUtilsKotlinTests {
data class OneConstructorWithNullableValueClass(val value: ValueClass?)
@JvmInline
value class PrimitiveValueClass(private val value: Int)
data class OneConstructorWithPrimitiveValueClass(val value: PrimitiveValueClass)
data class OneConstructorWithNullablePrimitiveValueClass(val value: PrimitiveValueClass?)
}

Loading…
Cancel
Save