Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
}

group = "com.mapk"
version = "0.15"
version = "0.16"

java {
sourceCompatibility = JavaVersion.VERSION_1_8
Expand All @@ -30,7 +30,7 @@ repositories {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation(kotlin("reflect"))
implementation("com.github.ProjectMapK:Shared:0.6")
api("com.github.ProjectMapK:Shared:0.7")

// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter
testImplementation(group = "org.junit.jupiter", name = "junit-jupiter", version = "5.6.0") {
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/com/mapk/kmapper/KMapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.mapk.core.ArgumentBucket
import com.mapk.core.EnumMapper
import com.mapk.core.KFunctionForCall
import com.mapk.core.getAliasOrName
import com.mapk.core.isUseDefaultArgument
import com.mapk.core.toKConstructor
import java.lang.reflect.Method
import kotlin.reflect.KClass
Expand All @@ -29,7 +30,7 @@ class KMapper<T : Any> private constructor(
)

private val parameterMap: Map<String, ParameterForMap<*>> = function.parameters
.filter { it.kind != KParameter.Kind.INSTANCE }
.filter { it.kind != KParameter.Kind.INSTANCE && !it.isUseDefaultArgument() }
.associate { (propertyNameConverter(it.getAliasOrName()!!)) to ParameterForMap.newInstance(it) }

private fun bindArguments(argumentBucket: ArgumentBucket, src: Any) {
Expand Down
20 changes: 20 additions & 0 deletions src/test/kotlin/com/mapk/kmapper/DefaultArgumentTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.mapk.kmapper

import com.mapk.annotations.KUseDefaultArgument
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test

@DisplayName("デフォルト引数を指定するテスト")
class DefaultArgumentTest {
data class Dst(val fooArgument: Int, @param:KUseDefaultArgument val barArgument: String = "default")
data class Src(val fooArgument: Int, val barArgument: String)

@Test
fun test() {
val src = Src(1, "src")

val result = KMapper(::Dst).map(src)
assertEquals(Dst(1, "default"), result)
}
}