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

Commit a7c872b

Browse files
authored
Merge pull request #3 from k163377/feature
Added a annotation support to use default arguments.
2 parents 17cb159 + 34ff783 commit a7c872b

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = "com.mapk"
9-
version = "0.1"
9+
version = "0.2"
1010

1111
java {
1212
sourceCompatibility = JavaVersion.VERSION_1_8
@@ -36,7 +36,7 @@ dependencies {
3636
exclude(module = "spring-jcl")
3737
exclude(module = "spring-tx")
3838
}
39-
implementation("com.github.ProjectMapK:Shared:0.6")
39+
api("com.github.ProjectMapK:Shared:0.7")
4040

4141
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter
4242
testImplementation(group = "org.junit.jupiter", name = "junit-jupiter", version = "5.6.0") {

src/main/kotlin/com/mapk/krowmapper/KRowMapper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.mapk.krowmapper
22

33
import com.mapk.core.EnumMapper
44
import com.mapk.core.KFunctionForCall
5+
import com.mapk.core.isUseDefaultArgument
56
import com.mapk.core.toKConstructor
67
import java.sql.ResultSet
78
import kotlin.reflect.KClass
@@ -22,7 +23,7 @@ class KRowMapper<T : Any> private constructor(
2223
)
2324

2425
private val parameters: List<ParameterForMap<*>> = function.parameters
25-
.filter { it.kind != KParameter.Kind.INSTANCE }
26+
.filter { it.kind != KParameter.Kind.INSTANCE && !it.isUseDefaultArgument() }
2627
.map { ParameterForMap.newInstance(it, propertyNameConverter) }
2728

2829
override fun mapRow(rs: ResultSet, rowNum: Int): T {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.mapk.krowmapper
2+
3+
import com.google.common.base.CaseFormat
4+
import com.mapk.annotations.KUseDefaultArgument
5+
import io.mockk.every
6+
import io.mockk.mockk
7+
import io.mockk.verify
8+
import java.sql.ResultSet
9+
import org.junit.jupiter.api.Assertions
10+
import org.junit.jupiter.api.DisplayName
11+
import org.junit.jupiter.api.Test
12+
13+
class DefaultValueTest {
14+
data class Dst(val fooId: Int, @param:KUseDefaultArgument val barValue: String = "default")
15+
16+
private fun camelToSnake(camel: String): String = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, camel)
17+
18+
@Test
19+
@DisplayName("デフォルト値を用いたマッピングテスト")
20+
fun test() {
21+
val resultSet = mockk<ResultSet>()
22+
every { resultSet.getObject("foo_id", any<Class<*>>()) } returns 1
23+
every { resultSet.getObject("bar_value", any<Class<*>>()) } returns "From result set."
24+
25+
val result = KRowMapper(::Dst, this::camelToSnake).mapRow(resultSet, 0)
26+
27+
Assertions.assertEquals(1, result.fooId)
28+
Assertions.assertEquals("default", result.barValue)
29+
30+
verify(exactly = 1) { resultSet.getObject("foo_id", Int::class.java) }
31+
verify(exactly = 0) { resultSet.getObject("bar_value", String::class.java) }
32+
}
33+
}

0 commit comments

Comments
 (0)