@@ -90,6 +90,45 @@ class BeanUtilsKotlinTests {
90
90
BeanUtils .instantiateClass(PrivateClass ::class .java.getDeclaredConstructor())
91
91
}
92
92
93
+ @Test
94
+ fun `Instantiate value class` () {
95
+ val constructor = BeanUtils .findPrimaryConstructor(ValueClass ::class .java)!!
96
+ assertThat(constructor ).isNotNull()
97
+ val value = " Hello value class!"
98
+ val instance = BeanUtils .instantiateClass(constructor , value)
99
+ assertThat(instance).isEqualTo(ValueClass (value))
100
+ }
101
+
102
+ @Test
103
+ fun `Instantiate value class with multiple constructors` () {
104
+ val constructor = BeanUtils .findPrimaryConstructor(ValueClassWithMultipleConstructors ::class .java)!!
105
+ assertThat(constructor ).isNotNull()
106
+ val value = " Hello value class!"
107
+ val instance = BeanUtils .instantiateClass(constructor , value)
108
+ assertThat(instance).isEqualTo(ValueClassWithMultipleConstructors (value))
109
+ }
110
+
111
+ @Test
112
+ fun `Instantiate class with value class parameter` () {
113
+ val constructor = BeanUtils .findPrimaryConstructor(OneConstructorWithValueClass ::class .java)!!
114
+ assertThat(constructor ).isNotNull()
115
+ val value = ValueClass (" Hello value class!" )
116
+ val instance = BeanUtils .instantiateClass(constructor , value)
117
+ assertThat(instance).isEqualTo(OneConstructorWithValueClass (value))
118
+ }
119
+
120
+ @Test
121
+ fun `Instantiate class with nullable value class parameter` () {
122
+ val constructor = BeanUtils .findPrimaryConstructor(OneConstructorWithNullableValueClass ::class .java)!!
123
+ assertThat(constructor ).isNotNull()
124
+ val value = ValueClass (" Hello value class!" )
125
+ var instance = BeanUtils .instantiateClass(constructor , value)
126
+ assertThat(instance).isEqualTo(OneConstructorWithNullableValueClass (value))
127
+ instance = BeanUtils .instantiateClass(constructor , null )
128
+ assertThat(instance).isEqualTo(OneConstructorWithNullableValueClass (null ))
129
+ }
130
+
131
+
93
132
class Foo (val param1 : String , val param2 : Int )
94
133
95
134
class Bar (val param1 : String , val param2 : Int = 12 )
@@ -128,4 +167,17 @@ class BeanUtilsKotlinTests {
128
167
129
168
private class PrivateClass
130
169
170
+ @JvmInline
171
+ value class ValueClass (private val value : String )
172
+
173
+ @JvmInline
174
+ value class ValueClassWithMultipleConstructors (private val value : String ) {
175
+ constructor () : this (" Fail" )
176
+ constructor (part1: String , part2: String ) : this (" Fail" )
177
+ }
178
+
179
+ data class OneConstructorWithValueClass (val value : ValueClass )
180
+
181
+ data class OneConstructorWithNullableValueClass (val value : ValueClass ? )
182
+
131
183
}
0 commit comments