@@ -8,8 +8,11 @@ import java.math.BigInteger
8
8
import kotlin.reflect.KClass
9
9
import kotlin.reflect.jvm.jvmName
10
10
import org.junit.jupiter.api.Assertions.assertEquals
11
+ import org.junit.jupiter.api.Assertions.assertNull
11
12
import org.junit.jupiter.api.DisplayName
12
13
import org.junit.jupiter.api.Nested
14
+ import org.junit.jupiter.api.Test
15
+ import org.junit.jupiter.api.assertDoesNotThrow
13
16
import org.junit.jupiter.params.ParameterizedTest
14
17
import org.junit.jupiter.params.provider.EnumSource
15
18
import org.junit.jupiter.params.provider.ValueSource
@@ -36,7 +39,7 @@ class ConversionTest {
36
39
}
37
40
38
41
override val srcClass = String ::class
39
- override fun convert (source : String? ): Number ? = source? .let (converter)
42
+ override fun convert (source : String ): Number ? = source.let (converter)
40
43
}
41
44
42
45
class FromNumber (annotation : ToNumber ) : AbstractKConverter<ToNumber, Number, Number>(annotation) {
@@ -53,12 +56,13 @@ class ConversionTest {
53
56
}
54
57
55
58
override val srcClass = Number ::class
56
- override fun convert (source : Number ? ): Number ? = source? .let (converter)
59
+ override fun convert (source : Number ): Number ? = source.let (converter)
57
60
}
58
61
59
- data class Dst (@ToNumber(BigDecimal ::class ) val number : BigDecimal )
62
+ data class Dst (@ToNumber(BigDecimal ::class ) val number : BigDecimal ? )
60
63
data class NumberSrc (val number : Number )
61
64
data class StringSrc (val number : String )
65
+ object NullSrc { val number: Number ? = null }
62
66
63
67
enum class NumberSource (val values : Array <Number >) {
64
68
Doubles (arrayOf(1.0 , - 2.0 , 3.5 )),
@@ -72,12 +76,14 @@ class ConversionTest {
72
76
@Nested
73
77
@DisplayName(" KMapper" )
74
78
inner class KMapperTest {
79
+ private val mapper = KMapper (::Dst )
80
+
75
81
@ParameterizedTest
76
82
@EnumSource(NumberSource ::class )
77
83
@DisplayName(" Numberソース" )
78
84
fun fromNumber (numbers : NumberSource ) {
79
85
numbers.values.forEach {
80
- val actual = KMapper (:: Dst ) .map(NumberSrc (it))
86
+ val actual = mapper .map(NumberSrc (it))
81
87
assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
82
88
}
83
89
}
@@ -86,20 +92,31 @@ class ConversionTest {
86
92
@ValueSource(strings = [" 100" , " 2.0" , " -500" ])
87
93
@DisplayName(" Stringソース" )
88
94
fun fromString (str : String ) {
89
- val actual = KMapper (:: Dst ) .map(StringSrc (str))
95
+ val actual = mapper .map(StringSrc (str))
90
96
assertEquals(0 , BigDecimal (str).compareTo(actual.number))
91
97
}
98
+
99
+ @Test
100
+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
101
+ fun fromNull () {
102
+ assertDoesNotThrow {
103
+ val actual = mapper.map(NullSrc )
104
+ assertNull(actual.number)
105
+ }
106
+ }
92
107
}
93
108
94
109
@Nested
95
110
@DisplayName(" PlainKMapper" )
96
111
inner class PlainKMapperTest {
112
+ private val mapper = PlainKMapper (::Dst )
113
+
97
114
@ParameterizedTest
98
115
@EnumSource(NumberSource ::class )
99
116
@DisplayName(" Numberソース" )
100
117
fun fromNumber (numbers : NumberSource ) {
101
118
numbers.values.forEach {
102
- val actual = PlainKMapper (:: Dst ) .map(NumberSrc (it))
119
+ val actual = mapper .map(NumberSrc (it))
103
120
assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
104
121
}
105
122
}
@@ -108,9 +125,18 @@ class ConversionTest {
108
125
@ValueSource(strings = [" 100" , " 2.0" , " -500" ])
109
126
@DisplayName(" Stringソース" )
110
127
fun fromString (str : String ) {
111
- val actual = PlainKMapper (:: Dst ) .map(StringSrc (str))
128
+ val actual = mapper .map(StringSrc (str))
112
129
assertEquals(0 , BigDecimal (str).compareTo(actual.number))
113
130
}
131
+
132
+ @Test
133
+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
134
+ fun fromNull () {
135
+ assertDoesNotThrow {
136
+ val actual = mapper.map(NullSrc )
137
+ assertNull(actual.number)
138
+ }
139
+ }
114
140
}
115
141
116
142
@Nested
@@ -133,5 +159,14 @@ class ConversionTest {
133
159
val actual = BoundKMapper <StringSrc , Dst >().map(StringSrc (str))
134
160
assertEquals(0 , BigDecimal (str).compareTo(actual.number))
135
161
}
162
+
163
+ @Test
164
+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
165
+ fun fromNull () {
166
+ assertDoesNotThrow {
167
+ val actual = BoundKMapper <NullSrc , Dst >(::Dst ).map(NullSrc )
168
+ assertNull(actual.number)
169
+ }
170
+ }
136
171
}
137
172
}
0 commit comments