Skip to content

Commit

Permalink
mockk#152 add failing tests for value classes
Browse files Browse the repository at this point in the history
  • Loading branch information
aSemy committed Jul 20, 2022
1 parent ebb943a commit 4c936b1
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 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

Expand Down Expand Up @@ -43,6 +44,43 @@ class ValueClassTest {

verify { mock.processValue(DummyValue(1)) }
}

@Test
fun `any matcher for value class`() {
val mock = mockk<ValueServiceDummy>(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<ValueServiceDummy>(relaxed = true)
val slot = slot<ValueDummy>()
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<ValueServiceDummy>(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+
Expand All @@ -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
}

0 comments on commit 4c936b1

Please sign in to comment.