Skip to content

Commit c38f053

Browse files
committed
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
1 parent 88c2a25 commit c38f053

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,35 @@ class BeanUtilsKotlinTests {
128128
assertThat(instance).isEqualTo(OneConstructorWithNullableValueClass(null))
129129
}
130130

131+
@Test
132+
fun `Instantiate primitive value class`() {
133+
val constructor = BeanUtils.findPrimaryConstructor(PrimitiveValueClass::class.java)!!
134+
assertThat(constructor).isNotNull()
135+
val value = 0
136+
val instance = BeanUtils.instantiateClass(constructor, value)
137+
assertThat(instance).isEqualTo(PrimitiveValueClass(value))
138+
}
139+
140+
@Test
141+
fun `Instantiate class with primitive value class parameter`() {
142+
val constructor = BeanUtils.findPrimaryConstructor(OneConstructorWithPrimitiveValueClass::class.java)!!
143+
assertThat(constructor).isNotNull()
144+
val value = PrimitiveValueClass(0)
145+
val instance = BeanUtils.instantiateClass(constructor, value)
146+
assertThat(instance).isEqualTo(OneConstructorWithPrimitiveValueClass(value))
147+
}
148+
149+
@Test
150+
fun `Instantiate class with nullable primitive value class parameter`() {
151+
val constructor = BeanUtils.findPrimaryConstructor(OneConstructorWithNullablePrimitiveValueClass::class.java)!!
152+
assertThat(constructor).isNotNull()
153+
val value = PrimitiveValueClass(0)
154+
var instance = BeanUtils.instantiateClass(constructor, value)
155+
assertThat(instance).isEqualTo(OneConstructorWithNullablePrimitiveValueClass(value))
156+
instance = BeanUtils.instantiateClass(constructor, null)
157+
assertThat(instance).isEqualTo(OneConstructorWithNullablePrimitiveValueClass(null))
158+
}
159+
131160

132161
class Foo(val param1: String, val param2: Int)
133162

@@ -180,4 +209,11 @@ class BeanUtilsKotlinTests {
180209

181210
data class OneConstructorWithNullableValueClass(val value: ValueClass?)
182211

212+
@JvmInline
213+
value class PrimitiveValueClass(private val value: Int)
214+
215+
data class OneConstructorWithPrimitiveValueClass(val value: PrimitiveValueClass)
216+
217+
data class OneConstructorWithNullablePrimitiveValueClass(val value: PrimitiveValueClass?)
218+
183219
}

0 commit comments

Comments
 (0)