From 7e7ddd6f718a65fa3fc1ede78f8ac098bca58805 Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Mon, 25 Jul 2022 19:04:41 +0200 Subject: [PATCH] add tests for #832 --- .../kotlin/io/mockk/it/SealedClassTest.kt | 49 +++++++++++++++++++ .../kotlin/io/mockk/it/SealedInterfaceTest.kt | 49 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 mockk/common/src/test/kotlin/io/mockk/it/SealedClassTest.kt create mode 100644 mockk/common/src/test/kotlin/io/mockk/it/SealedInterfaceTest.kt diff --git a/mockk/common/src/test/kotlin/io/mockk/it/SealedClassTest.kt b/mockk/common/src/test/kotlin/io/mockk/it/SealedClassTest.kt new file mode 100644 index 000000000..efa39cab2 --- /dev/null +++ b/mockk/common/src/test/kotlin/io/mockk/it/SealedClassTest.kt @@ -0,0 +1,49 @@ +package io.mockk.it + +import io.mockk.every +import io.mockk.mockk +import kotlin.test.Test +import kotlin.test.assertEquals + + +class SealedClassTest { + + @Test + fun serviceReturnsSealedClassImpl() { + val factory = mockk { + every { create() } returns Leaf(1) + } + + val result = factory.create() + + assertEquals(Leaf(1), result) + } + + @Test + fun serviceAnswersSealedClassImpl() { + val factory = mockk { + every { create() } answers { Leaf(1) } + } + + val result = factory.create() + + assertEquals(Leaf(1), result) + } + + companion object { + + sealed class Node + + data class Root(val id: Int) : Node() + data class Leaf(val id: Int) : Node() + + interface Factory { + fun create(): Node + } + + class FactoryImpl : Factory { + override fun create(): Node = Root(0) + } + + } +} diff --git a/mockk/common/src/test/kotlin/io/mockk/it/SealedInterfaceTest.kt b/mockk/common/src/test/kotlin/io/mockk/it/SealedInterfaceTest.kt new file mode 100644 index 000000000..91f727abf --- /dev/null +++ b/mockk/common/src/test/kotlin/io/mockk/it/SealedInterfaceTest.kt @@ -0,0 +1,49 @@ +package io.mockk.it + +import io.mockk.every +import io.mockk.mockk +import kotlin.test.Test +import kotlin.test.assertEquals + + +class SealedInterfaceTest { + + @Test + fun serviceReturnsSealedClassImpl() { + val factory = mockk { + every { create() } returns Leaf(1) + } + + val result = factory.create() + + assertEquals(Leaf(1), result) + } + + @Test + fun serviceAnswersSealedClassImpl() { + val factory = mockk { + every { create() } answers { Leaf(1) } + } + + val result = factory.create() + + assertEquals(Leaf(1), result) + } + + companion object { + + sealed interface Node + + data class Root(val id: Int) : Node + data class Leaf(val id: Int) : Node + + interface Factory { + fun create(): Node + } + + class FactoryImpl : Factory { + override fun create(): Node = Root(0) + } + + } +}