@@ -29,37 +29,46 @@ class BeanUtilsKotlinTests {
29
29
@Test
30
30
fun `Instantiate immutable class` () {
31
31
val constructor = BeanUtils .findPrimaryConstructor(Foo ::class .java)!!
32
- val foo = BeanUtils .instantiateClass(constructor , " bar " , 3 )
33
- assertEquals(" bar " , foo.param1)
32
+ val foo = BeanUtils .instantiateClass(constructor , " a " , 3 )
33
+ assertEquals(" a " , foo.param1)
34
34
assertEquals(3 , foo.param2)
35
35
}
36
36
37
37
@Test
38
38
fun `Instantiate immutable class with optional parameter and all parameters specified` () {
39
39
val constructor = BeanUtils .findPrimaryConstructor(Bar ::class .java)!!
40
- val bar = BeanUtils .instantiateClass(constructor , " baz " , 8 )
41
- assertEquals(" baz " , bar.param1)
40
+ val bar = BeanUtils .instantiateClass(constructor , " a " , 8 )
41
+ assertEquals(" a " , bar.param1)
42
42
assertEquals(8 , bar.param2)
43
43
}
44
44
45
45
@Test
46
46
fun `Instantiate immutable class with optional parameter and only mandatory parameters specified by position` () {
47
47
val constructor = BeanUtils .findPrimaryConstructor(Bar ::class .java)!!
48
- val bar = BeanUtils .instantiateClass(constructor , " baz " )
49
- assertEquals(" baz " , bar.param1)
48
+ val bar = BeanUtils .instantiateClass(constructor , " a " )
49
+ assertEquals(" a " , bar.param1)
50
50
assertEquals(12 , bar.param2)
51
51
}
52
52
53
53
@Test
54
- fun `Instantiate immutable class with optional parameter specified with null value` () {
54
+ fun `Instantiate immutable class with optional parameter specified with null value` () {
55
55
val constructor = BeanUtils .findPrimaryConstructor(Bar ::class .java)!!
56
- val bar = BeanUtils .instantiateClass(constructor , " baz " , null )
57
- assertEquals(" baz " , bar.param1)
56
+ val bar = BeanUtils .instantiateClass(constructor , " a " , null )
57
+ assertEquals(" a " , bar.param1)
58
58
assertEquals(12 , bar.param2)
59
59
}
60
60
61
+ @Test // SPR-15851
62
+ fun `Instantiate mutable class with declared constructor and default values for all parameters` () {
63
+ val baz = BeanUtils .instantiateClass(Baz ::class .java.getDeclaredConstructor())
64
+ assertEquals(" a" , baz.param1)
65
+ assertEquals(12 , baz.param2)
66
+ }
67
+
61
68
class Foo (val param1 : String , val param2 : Int )
62
69
63
70
class Bar (val param1 : String , val param2 : Int = 12 )
64
-
71
+
72
+ class Baz (var param1 : String = " a" , var param2 : Int = 12 )
73
+
65
74
}
0 commit comments