From 59bd6d69bea4c59624099d4f96cb394ac53117c5 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:02:22 +0900 Subject: [PATCH 01/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 3516e12..51c16a4 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -57,7 +57,7 @@ internal sealed class BoundParameterForMap { override fun map(src: S): Any? = EnumMapper.getEnum(paramClazz, propertyGetter.invoke(src) as String) } - private class ToString( + internal class ToString( override val name: String, override val propertyGetter: Method ) : BoundParameterForMap() { From f7238888541389b24f5d177b677b76e6581914f8 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:02:41 +0900 Subject: [PATCH 02/19] =?UTF-8?q?invoke=E7=B5=90=E6=9E=9C=E3=81=8Cnull?= =?UTF-8?q?=E3=81=A0=E3=81=A3=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=AB=E8=90=BD?= =?UTF-8?q?=E3=81=A1=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 51c16a4..edafe62 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -61,7 +61,7 @@ internal sealed class BoundParameterForMap { override val name: String, override val propertyGetter: Method ) : BoundParameterForMap() { - override fun map(src: S): String? = propertyGetter.invoke(src).toString() + override fun map(src: S): String? = propertyGetter.invoke(src)?.toString() } companion object { From f90d07cc48e788415e1b5c10b502fbe4521742bc Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:08:02 +0900 Subject: [PATCH 03/19] =?UTF-8?q?ToString=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt new file mode 100644 index 0000000..23196d1 --- /dev/null +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -0,0 +1,34 @@ +package com.mapk.kmapper + +import kotlin.reflect.full.memberProperties +import kotlin.reflect.jvm.javaGetter +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test + +@DisplayName("BoundKMapperのパラメータテスト") +class BoundParameterForMapTest { + data class IntSrc(val int: Int?) + + @Nested + @DisplayName("ToStringのテスト") + inner class ToStringTest { + private val parameter = + BoundParameterForMap.ToString("", IntSrc::class.memberProperties.single().javaGetter!!) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(IntSrc(1)) + assertEquals("1", result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(IntSrc(null))) + } + } +} From ba7a678da7bcba1929ef42fef3f79404f53771f4 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:10:01 +0900 Subject: [PATCH 04/19] =?UTF-8?q?Enum=E3=81=AE=E5=88=A9=E7=94=A8=E3=82=92?= =?UTF-8?q?=E5=85=B1=E9=80=9A=E5=8C=96=E3=81=97=E3=81=9F=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E5=88=87=E3=82=8A=E5=87=BA=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt | 4 ---- src/test/kotlin/com/mapk/kmapper/TestCommons.kt | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 src/test/kotlin/com/mapk/kmapper/TestCommons.kt diff --git a/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt b/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt index 045d7a2..2bdf52a 100644 --- a/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt @@ -8,10 +8,6 @@ import org.junit.jupiter.api.Nested import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.EnumSource -enum class JvmLanguage { - Java, Scala, Groovy, Kotlin -} - private class EnumMappingDst(val language: JvmLanguage?) @DisplayName("文字列 -> Enumのマッピングテスト") diff --git a/src/test/kotlin/com/mapk/kmapper/TestCommons.kt b/src/test/kotlin/com/mapk/kmapper/TestCommons.kt new file mode 100644 index 0000000..d0925f7 --- /dev/null +++ b/src/test/kotlin/com/mapk/kmapper/TestCommons.kt @@ -0,0 +1,5 @@ +package com.mapk.kmapper + +enum class JvmLanguage { + Java, Scala, Groovy, Kotlin +} From 68b3dc148127ac5db207e7c08cd0f4ed685e2952 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:11:59 +0900 Subject: [PATCH 05/19] =?UTF-8?q?Src=E3=81=AF=E6=B1=BA=E3=81=BE=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=9F=E3=81=9F=E3=82=81=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=8D=E3=83=AA=E3=82=AF=E3=82=B9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index 23196d1..8305df2 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -16,7 +16,7 @@ class BoundParameterForMapTest { @DisplayName("ToStringのテスト") inner class ToStringTest { private val parameter = - BoundParameterForMap.ToString("", IntSrc::class.memberProperties.single().javaGetter!!) + BoundParameterForMap.ToString("", IntSrc::class.memberProperties.single().javaGetter!!) @Test @DisplayName("not null") From 00a18ddebd854031f256f3284177289503d717e1 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:12:09 +0900 Subject: [PATCH 06/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index edafe62..4ccd9f9 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -49,7 +49,7 @@ internal sealed class BoundParameterForMap { override fun map(src: S): Any? = boundKMapper.map(propertyGetter.invoke(src) as T) } - private class ToEnum( + internal class ToEnum( override val name: String, override val propertyGetter: Method, private val paramClazz: Class<*> From 9afddbe2ecc6d1526eec05554e523e2e8a9d8157 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:16:56 +0900 Subject: [PATCH 07/19] =?UTF-8?q?lint=E3=81=AE=E5=95=8F=E9=A1=8C=E3=81=8B?= =?UTF-8?q?=E3=82=89=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt | 1 + .../mapk/kmapper/{TestCommons.kt => testcommons/JvmLanguage.kt} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename src/test/kotlin/com/mapk/kmapper/{TestCommons.kt => testcommons/JvmLanguage.kt} (61%) diff --git a/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt b/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt index 2bdf52a..207e83e 100644 --- a/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/EnumMappingTest.kt @@ -2,6 +2,7 @@ package com.mapk.kmapper +import com.mapk.kmapper.testcommons.JvmLanguage import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Nested diff --git a/src/test/kotlin/com/mapk/kmapper/TestCommons.kt b/src/test/kotlin/com/mapk/kmapper/testcommons/JvmLanguage.kt similarity index 61% rename from src/test/kotlin/com/mapk/kmapper/TestCommons.kt rename to src/test/kotlin/com/mapk/kmapper/testcommons/JvmLanguage.kt index d0925f7..1a062a6 100644 --- a/src/test/kotlin/com/mapk/kmapper/TestCommons.kt +++ b/src/test/kotlin/com/mapk/kmapper/testcommons/JvmLanguage.kt @@ -1,4 +1,4 @@ -package com.mapk.kmapper +package com.mapk.kmapper.testcommons enum class JvmLanguage { Java, Scala, Groovy, Kotlin From b00befb7cfd9963b54521a6a4016b8b3567fedf2 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:18:16 +0900 Subject: [PATCH 08/19] =?UTF-8?q?invoke=E7=B5=90=E6=9E=9C=E3=81=8Cnull?= =?UTF-8?q?=E3=81=AE=E5=A0=B4=E5=90=88=E3=82=AD=E3=83=A3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E6=99=82=E3=81=AB=E8=90=BD=E3=81=A1=E3=82=8B=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 4ccd9f9..e281c87 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -54,7 +54,7 @@ internal sealed class BoundParameterForMap { override val propertyGetter: Method, private val paramClazz: Class<*> ) : BoundParameterForMap() { - override fun map(src: S): Any? = EnumMapper.getEnum(paramClazz, propertyGetter.invoke(src) as String) + override fun map(src: S): Any? = EnumMapper.getEnum(paramClazz, propertyGetter.invoke(src) as String?) } internal class ToString( From 00a5663a18f81bfa80d0cd9756b15a6e87e69b81 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:18:39 +0900 Subject: [PATCH 09/19] =?UTF-8?q?ToEnum=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index 8305df2..e9e230c 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -1,5 +1,6 @@ package com.mapk.kmapper +import com.mapk.kmapper.testcommons.JvmLanguage import kotlin.reflect.full.memberProperties import kotlin.reflect.jvm.javaGetter import org.junit.jupiter.api.Assertions.assertEquals @@ -11,6 +12,28 @@ import org.junit.jupiter.api.Test @DisplayName("BoundKMapperのパラメータテスト") class BoundParameterForMapTest { data class IntSrc(val int: Int?) + data class StringSrc(val str: String?) + + @Nested + @DisplayName("ToEnumのテスト") + inner class ToEnumTest { + private val parameter = BoundParameterForMap.ToEnum( + "", StringSrc::class.memberProperties.single().javaGetter!!, JvmLanguage::class.java + ) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(StringSrc("Java")) + assertEquals(JvmLanguage.Java, result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(StringSrc(null))) + } + } @Nested @DisplayName("ToStringのテスト") From 199a9856d44b42c19fbbe662277b0a8cfebdec50 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:22:00 +0900 Subject: [PATCH 10/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index e281c87..0ec8c78 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -17,7 +17,7 @@ internal sealed class BoundParameterForMap { abstract fun map(src: S): Any? - private class Plain( + internal class Plain( override val name: String, override val propertyGetter: Method ) : BoundParameterForMap() { From babe29a34731a35e5305e766f5d72b727da242c1 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 16:22:11 +0900 Subject: [PATCH 11/19] =?UTF-8?q?Plain=E3=81=AE=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index e9e230c..436021b 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -14,6 +14,26 @@ class BoundParameterForMapTest { data class IntSrc(val int: Int?) data class StringSrc(val str: String?) + @Nested + @DisplayName("Plainのテスト") + inner class PlainTest { + private val parameter = + BoundParameterForMap.Plain("", StringSrc::class.memberProperties.single().javaGetter!!) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(StringSrc("sss")) + assertEquals("sss", result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(StringSrc(null))) + } + } + @Nested @DisplayName("ToEnumのテスト") inner class ToEnumTest { From c7ceedc8121915d922c740b03a503fffb5fe5ecc Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:04:40 +0900 Subject: [PATCH 12/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 0ec8c78..fdbb843 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -24,7 +24,7 @@ internal sealed class BoundParameterForMap { override fun map(src: S): Any? = propertyGetter.invoke(src) } - private class UseConverter( + internal class UseConverter( override val name: String, override val propertyGetter: Method, private val converter: KFunction<*> From 8d511b07f6c10429c59f0c5eeb20e91836cdba9f Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:04:55 +0900 Subject: [PATCH 13/19] =?UTF-8?q?UseConverter=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index 436021b..f494baa 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -34,6 +34,31 @@ class BoundParameterForMapTest { } } + @Nested + @DisplayName("UseConverterのテスト") + inner class UseConverterTest { + // アクセシビリティの問題で公開状態に設定 + @Suppress("MemberVisibilityCanBePrivate") + fun makeTwiceOrNull(int: Int?) = int?.let { it * 2 } + + private val parameter = BoundParameterForMap.UseConverter( + "", IntSrc::class.memberProperties.single().javaGetter!!, this::makeTwiceOrNull + ) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(IntSrc(1)) + assertEquals(2, result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(IntSrc(null))) + } + } + @Nested @DisplayName("ToEnumのテスト") inner class ToEnumTest { From fa20ec1556c4cd506941552d2df0ccd4a4d21692 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:17:05 +0900 Subject: [PATCH 14/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index fdbb843..3e14dad 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -32,7 +32,7 @@ internal sealed class BoundParameterForMap { override fun map(src: S): Any? = converter.call(propertyGetter.invoke(src)) } - private class UseKMapper( + internal class UseKMapper( override val name: String, override val propertyGetter: Method, private val kMapper: KMapper<*> From d7e0d5913e13b925e641c51eedaddeffd462f81c Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:17:52 +0900 Subject: [PATCH 15/19] =?UTF-8?q?invoke=E7=B5=90=E6=9E=9C=E3=81=8Cnull?= =?UTF-8?q?=E3=81=AE=E5=A0=B4=E5=90=88mapper=E3=82=92=E5=91=BC=E3=81=B6?= =?UTF-8?q?=E3=81=A8=E8=90=BD=E3=81=A1=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 3e14dad..60f4317 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -38,7 +38,7 @@ internal sealed class BoundParameterForMap { private val kMapper: KMapper<*> ) : BoundParameterForMap() { // 1引数で呼び出すとMap/Pairが適切に処理されないため、2引数目にダミーを噛ませている - override fun map(src: S): Any? = kMapper.map(propertyGetter.invoke(src), PARAMETER_DUMMY) + override fun map(src: S): Any? = propertyGetter.invoke(src)?.let { kMapper.map(it, PARAMETER_DUMMY) } } private class UseBoundKMapper( From cfec017ac9452371a586a4323fb029b76af9be30 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:18:14 +0900 Subject: [PATCH 16/19] =?UTF-8?q?UseKMapper=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index f494baa..83f567e 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -13,6 +13,9 @@ import org.junit.jupiter.api.Test class BoundParameterForMapTest { data class IntSrc(val int: Int?) data class StringSrc(val str: String?) + data class ObjectSrc(val obj: Any?) + + data class ObjectDst(val int: Int?, val str: String?) @Nested @DisplayName("Plainのテスト") @@ -59,6 +62,27 @@ class BoundParameterForMapTest { } } + @Nested + @DisplayName("UseKMapperのテスト") + inner class UseKMapperTest { + private val parameter = BoundParameterForMap.UseKMapper( + "", ObjectSrc::class.memberProperties.single().javaGetter!!, KMapper(::ObjectDst) + ) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(ObjectSrc(mapOf("int" to 0, "str" to null))) + assertEquals(ObjectDst(0, null), result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(ObjectSrc(null))) + } + } + @Nested @DisplayName("ToEnumのテスト") inner class ToEnumTest { From 38f62d7bfc48bc0fe568d2037c428fbc18568406 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:25:52 +0900 Subject: [PATCH 17/19] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E5=85=AC=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 60f4317..5488add 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -41,7 +41,7 @@ internal sealed class BoundParameterForMap { override fun map(src: S): Any? = propertyGetter.invoke(src)?.let { kMapper.map(it, PARAMETER_DUMMY) } } - private class UseBoundKMapper( + internal class UseBoundKMapper( override val name: String, override val propertyGetter: Method, private val boundKMapper: BoundKMapper From 3a7b28f84ef8897f2d985f603861e2e3225305cd Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:26:21 +0900 Subject: [PATCH 18/19] =?UTF-8?q?invoke=E7=B5=90=E6=9E=9C=E3=81=8Cnull?= =?UTF-8?q?=E3=81=AE=E5=A0=B4=E5=90=88=E3=83=9E=E3=83=83=E3=83=91=E3=83=BC?= =?UTF-8?q?=E3=82=92=E5=91=BC=E3=81=B6=E3=81=A8=E8=90=BD=E3=81=A1=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt index 5488add..8a956ba 100644 --- a/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt +++ b/src/main/kotlin/com/mapk/kmapper/BoundParameterForMap.kt @@ -46,7 +46,7 @@ internal sealed class BoundParameterForMap { override val propertyGetter: Method, private val boundKMapper: BoundKMapper ) : BoundParameterForMap() { - override fun map(src: S): Any? = boundKMapper.map(propertyGetter.invoke(src) as T) + override fun map(src: S): Any? = (propertyGetter.invoke(src))?.let { boundKMapper.map(it as T) } } internal class ToEnum( From 5b4175fcacaad46bb27d712b04ccd71c6c5ceca3 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 23 May 2020 17:26:50 +0900 Subject: [PATCH 19/19] =?UTF-8?q?UseBoundKMapper=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapk/kmapper/BoundParameterForMapTest.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt index 83f567e..654c3e1 100644 --- a/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt +++ b/src/test/kotlin/com/mapk/kmapper/BoundParameterForMapTest.kt @@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test class BoundParameterForMapTest { data class IntSrc(val int: Int?) data class StringSrc(val str: String?) + data class InnerSrc(val int: Int?, val str: String?) data class ObjectSrc(val obj: Any?) data class ObjectDst(val int: Int?, val str: String?) @@ -83,6 +84,27 @@ class BoundParameterForMapTest { } } + @Nested + @DisplayName("UseBoundKMapperのテスト") + inner class UseBoundKMapperTest { + private val parameter = BoundParameterForMap.UseBoundKMapper( + "", ObjectSrc::class.memberProperties.single().javaGetter!!, BoundKMapper(::ObjectDst, InnerSrc::class) + ) + + @Test + @DisplayName("not null") + fun isNotNull() { + val result = parameter.map(ObjectSrc(InnerSrc(null, "str"))) + assertEquals(ObjectDst(null, "str"), result) + } + + @Test + @DisplayName("null") + fun isNull() { + assertNull(parameter.map(ObjectSrc(null))) + } + } + @Nested @DisplayName("ToEnumのテスト") inner class ToEnumTest {