and

infix fun <T> Expect<T>.and(assertionCreator: Expect<T>.() -> Unit): Expect<T>(source)

Can be used to create a group of sub assertions when using the fluent API.

For instance expect(1).toBeLessThan(3).and { toBeEven(); toBeGreaterThan(1) } creates two assertions where the second one consists of two sub-assertions. In case the first assertion holds, then the second one is evaluated as a whole. Meaning, even though 1 is not even, it still evaluates that 1 is greater than 1. Hence, the reporting might (depending on the configured Reporter) contain both failing sub-assertions.

Return

an Expect for the subject of this expectation.

Samples

expect(13).toBeAnInstanceOf<Int>().and {
    toBeGreaterThan(5)
    toBeLessThan(20)
}

fails {
    expect(13).toBeAnInstanceOf<Int>().and {
        // introduces an expectation-group block where all expectations inside
        // are evaluated together; for more details see:
        // https://github.com/robstoll/atrium#define-single-expectations-or-expectation-groups
        // use `.and.` if you want fail fast behaviour

        notToEqualOneOf(1, 2, 13) // fails
        toBeLessThan(10)          // still evaluated and included in the error report
    }
}

val <T> Expect<T>.and: Expect<T>(source)

Can be used to separate single assertions.

For instance expect(1).toBeLessThan(2).and.toBeGreaterThan(0) creates two assertions (not one assertion with two sub-assertions) - the first asserts that 1 is less than 2 and the second asserts that 1 is greater than 0. If the first assertion fails, then the second assertion is not evaluated.

Return

an Expect for the subject of this expectation.

Samples

// `and` is just a filler word; does not have any behaviour
expect(13).toBeGreaterThan(5).and.toBeLessThan(20)

// i.e. the above is equivalent to:
expect(13).toBeGreaterThan(5).toBeLessThan(20)