Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit 5ee465f

Browse files
committed
コンバータを用いた変換処理のテストを追加
1 parent 7296067 commit 5ee465f

File tree

1 file changed

+85
-1
lines changed

1 file changed

+85
-1
lines changed

src/test/kotlin/com/mapk/kmapper/ConversionTest.kt

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ package com.mapk.kmapper
22

33
import com.mapk.conversion.AbstractKConverter
44
import com.mapk.conversion.KConvertBy
5-
import org.junit.jupiter.api.DisplayName
65
import java.lang.IllegalArgumentException
76
import java.math.BigDecimal
87
import java.math.BigInteger
98
import kotlin.reflect.KClass
109
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
1116

1217
@DisplayName("KConvertアノテーションによる変換のテスト")
1318
class ConversionTest {
@@ -50,4 +55,83 @@ class ConversionTest {
5055
override val srcClass = Number::class
5156
override fun convert(source: Number?): Number? = source?.let(converter)
5257
}
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+
}
53137
}

0 commit comments

Comments
 (0)