main.kotlin.ch.tutteli.atrium.logic.AnyAssertions.kt Maven / Gradle / Ivy
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
}