io.mockk.proxy.common.CancelableResult.kt Maven / Gradle / Ivy
package io.mockk.proxy.common
import io.mockk.proxy.Cancelable
import io.mockk.proxy.MockKAgentException
import java.util.concurrent.atomic.AtomicBoolean
open class CancelableResult(
private val value: T? = null,
private val cancelBlock: () -> Unit = {}
) : Cancelable {
val fired = AtomicBoolean()
override fun get() = value
?: throw MockKAgentException("Value for this result is not assigned")
override fun cancel() {
if (!fired.getAndSet(true)) {
cancelBlock()
}
}
fun withValue(value: R) = CancelableResult(value, cancelBlock)
fun alsoOnCancel(block: () -> Unit) =
CancelableResult(value) {
cancel()
block()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy