Skip to content

Commit

Permalink
Merge pull request #1209 from ath0s/capture-mutable-list-value-class
Browse files Browse the repository at this point in the history
Fix capture using mutable list of value class
  • Loading branch information
Raibaz committed Jan 19, 2024
2 parents 640966d + f33d04b commit 108f9b4
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions modules/mockk-dsl/src/commonMain/kotlin/io/mockk/Matchers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,10 @@ data class CaptureMatcher<T : Any>(
) : Matcher<T>, CapturingMatcher, TypedMatcher, EquivalentMatcher {
override fun equivalent(): Matcher<Any> = ConstantMatcher(true)

@Suppress("UNCHECKED_CAST")
override fun capture(arg: Any?) {
captureList.add(arg as T)
if (arg != null) {
captureList.add(InternalPlatformDsl.boxCast(argumentType, arg))
}
}

override fun match(arg: T?): Boolean = true
Expand Down
16 changes: 16 additions & 0 deletions modules/mockk/src/commonTest/kotlin/io/mockk/it/ValueClassTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,22 @@ class ValueClassTest {
verify { mock.argValueClassReturnValueClass(dummyValueClassArg) }
}

@Test
fun `arg is MutableList(ValueClass), returns ValueClass`() {
val slot = mutableListOf<DummyValue>()
val mock = mockk<DummyService> {
every { argValueClassReturnValueClass(capture(slot)) } returns dummyValueClassReturn
}

val result = mock.argValueClassReturnValueClass(dummyValueClassArg)

assertEquals(dummyValueClassReturn, result)

assertEquals(dummyValueClassArg, slot.single())

verify { mock.argValueClassReturnValueClass(dummyValueClassArg) }
}

@Test
fun `arg is ValueClass, answers ValueClass`() {
val mock = mockk<DummyService> {
Expand Down

0 comments on commit 108f9b4

Please sign in to comment.