doc / ch.tutteli.atrium.api.fluent.en_GB / toContainExactly

toContainExactly

fun <E, T : Iterable<E>> Expect<T>.toContainExactly(expected: E, vararg otherExpected: E, report: InOrderOnlyReportingOptions.() -> Unit = {}): Expect<T> (source)

Expects that the subject of this expectation (an Iterable) contains only the expected value and the otherExpected values (if given) in the defined order.

It is a shortcut for toContain.inOrder.only.values(expected, *otherExpected)

Note that we might change the signature of this function with the next version which will cause a binary backward compatibility break (see #292 for more information)

expect(listOf(1, 2, 2, 4)).toContainExactly(1, 2, 2, 4)

fails {
    expect(listOf("A", "B")).toContainExactly("A", "B", "C")
}

fails {
    expect(listOf("A", "B")).toContainExactly("B", "A")
}

Return
an Expect for the subject of this expectation.

Since
0.17.0

fun <E : Any, T : Iterable<E?>> Expect<T>.toContainExactly(assertionCreatorOrNull: (Expect<E>.() -> Unit)?): Expect<T> (source)

Expects that the subject of this expectation (an Iterable) contains only an entry holding the assertions created by assertionCreatorOrNull or only one entry which is null in case assertionCreatorOrNull is defined as null.

It is a shortcut for toContain.inOrder.only.entry(assertionCreatorOrNull)

Note that we might change the signature of this function with the next version which will cause a binary backward compatibility break (see #292 for more information)

expect(listOf(4)).toContainExactly {
    toBeLessThan(5)
    toBeGreaterThan(3)
}

expect(listOf(null)).toContainExactly(null)

fails {
    expect(listOf("A", "B")).toContainExactly {
        toEqual("A")
    }
}

fails {
    expect(listOf(null, "B")).toContainExactly(null)
}

Parameters

assertionCreatorOrNull - The identification lambda which creates the assertions which the entry we are looking for has to hold; or in other words, the function which defines whether an entry is the one we are looking for or not. In case it is defined as null, then an entry is identified if it is null as well.

Return
an Expect for the subject of this expectation.

Since
0.17.0

fun <E : Any, T : Iterable<E?>> Expect<T>.toContainExactly(assertionCreatorOrNull: (Expect<E>.() -> Unit)?, vararg otherAssertionCreatorsOrNulls: (Expect<E>.() -> Unit)?, report: InOrderOnlyReportingOptions.() -> Unit = {}): Expect<T> (source)

Expects that the subject of this expectation (an Iterable) contains only an entry holding the assertions created by assertionCreatorOrNull or null in case assertionCreatorOrNull is defined as null and likewise an additional entry for each otherAssertionCreatorsOrNulls (if given) whereas the entries have to appear in the defined order.

It is a shortcut for toContain.inOrder.only.entries(assertionCreatorOrNull, *otherAssertionCreatorsOrNulls)

Note that we might change the signature of this function with the next version which will cause a binary backward compatibility break (see #292 for more information)

expect(listOf(3, 5, null)).toContainExactly(
    { toEqual(3) },
    { toBeLessThan(11) },
    null
)

fails {
    expect(listOf(3, 5, 7)).toContainExactly(
        { toBeGreaterThan(2) },
        { toBeLessThan(11) }
    )
}

fails {
    expect(listOf(3, 5)).toContainExactly(
        { toEqual(1) }, // fails
        { toBeLessThan(11) } // this assertion is not checked
    )
}

Parameters

assertionCreatorOrNull - The identification lambda which creates the assertions which the entry we are looking for has to hold; or in other words, the function which defines whether an entry is the one we are looking for or not. In case it is defined as null, then an entry is identified if it is null as well.

otherAssertionCreatorsOrNulls - Additional identification lambdas which each identify (separately) an entry which we are looking for (see assertionCreatorOrNull for more information).

Return
an Expect for the subject of this expectation.

Since
0.17.0