All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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