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 // subject now of type Int (actually 1)
.isLessThan(2) // subject is still of type Int (still 1)
.isGreaterThan(0)
fails {
expect(pair)
.second
.isGreaterThan(2) // fails
.isLessThan(0) // not reported because `isGreaterThan(2)` already fails
// use `second { ... }` if you want that all assertions are evaluated
}.message {
contains("is greater than: 2")
containsNot("is less than: 0")
}
Return
The newly created Expect for the extracted feature.
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)
isLessThan(2)
} // subject here is back to type Pair<Int, String>
.second {
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 {
isGreaterThan(2) // fails
isLessThan(0) // still evaluated even though `isGreaterThan(2)` already fails,
// use `.second.` if you want a fail fast behaviour
}
}.messageContains(
"is greater than: 2",
"is less than: 0"
)
Return
an Expect for the subject of this
expectation.