diff --git a/mockk/common/src/test/kotlin/io/mockk/it/ValueClassTest.kt b/mockk/common/src/test/kotlin/io/mockk/it/ValueClassTest.kt index 6acf64f9f..66fa6bec6 100644 --- a/mockk/common/src/test/kotlin/io/mockk/it/ValueClassTest.kt +++ b/mockk/common/src/test/kotlin/io/mockk/it/ValueClassTest.kt @@ -1,6 +1,7 @@ package io.mockk.it import io.mockk.* +import kotlin.jvm.JvmInline import kotlin.test.Test import kotlin.test.assertEquals @@ -43,6 +44,43 @@ class ValueClassTest { verify { mock.processValue(DummyValue(1)) } } + + @Test + fun `any matcher for value class`() { + val mock = mockk(relaxed = true) + val givenResult = 1 + every { mock.doSomething(any()) } returns givenResult + + val result = mock.doSomething(ValueDummy("moin")) + + assertEquals(givenResult, result) + } + + @Test + fun `slot for value class`() { + val mock = mockk(relaxed = true) + val slot = slot() + val givenResult = 1 + every { mock.doSomething(capture(slot)) } returns givenResult + + val givenParameter = ValueDummy("s") + + val result = mock.doSomething(givenParameter) + + assertEquals(givenResult, result) + assertEquals(givenParameter, slot.captured) + } + + @Test + fun `value class as return value`() { + val mock = mockk(relaxed = true) + val givenResult = ValueDummy("moin") + every { mock.getSomething() } returns givenResult + + val result = mock.getSomething() + + assertEquals(givenResult, result) + } } // TODO should be value class in kotlin 1.5+ @@ -54,3 +92,11 @@ private class DummyService { fun processValue(value: DummyValue) = DummyValue(0) } + +@JvmInline +value class ValueDummy(val value: String) + +interface ValueServiceDummy { + fun doSomething(value: ValueDummy): Int + fun getSomething(): ValueDummy +}