Skip to content

Commit 9444874

Browse files
Add assertContainsExactly assertion
1 parent 7a03b25 commit 9444874

File tree

7 files changed

+61
-60
lines changed

7 files changed

+61
-60
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- `assertContainsExactly` assertion
1212

1313
### Changed
14+
- `Number` assertions to `Comparable` assertions
1415

1516
### Deprecated
1617

kotlin-test/api/android/kotlin-test.api

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ public final class com/javiersc/kotlin/test/CharSequenceMatchersKt {
1212
public static synthetic fun assertStartWith$default (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/CharSequence;
1313
}
1414

15+
public final class com/javiersc/kotlin/test/ComparableMatchersKt {
16+
public static final fun assertGreaterThan (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;)Ljava/lang/Comparable;
17+
public static synthetic fun assertGreaterThan$default (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Comparable;
18+
public static final fun assertLessThan (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;)Ljava/lang/Comparable;
19+
public static synthetic fun assertLessThan$default (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Comparable;
20+
}
21+
1522
public final class com/javiersc/kotlin/test/FailKt {
1623
public static final fun fail (Ljava/lang/String;)Ljava/lang/Void;
1724
}
@@ -23,13 +30,6 @@ public final class com/javiersc/kotlin/test/GenericMatchersKt {
2330
public static synthetic fun assertNotEquals$default (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
2431
}
2532

26-
public final class com/javiersc/kotlin/test/NumberMatchersKt {
27-
public static final fun assertGreaterThan-NqJ4yvY (JJLjava/lang/String;)J
28-
public static synthetic fun assertGreaterThan-NqJ4yvY$default (JJLjava/lang/String;ILjava/lang/Object;)J
29-
public static final fun assertLessThan-NqJ4yvY (JJLjava/lang/String;)J
30-
public static synthetic fun assertLessThan-NqJ4yvY$default (JJLjava/lang/String;ILjava/lang/Object;)J
31-
}
32-
3333
public final class com/javiersc/kotlin/test/StringMatchersKt {
3434
public static final fun assertNotBlank (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
3535
public static synthetic fun assertNotBlank$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;

kotlin-test/api/jvm/kotlin-test.api

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ public final class com/javiersc/kotlin/test/CharSequenceMatchersKt {
1212
public static synthetic fun assertStartWith$default (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/CharSequence;
1313
}
1414

15+
public final class com/javiersc/kotlin/test/ComparableMatchersKt {
16+
public static final fun assertGreaterThan (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;)Ljava/lang/Comparable;
17+
public static synthetic fun assertGreaterThan$default (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Comparable;
18+
public static final fun assertLessThan (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;)Ljava/lang/Comparable;
19+
public static synthetic fun assertLessThan$default (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Comparable;
20+
}
21+
1522
public final class com/javiersc/kotlin/test/FailKt {
1623
public static final fun fail (Ljava/lang/String;)Ljava/lang/Void;
1724
}
@@ -30,13 +37,6 @@ public final class com/javiersc/kotlin/test/GenericMatchersKt {
3037
public static synthetic fun assertNotEquals$default (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
3138
}
3239

33-
public final class com/javiersc/kotlin/test/NumberMatchersKt {
34-
public static final fun assertGreaterThan-NqJ4yvY (JJLjava/lang/String;)J
35-
public static synthetic fun assertGreaterThan-NqJ4yvY$default (JJLjava/lang/String;ILjava/lang/Object;)J
36-
public static final fun assertLessThan-NqJ4yvY (JJLjava/lang/String;)J
37-
public static synthetic fun assertLessThan-NqJ4yvY$default (JJLjava/lang/String;ILjava/lang/Object;)J
38-
}
39-
4040
public final class com/javiersc/kotlin/test/StringMatchersKt {
4141
public static final fun assertNotBlank (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
4242
public static synthetic fun assertNotBlank$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.javiersc.kotlin.test
2+
3+
public fun <T : Comparable<T>> T.assertGreaterThan(number: T, message: String? = null): T {
4+
val message: String = message ?: "$this is not greater than $number"
5+
if (this <= number) fail(message)
6+
return this
7+
}
8+
9+
public fun <T : Comparable<T>> T.assertLessThan(number: T, message: String? = null): T {
10+
val message: String = message ?: "$this is not less than $number"
11+
if (this >= number) fail(message)
12+
return this
13+
}

kotlin-test/common/main/kotlin/com/javiersc/kotlin/test/numberMatchers.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.

kotlin-test/common/test/kotlin/com/javiersc/kotlin/test/NumberMatchersTest.kt renamed to kotlin-test/common/test/kotlin/com/javiersc/kotlin/test/ComparableMatchersTest.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import kotlin.test.assertTrue
88
import kotlin.time.Duration
99
import kotlin.time.Duration.Companion.seconds
1010

11-
class NumberMatchersTest {
11+
class ComparableMatchersTest {
1212

1313
private val oneDouble =
1414
when (CurrentPlatform) {
@@ -34,6 +34,12 @@ class NumberMatchersTest {
3434
assertTrue(exception.message == "1 is not greater than 2")
3535
}
3636

37+
@Test
38+
fun `assertGreaterThan fails when Byte is the same`() {
39+
val exception: AssertionError = assertFailsWith { 1.toByte().assertGreaterThan(1.toByte()) }
40+
assertTrue(exception.message == "1 is not greater than 1")
41+
}
42+
3743
@Test
3844
fun `assertGreaterThan fails when Byte is less with custom message`() {
3945
val exception: AssertionError = assertFailsWith {
@@ -189,6 +195,12 @@ class NumberMatchersTest {
189195
assertTrue(exception.message == "2 is not less than 1")
190196
}
191197

198+
@Test
199+
fun `assertLessThan fails when Byte is the same`() {
200+
val exception: AssertionError = assertFailsWith { 1.toByte().assertLessThan(1.toByte()) }
201+
assertTrue(exception.message == "1 is not less than 1")
202+
}
203+
192204
@Test
193205
fun `assertLessThan passes when Short is less`() {
194206
val result: Short = 1.toShort().assertLessThan(2.toShort())

kotlin-test/common/test/kotlin/com/javiersc/kotlin/test/IterableMatchersTest.kt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package com.javiersc.kotlin.test
22

3+
import com.javiersc.kotlin.stdlib.CurrentPlatform
4+
import com.javiersc.kotlin.stdlib.isJS
5+
import com.javiersc.kotlin.stdlib.isNative
6+
import com.javiersc.kotlin.stdlib.isWAsm
37
import kotlin.test.Test
48
import kotlin.test.assertFailsWith
59
import kotlin.test.assertTrue
610

711
class IterableMatchersTest {
812

13+
private val shouldChangeMessage: Boolean
14+
get() = CurrentPlatform.isJS || CurrentPlatform.isNative || CurrentPlatform.isWAsm
15+
916
@Test
1017
fun `assertContains should fail with custom message`() {
1118
val list: List<Int> = listOf(1, 2, 3)
@@ -50,28 +57,37 @@ class IterableMatchersTest {
5057
@Test
5158
fun `assertContainsExactly should fail with custom message`() {
5259
val list: List<Int> = listOf(1, 2, 3)
53-
val elements = listOf(1, 2, 3, 4)
60+
val elements: List<Int> = listOf(1, 2, 3, 4)
5461
val message = "Custom error"
5562
val exception: AssertionError = assertFailsWith {
5663
list.assertContainsExactly(elements, message)
5764
}
58-
assertTrue(exception.message == "Custom error expected:<[1, 2, 3]> but was:<[1, 2, 3, 4]>")
65+
val expectedMessage: String =
66+
if (shouldChangeMessage) "Custom error. Expected <[1, 2, 3]>, actual <[1, 2, 3, 4]>."
67+
else "Custom error expected:<[1, 2, 3]> but was:<[1, 2, 3, 4]>"
68+
assertTrue(exception.message == expectedMessage)
5969
}
6070

6171
@Test
6272
fun `assertContainsExactly should fail`() {
6373
val list: List<Int> = listOf(1, 2, 3)
6474
val elements: List<Int> = listOf(1, 2, 3, 4)
6575
val exception: AssertionError = assertFailsWith { list.assertContainsExactly(elements) }
66-
assertTrue(exception.message == "expected:<[1, 2, 3]> but was:<[1, 2, 3, 4]>")
76+
val expectedMessage: String =
77+
if (shouldChangeMessage) "Expected <[1, 2, 3]>, actual <[1, 2, 3, 4]>."
78+
else "expected:<[1, 2, 3]> but was:<[1, 2, 3, 4]>"
79+
assertTrue(exception.message!! == expectedMessage)
6780
}
6881

6982
@Test
7083
fun `assertContainsExactly should fail with more items`() {
7184
val list: List<Int> = listOf(1, 2, 3, 4, 5)
7285
val elements: List<Int> = listOf(1, 2, 3, 4)
7386
val exception: AssertionError = assertFailsWith { list.assertContainsExactly(elements) }
74-
assertTrue(exception.message == "expected:<[1, 2, 3, 4, 5]> but was:<[1, 2, 3, 4]>")
87+
val expectedMessage: String =
88+
if (shouldChangeMessage) "Expected <[1, 2, 3, 4, 5]>, actual <[1, 2, 3, 4]>."
89+
else "expected:<[1, 2, 3, 4, 5]> but was:<[1, 2, 3, 4]>"
90+
assertTrue(exception.message!! == expectedMessage)
7591
}
7692

7793
@Test

0 commit comments

Comments
 (0)