@@ -2,12 +2,17 @@ package com.mapk.kmapper
2
2
3
3
import com.mapk.conversion.AbstractKConverter
4
4
import com.mapk.conversion.KConvertBy
5
- import org.junit.jupiter.api.DisplayName
6
5
import java.lang.IllegalArgumentException
7
6
import java.math.BigDecimal
8
7
import java.math.BigInteger
9
8
import kotlin.reflect.KClass
10
9
import kotlin.reflect.jvm.jvmName
10
+ import org.junit.jupiter.api.Assertions.assertEquals
11
+ import org.junit.jupiter.api.DisplayName
12
+ import org.junit.jupiter.api.Nested
13
+ import org.junit.jupiter.params.ParameterizedTest
14
+ import org.junit.jupiter.params.provider.EnumSource
15
+ import org.junit.jupiter.params.provider.ValueSource
11
16
12
17
@DisplayName(" KConvertアノテーションによる変換のテスト" )
13
18
class ConversionTest {
@@ -50,4 +55,83 @@ class ConversionTest {
50
55
override val srcClass = Number ::class
51
56
override fun convert (source : Number ? ): Number ? = source?.let (converter)
52
57
}
58
+
59
+ data class Dst (@ToNumber(BigDecimal ::class ) val number : BigDecimal )
60
+ data class NumberSrc (val number : Number )
61
+ data class StringSrc (val number : String )
62
+
63
+ enum class NumberSource (val values : Array <Number >) {
64
+ Doubles (arrayOf(1.0 , - 2.0 , 3.5 )),
65
+ Floats (arrayOf(4.1f , - 5.09f , 6.00001f )),
66
+ Longs (arrayOf(7090 , 800 , 911 )),
67
+ Ints (arrayOf(0 , 123 , 234 )),
68
+ Shorts (arrayOf(365 , 416 , 511 )),
69
+ Bytes (arrayOf(6 , 7 , 8 ))
70
+ }
71
+
72
+ @Nested
73
+ @DisplayName(" KMapper" )
74
+ inner class KMapperTest {
75
+ @ParameterizedTest
76
+ @EnumSource(NumberSource ::class )
77
+ @DisplayName(" Numberソース" )
78
+ fun fromNumber (numbers : NumberSource ) {
79
+ numbers.values.forEach {
80
+ val actual = KMapper (::Dst ).map(NumberSrc (it))
81
+ assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
82
+ }
83
+ }
84
+
85
+ @ParameterizedTest
86
+ @ValueSource(strings = [" 100" , " 2.0" , " -500" ])
87
+ @DisplayName(" Stringソース" )
88
+ fun fromString (str : String ) {
89
+ val actual = KMapper (::Dst ).map(StringSrc (str))
90
+ assertEquals(0 , BigDecimal (str).compareTo(actual.number))
91
+ }
92
+ }
93
+
94
+ @Nested
95
+ @DisplayName(" PlainKMapper" )
96
+ inner class PlainKMapperTest {
97
+ @ParameterizedTest
98
+ @EnumSource(NumberSource ::class )
99
+ @DisplayName(" Numberソース" )
100
+ fun fromNumber (numbers : NumberSource ) {
101
+ numbers.values.forEach {
102
+ val actual = PlainKMapper (::Dst ).map(NumberSrc (it))
103
+ assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
104
+ }
105
+ }
106
+
107
+ @ParameterizedTest
108
+ @ValueSource(strings = [" 100" , " 2.0" , " -500" ])
109
+ @DisplayName(" Stringソース" )
110
+ fun fromString (str : String ) {
111
+ val actual = PlainKMapper (::Dst ).map(StringSrc (str))
112
+ assertEquals(0 , BigDecimal (str).compareTo(actual.number))
113
+ }
114
+ }
115
+
116
+ @Nested
117
+ @DisplayName(" BoundKMapper" )
118
+ inner class BoundKMapperTest {
119
+ @ParameterizedTest
120
+ @EnumSource(NumberSource ::class )
121
+ @DisplayName(" Numberソース" )
122
+ fun fromNumber (numbers : NumberSource ) {
123
+ numbers.values.forEach {
124
+ val actual = BoundKMapper (::Dst , NumberSrc ::class ).map(NumberSrc (it))
125
+ assertEquals(0 , BigDecimal .valueOf(it.toDouble()).compareTo(actual.number))
126
+ }
127
+ }
128
+
129
+ @ParameterizedTest
130
+ @ValueSource(strings = [" 100" , " 2.0" , " -500" ])
131
+ @DisplayName(" Stringソース" )
132
+ fun fromString (str : String ) {
133
+ val actual = BoundKMapper (::Dst , StringSrc ::class ).map(StringSrc (str))
134
+ assertEquals(0 , BigDecimal (str).compareTo(actual.number))
135
+ }
136
+ }
53
137
}
0 commit comments