diff --git a/libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt b/libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt index ea02c2d8619..5d2d49aabcb 100644 --- a/libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt +++ b/libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt @@ -279,7 +279,12 @@ fun > assertContains(range: ClosedRange, value: T, message: assertRangeContains(range, value, message, ClosedRange::contains) } -// TODO: assertContains for OpenEndRange +/** Asserts that the [range] contains the specified [value], with an optional [message]. */ +@SinceKotlin("1.7") +@ExperimentalStdlibApi +fun > assertContains(range: OpenEndRange, value: T, message: String? = null) { + assertRangeContains(range, value, message, OpenEndRange::contains) +} /** Asserts that the [range] contains the specified [value], with an optional [message]. */ @SinceKotlin("1.5") diff --git a/libraries/kotlin.test/common/src/test/kotlin/kotlin/test/tests/AssertContainsTest.kt b/libraries/kotlin.test/common/src/test/kotlin/kotlin/test/tests/AssertContainsTest.kt index bf5e40ee08d..96f72c70324 100644 --- a/libraries/kotlin.test/common/src/test/kotlin/kotlin/test/tests/AssertContainsTest.kt +++ b/libraries/kotlin.test/common/src/test/kotlin/kotlin/test/tests/AssertContainsTest.kt @@ -109,6 +109,18 @@ class AssertContainsTest { } } + @Test + @OptIn(ExperimentalStdlibApi::class) + fun assertContainsOpenRange() { + val range = 0.0.rangeUntil(1.0) // TODO: replace with ..< by 1.8 + assertContains(range, 0.99) + + val one = 1.0 + testFailureMessage("Expected the range <$range> to contain the value <$one>.") { + assertContains(range, one) + } + } + @Test fun testAssertContainsMap() { val map = mapOf(