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

main.kotlin.ch.tutteli.atrium.logic.AnyAssertions.kt Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package ch.tutteli.atrium.logic

import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.creating.AssertionContainer
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.logic.creating.transformers.SubjectChangerBuilder
import kotlin.reflect.KClass

/**
 * Collection of assertion functions and builders which are applicable to any type (sometimes `Any?` sometimes `Any`).
 */
interface AnyAssertions {
    fun  toBe(container: AssertionContainer, expected: T): Assertion
    fun  notToBe(container: AssertionContainer, expected: T): Assertion
    fun  isSameAs(container: AssertionContainer, expected: T): Assertion
    fun  isNotSameAs(container: AssertionContainer, expected: T): Assertion

    fun  toBeNullIfNullGivenElse(
        container: AssertionContainer,
        assertionCreatorOrNull: (Expect.() -> Unit)?
    ): Assertion

    fun  notToBeNullButOfType(
        container: AssertionContainer,
        subType: KClass
    ): SubjectChangerBuilder.ExecutionStep

    //TODO restrict TSub with T once type parameter for upper bounds are supported:
    // https://youtrack.jetbrains.com/issue/KT-33262 is implemented
    fun  isA(
        container: AssertionContainer,
        subType: KClass
    ): SubjectChangerBuilder.ExecutionStep

    fun  isNotIn(container: AssertionContainer, expected: Iterable): Assertion

    fun  because(
        container: AssertionContainer,
        reason: String,
        assertionCreator: (Expect.() -> Unit)
    ): Assertion
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy