jvmMain.tech.skot.core.test.SKFunMock.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of viewmodelTests Show documentation
Show all versions of viewmodelTests Show documentation
viewmodelTests description
package tech.skot.core.test
import kotlin.test.assertTrue
open class SKFunMock(val name: String) {
var calls: MutableList = mutableListOf()
var returns: List = emptyList()
fun willReturn(r: R) {
returns = listOf(r)
}
fun willReturnList(rs: List) {
returns = rs
}
var nextCallException: Exception? = null
fun willFail(ex: Exception) {
nextCallException = ex
}
operator fun invoke(c: C): R {
calls.add(c)
nextCallException?.let {
nextCallException = null
throw it
}
return getReturn()
}
fun assertCalled(rule:String = "") {
assertTrue("$rule -> $name : la méthode doit avoir été appelé") {
calls.isNotEmpty()
}
}
open fun getReturn(): R {
return when (returns.size) {
0 -> throw Exception("You have to set returns of $name before function be called")
1 -> returns.first()
else -> {
returns.first().also {
returns = returns.drop(1)
}
}
}
}
}
class SKFunUnitMock(name: String) : SKFunMock(name) {
override fun getReturn() {
return Unit
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy