@@ -8,8 +8,11 @@ import java.math.BigInteger
88import kotlin.reflect.KClass
99import kotlin.reflect.jvm.jvmName
1010import org.junit.jupiter.api.Assertions.assertEquals
11+ import org.junit.jupiter.api.Assertions.assertNull
1112import org.junit.jupiter.api.DisplayName
1213import org.junit.jupiter.api.Nested
14+ import org.junit.jupiter.api.Test
15+ import org.junit.jupiter.api.assertDoesNotThrow
1316import org.junit.jupiter.params.ParameterizedTest
1417import org.junit.jupiter.params.provider.EnumSource
1518import org.junit.jupiter.params.provider.ValueSource
@@ -36,7 +39,7 @@ class ConversionTest {
3639 }
3740
3841 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)
4043 }
4144
4245 class FromNumber (annotation : ToNumber ) : AbstractKConverter<ToNumber, Number, Number>(annotation) {
@@ -53,12 +56,13 @@ class ConversionTest {
5356 }
5457
5558 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)
5760 }
5861
59- data class Dst (@ToNumber(BigDecimal ::class ) val number : BigDecimal )
62+ data class Dst (@ToNumber(BigDecimal ::class ) val number : BigDecimal ? )
6063 data class NumberSrc (val number : Number )
6164 data class StringSrc (val number : String )
65+ object NullSrc { val number: Number ? = null }
6266
6367 enum class NumberSource (val values : Array <Number >) {
6468 Doubles (arrayOf(1.0 , - 2.0 , 3.5 )),
@@ -72,12 +76,14 @@ class ConversionTest {
7276 @Nested
7377 @DisplayName(" KMapper" )
7478 inner class KMapperTest {
79+ private val mapper = KMapper (::Dst )
80+
7581 @ParameterizedTest
7682 @EnumSource(NumberSource ::class )
7783 @DisplayName(" Numberソース" )
7884 fun fromNumber (numbers : NumberSource ) {
7985 numbers.values.forEach {
80- val actual = KMapper (:: Dst ) .map(NumberSrc (it))
86+ val actual = mapper .map(NumberSrc (it))
8187 assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
8288 }
8389 }
@@ -86,20 +92,31 @@ class ConversionTest {
8692 @ValueSource(strings = [" 100" , " 2.0" , " -500" ])
8793 @DisplayName(" Stringソース" )
8894 fun fromString (str : String ) {
89- val actual = KMapper (:: Dst ) .map(StringSrc (str))
95+ val actual = mapper .map(StringSrc (str))
9096 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
9197 }
98+
99+ @Test
100+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
101+ fun fromNull () {
102+ assertDoesNotThrow {
103+ val actual = mapper.map(NullSrc )
104+ assertNull(actual.number)
105+ }
106+ }
92107 }
93108
94109 @Nested
95110 @DisplayName(" PlainKMapper" )
96111 inner class PlainKMapperTest {
112+ private val mapper = PlainKMapper (::Dst )
113+
97114 @ParameterizedTest
98115 @EnumSource(NumberSource ::class )
99116 @DisplayName(" Numberソース" )
100117 fun fromNumber (numbers : NumberSource ) {
101118 numbers.values.forEach {
102- val actual = PlainKMapper (:: Dst ) .map(NumberSrc (it))
119+ val actual = mapper .map(NumberSrc (it))
103120 assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
104121 }
105122 }
@@ -108,9 +125,18 @@ class ConversionTest {
108125 @ValueSource(strings = [" 100" , " 2.0" , " -500" ])
109126 @DisplayName(" Stringソース" )
110127 fun fromString (str : String ) {
111- val actual = PlainKMapper (:: Dst ) .map(StringSrc (str))
128+ val actual = mapper .map(StringSrc (str))
112129 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
113130 }
131+
132+ @Test
133+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
134+ fun fromNull () {
135+ assertDoesNotThrow {
136+ val actual = mapper.map(NullSrc )
137+ assertNull(actual.number)
138+ }
139+ }
114140 }
115141
116142 @Nested
@@ -133,5 +159,14 @@ class ConversionTest {
133159 val actual = BoundKMapper <StringSrc , Dst >().map(StringSrc (str))
134160 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
135161 }
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+ }
136171 }
137172}
0 commit comments