Skip to content

Commit fdb0d01

Browse files
committed
Add assertSame and assertNotSame methods.
1 parent 20cd748 commit fdb0d01

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed

libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ fun <@OnlyInputTypes T> assertNotEquals(illegal: T, actual: T, message: String?
6161
asserter.assertNotEquals(message, illegal, actual)
6262
}
6363

64+
/** Asserts that [expected] is the same instance as [actual], with an optional [message]. */
65+
fun <@OnlyInputTypes T> assertSame(expected: T, actual: T, message: String? = null) {
66+
asserter.assertSame(message, expected, actual)
67+
}
68+
69+
/** Asserts that [actual] is not the same instance as [illegal], with an optional [message]. */
70+
fun <@OnlyInputTypes T> assertNotSame(illegal: T, actual: T, message: String? = null) {
71+
asserter.assertNotSame(message, illegal, actual)
72+
}
73+
6474
/** Asserts that the [actual] value is not `null`, with an optional [message]. */
6575
fun <T : Any> assertNotNull(actual: T?, message: String? = null): T {
6676
asserter.assertNotNull(message, actual)
@@ -170,6 +180,24 @@ interface Asserter {
170180
assertTrue({ messagePrefix(message) + "Illegal value: <$actual>." }, actual != illegal)
171181
}
172182

183+
/**
184+
* Asserts that the specified values are the same instance.
185+
*
186+
* @param message the message to report if the assertion fails.
187+
*/
188+
fun assertSame(message: String?, expected: Any?, actual: Any?): Unit {
189+
assertTrue({ messagePrefix(message) + "Expected <$expected>, actual <$actual>." }, actual === expected)
190+
}
191+
192+
/**
193+
* Asserts that the specified values are not the same instance.
194+
*
195+
* @param message the message to report if the assertion fails.
196+
*/
197+
fun assertNotSame(message: String?, illegal: Any?, actual: Any?): Unit {
198+
assertTrue({ messagePrefix(message) + "Illegal value: <$actual>." }, actual !== illegal)
199+
}
200+
173201
/**
174202
* Asserts that the specified value is `null`.
175203
*

libraries/kotlin.test/common/src/test/kotlin/kotlin/test/tests/BasicAssertionsTest.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ class BasicAssertionsTest {
99
assertEquals(1, 1)
1010
}
1111

12+
@Test
13+
fun testAssertEquals() {
14+
val instance = listOf("hey")
15+
assertSame(instance, instance)
16+
}
17+
1218
@Test
1319
fun testAssertEqualsString() {
1420
assertEquals("a", "a")
@@ -67,6 +73,13 @@ class BasicAssertionsTest {
6773
checkFailedAssertion { assertEquals(1, 2) }
6874
}
6975

76+
@Test
77+
fun testAssertSameFails() {
78+
val instance1 = listOf("hey")
79+
val instance2 = listOf("hey")
80+
checkFailedAssertion { assertEquals(instance1, instance2) }
81+
}
82+
7083
@Test
7184
fun testAssertTrue() {
7285
assertTrue(true)
@@ -107,11 +120,24 @@ class BasicAssertionsTest {
107120
assertNotEquals(1, 2)
108121
}
109122

123+
@Test
124+
fun testAssertNotSame() {
125+
val instance1 = listOf("hey")
126+
val instance2 = listOf("hey")
127+
assertNotEquals(instance1, instance2)
128+
}
129+
110130
@Test()
111131
fun testAssertNotEqualsFails() {
112132
checkFailedAssertion { assertNotEquals(1, 1) }
113133
}
114134

135+
@Test()
136+
fun testAssertNotSameFails() {
137+
val instance = listOf("hey")
138+
checkFailedAssertion { assertNotEquals(instance, instance) }
139+
}
140+
115141
@Test
116142
fun testAssertNotNull() {
117143
assertNotNull(true)

libraries/kotlin.test/js/src/main/kotlin/kotlin/test/DefaultJsAsserter.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ internal object DefaultJsAsserter : Asserter {
4444
super.assertNotEquals(message, illegal, actual)
4545
}
4646

47+
override fun assertSame(message: String?, expected: Any?, actual: Any?) {
48+
e = expected
49+
a = actual
50+
super.assertSame(message, expected, actual)
51+
}
52+
53+
override fun assertNotSame(message: String?, illegal: Any?, actual: Any?) {
54+
e = illegal
55+
a = actual
56+
super.assertNotSame(message, illegal, actual)
57+
}
58+
4759
override fun assertNull(message: String?, actual: Any?) {
4860
a = actual
4961
super.assertNull(message, actual)

libraries/kotlin.test/junit/src/main/kotlin/JUnitSupport.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ object JUnitAsserter : Asserter {
2727
Assert.assertNotEquals(message, illegal, actual)
2828
}
2929

30+
override fun assertSame(message : String?, expected : Any?, actual : Any?) {
31+
Assert.assertSame(message, expected, actual)
32+
}
33+
34+
override fun assertNotSame(message : String?, illegal : Any?, actual : Any?) {
35+
Assert.assertNotSame(message, illegal, actual)
36+
}
37+
3038
override fun assertNotNull(message : String?, actual : Any?) {
3139
Assert.assertNotNull(message ?: "actual value is null", actual)
3240
}

0 commit comments

Comments
 (0)