doc / ch.tutteli.atrium.api.infix.en_GB / second

second

val <V, T : Pair<*, V>> Expect<T>.second: Expect<V> (source)

Creates an Expect for the property Pair.second of the subject of this expectation, so that further fluent calls are assertions about it.

val pair = "one" to 1

expect(pair)
    .second isLessThan 2 isGreaterThan 0
    //|         |             | subject is still of type Int (still 1)
    //|         | subject is still of type Int (still 1)
    //| subject is now of type Int (actually 1)

fails {
    expect(pair)
        .second isGreaterThan 2 isLessThan 0
        //|         |             | not reported because `isGreaterThan 2` already fails
        //|         | fails
        //| subject is now of type Int (actually 1)
        // use `.second { ... }` if you want that all assertions are evaluated
} message {
    toContain("${isGreaterThanDescr}: 2")
    notToContain("${isLessThanDescr}: 0")
}

Return
The newly created Expect for the extracted feature.

infix fun <K, V, T : Pair<K, V>> Expect<T>.second(assertionCreator: Expect<V>.() -> Unit): Expect<T> (source)

Expects that the property Pair.second of the subject of this expectation holds all assertions the given assertionCreator creates for it and returns an Expect for the current subject of this expectation.

val pair = "one" to 1

expect(pair)
    .second { // subject inside this block is of type Int (actually 1)
        it isLessThan 2
    } // subject here is back to type Pair<Int, String>
    .second { // subject inside this block is of type Int (actually 1)
        it isGreaterThan 0
    }

fails {
    // all assertions are evaluated inside an assertion group block; for more details:
    // https://github.com/robstoll/atrium#define-single-assertions-or-assertion-groups
    expect(pair)
        .second { // subject inside this block is of type Int (actually 1)
            it isGreaterThan 2 // fails
            it isLessThan 0    // still evaluated even though `isGreaterThan 2` already fails,
                               // use `.second.` if you want a fail fast behaviour
        }
} messageContains values(
    "${isGreaterThanDescr}: 2",
    "${isLessThanDescr}: 0"
)

Return
an Expect for the subject of this expectation.