From 437d29e034c039844bde3d9988b346dadc3a13fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alaksiej=20=C5=A0=C4=8Darbaty?= Date: Fri, 25 Aug 2023 16:31:36 +0200 Subject: [PATCH] assertInstanceOf methods accept nullable values Issue: #1866 --- .../src/main/kotlin/org/junit/jupiter/api/Assertions.kt | 6 +++--- .../org/junit/jupiter/api/KotlinAssertionsTests.kt | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/junit-jupiter-api/src/main/kotlin/org/junit/jupiter/api/Assertions.kt b/junit-jupiter-api/src/main/kotlin/org/junit/jupiter/api/Assertions.kt index 0db69152047..89857de0e9a 100644 --- a/junit-jupiter-api/src/main/kotlin/org/junit/jupiter/api/Assertions.kt +++ b/junit-jupiter-api/src/main/kotlin/org/junit/jupiter/api/Assertions.kt @@ -244,7 +244,7 @@ fun assertNotNull(actual: Any?, messageSupplier: () -> String) { * @see Assertions.assertInstanceOf */ @API(since = "5.11", status = EXPERIMENTAL) -inline fun assertInstanceOf(actual: Any) { +inline fun assertInstanceOf(actual: Any?) { contract { returns() implies (actual is T) } @@ -265,7 +265,7 @@ inline fun assertInstanceOf(actual: Any) { * @see Assertions.assertInstanceOf */ @API(since = "5.11", status = EXPERIMENTAL) -inline fun assertInstanceOf(actual: Any, message: String) { +inline fun assertInstanceOf(actual: Any?, message: String) { contract { returns() implies (actual is T) } @@ -286,7 +286,7 @@ inline fun assertInstanceOf(actual: Any, message: String) { * @see Assertions.assertInstanceOf */ @API(since = "5.11", status = EXPERIMENTAL) -inline fun assertInstanceOf(actual: Any, noinline messageSupplier: () -> String) { +inline fun assertInstanceOf(actual: Any?, noinline messageSupplier: () -> String) { contract { returns() implies (actual is T) diff --git a/junit-jupiter-engine/src/test/kotlin/org/junit/jupiter/api/KotlinAssertionsTests.kt b/junit-jupiter-engine/src/test/kotlin/org/junit/jupiter/api/KotlinAssertionsTests.kt index b2dc4988301..b40859d2751 100644 --- a/junit-jupiter-engine/src/test/kotlin/org/junit/jupiter/api/KotlinAssertionsTests.kt +++ b/junit-jupiter-engine/src/test/kotlin/org/junit/jupiter/api/KotlinAssertionsTests.kt @@ -236,6 +236,15 @@ class KotlinAssertionsTests { assertFalse(string.isEmpty()) // smart cast to a String object } + @Test + fun `assertInstanceOf with a null value`() { + val error = assertThrows { + assertInstanceOf(null) + } + + assertMessageStartsWith(error, "Unexpected null value") + } + @Test fun `assertDoesNotThrow with value initialization in lambda`() { val value: Int