@@ -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
@@ -56,9 +59,10 @@ class ConversionTest {
5659 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 )),
@@ -89,6 +93,15 @@ class ConversionTest {
8993 val actual = KMapper (::Dst ).map(StringSrc (str))
9094 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
9195 }
96+
97+ @Test
98+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
99+ fun fromNull () {
100+ assertDoesNotThrow {
101+ val actual = KMapper (::Dst ).map(NullSrc )
102+ assertNull(actual.number)
103+ }
104+ }
92105 }
93106
94107 @Nested
@@ -111,6 +124,15 @@ class ConversionTest {
111124 val actual = PlainKMapper (::Dst ).map(StringSrc (str))
112125 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
113126 }
127+
128+ @Test
129+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
130+ fun fromNull () {
131+ assertDoesNotThrow {
132+ val actual = PlainKMapper (::Dst ).map(NullSrc )
133+ assertNull(actual.number)
134+ }
135+ }
114136 }
115137
116138 @Nested
@@ -133,5 +155,14 @@ class ConversionTest {
133155 val actual = BoundKMapper <StringSrc , Dst >().map(StringSrc (str))
134156 assertEquals(0 , BigDecimal (str).compareTo(actual.number))
135157 }
158+
159+ @Test
160+ @DisplayName(" nullを入れた際に変換処理に入らないことのテスト" )
161+ fun fromNull () {
162+ assertDoesNotThrow {
163+ val actual = BoundKMapper <NullSrc , Dst >(::Dst ).map(NullSrc )
164+ assertNull(actual.number)
165+ }
166+ }
136167 }
137168}
0 commit comments