Skip to content

Commit e46e771

Browse files
committed
Rename containsAll to containsAtLeast
This makes it more clear that the collection can contain additional elements see: https://truth.dev/comparison
1 parent 006fed6 commit e46e771

File tree

15 files changed

+155
-90
lines changed

15 files changed

+155
-90
lines changed

assertk-coroutines/src/commonMain/kotlin/assertk/coroutines/assertions/flow.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ suspend fun Assert<Flow<*>>.contains(element: Any?) = given { actual ->
7272

7373
/**
7474
* Asserts the flow does not contain any of the expected elements. Fails as soon as that element is received.
75-
* @see [containsAll]
75+
* @see [containsAtLeast]
7676
*/
7777
suspend fun Assert<Flow<*>>.doesNotContain(element: Any?) = given { actual ->
7878
val receivedElements = mutableListOf<Any?>()
@@ -92,7 +92,7 @@ suspend fun Assert<Flow<*>>.doesNotContain(element: Any?) = given { actual ->
9292
/**
9393
* Asserts the collection does not contain any of the expected elements. Fails as soon as one of the expected elements
9494
* is received.
95-
* @see [containsAll]
95+
* @see [containsAtLeast]
9696
*/
9797
suspend fun Assert<Flow<*>>.containsNone(vararg elements: Any?) = given { actual ->
9898
val receivedElements = mutableListOf<Any?>()
@@ -114,13 +114,23 @@ suspend fun Assert<Flow<*>>.containsNone(vararg elements: Any?) = given { actual
114114
}
115115

116116
/**
117-
* Asserts the flow emits all the expected elements, in any order. The flow may also
117+
* Asserts the flow emits at least the expected elements, in any order. The flow may also
118118
* emit additional elements. Succeeds as soon as all expected elements are received.
119119
* @see [containsNone]
120120
* @see [containsExactly]
121121
* @see [containsOnly]
122122
*/
123-
suspend fun Assert<Flow<*>>.containsAll(vararg elements: Any?) = given { actual ->
123+
@Deprecated("renamed to containsAtLeast", ReplaceWith("containsAtLeast(*elements)"))
124+
suspend fun Assert<Flow<*>>.containsAll(vararg elements: Any?) = containsAtLeast(*elements)
125+
126+
/**
127+
* Asserts the flow emits at least the expected elements, in any order. The flow may also
128+
* emit additional elements. Succeeds as soon as all expected elements are received.
129+
* @see [containsNone]
130+
* @see [containsExactly]
131+
* @see [containsOnly]
132+
*/
133+
suspend fun Assert<Flow<*>>.containsAtLeast(vararg elements: Any?) = given { actual ->
124134
val remainingElements = MutableList(elements.size) { index -> elements[index] }
125135
val receivedElements = mutableListOf<Any?>()
126136
try {
@@ -148,7 +158,7 @@ suspend fun Assert<Flow<*>>.containsAll(vararg elements: Any?) = given { actual
148158
* Asserts the flow contains only the expected elements, in any order.
149159
* @see [containsNone]
150160
* @see [containsExactly]
151-
* @see [containsAll]
161+
* @see [containsAtLeast]
152162
*/
153163
suspend fun Assert<Flow<*>>.containsOnly(vararg elements: Any?) = given { actual ->
154164
val actualList = actual.toList()
@@ -170,7 +180,7 @@ suspend fun Assert<Flow<*>>.containsOnly(vararg elements: Any?) = given { actual
170180
/**
171181
* Asserts the flow contains exactly the expected elements. They must be in the same order and
172182
* there must not be any extra elements.
173-
* @see [containsAll]
183+
* @see [containsAtLeast]
174184
*/
175185
suspend fun Assert<Flow<*>>.containsExactly(vararg elements: Any?) = given { actual ->
176186
val expected = elements.toList()

assertk-coroutines/src/commonTest/kotlin/test/assertk/coroutines/assertions/FlowTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,18 +124,18 @@ class FlowTest {
124124
}
125125
//region
126126

127-
//region containsAll
128-
@Test fun containsAll_all_elements_passes() = runTest {
129-
assertThat(flowOf(1, 2)).containsAll(2, 1)
127+
//region containsAtLeast
128+
@Test fun containsAtLeast_all_elements_passes() = runTest {
129+
assertThat(flowOf(1, 2)).containsAtLeast(2, 1)
130130
}
131131

132-
@Test fun containsAll_all_elements_in_flow_that_doesnt_complete_passes() = runTest {
133-
assertThat(nonCompletingFlowOf(1, 2)).containsAll(2, 1)
132+
@Test fun containsAtLeast_all_elements_in_flow_that_doesnt_complete_passes() = runTest {
133+
assertThat(nonCompletingFlowOf(1, 2)).containsAtLeast(2, 1)
134134
}
135135

136-
@Test fun containsAll_some_elements_fails() = runTest {
136+
@Test fun containsAtLeast_some_elements_fails() = runTest {
137137
val error = assertFailsWith<AssertionError> {
138-
assertThat(flowOf(1)).containsAll(1, 2)
138+
assertThat(flowOf(1)).containsAtLeast(1, 2)
139139
}
140140
assertEquals(
141141
"""expected to contain all:<[1, 2]> but received:<[1]>

assertk/src/commonMain/kotlin/assertk/assertions/array.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ fun Assert<Array<*>>.doesNotContain(element: Any?) = given { actual ->
9999

100100
/**
101101
* Asserts the collection does not contain any of the expected elements.
102-
* @see [containsAll]
102+
* @see [containsAtLeast]
103103
*/
104104
fun Assert<Array<*>>.containsNone(vararg elements: Any?) = given { actual ->
105105
if (elements.none { it in actual }) {
@@ -111,11 +111,19 @@ fun Assert<Array<*>>.containsNone(vararg elements: Any?) = given { actual ->
111111
}
112112

113113
/**
114-
* Asserts the array contains all the expected elements, in any order. The array may also contain
114+
* Asserts the array contains at least the expected elements, in any order. The array may also contain
115115
* additional elements.
116116
* @see [containsExactly]
117117
*/
118-
fun Assert<Array<*>>.containsAll(vararg elements: Any?) = given { actual ->
118+
@Deprecated("renamed to containsAtLeast", ReplaceWith("containsAtLeast(*elements)"))
119+
fun Assert<Array<*>>.containsAll(vararg elements: Any?) = containsAtLeast(*elements)
120+
121+
/**
122+
* Asserts the array contains at least the expected elements, in any order. The array may also contain
123+
* additional elements.
124+
* @see [containsExactly]
125+
*/
126+
fun Assert<Array<*>>.containsAtLeast(vararg elements: Any?) = given { actual ->
119127
if (elements.all { actual.contains(it) }) return
120128
val notFound = elements.filterNot { it in actual }
121129
expected("to contain all:${show(elements)} but was:${show(actual)}\n elements not found:${show(notFound)}")
@@ -125,7 +133,7 @@ fun Assert<Array<*>>.containsAll(vararg elements: Any?) = given { actual ->
125133
* Asserts the array contains only the expected elements, in any order.
126134
* @see [containsNone]
127135
* @see [containsExactly]
128-
* @see [containsAll]
136+
* @see [containsAtLeast]
129137
*/
130138
fun Assert<Array<*>>.containsOnly(vararg elements: Any?) = given { actual ->
131139
val notInActual = elements.filterNot { it in actual }
@@ -162,7 +170,7 @@ fun <T> Assert<Array<T>>.index(index: Int): Assert<T> =
162170
/**
163171
* Asserts the array contains exactly the expected elements. They must be in the same order and
164172
* there must not be any extra elements.
165-
* @see [containsAll]
173+
* @see [containsAtLeast]
166174
*/
167175
fun Assert<Array<*>>.containsExactly(vararg elements: Any?) = given { actual ->
168176
if (actual.contentEquals(elements)) return

assertk/src/commonMain/kotlin/assertk/assertions/iterable.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ fun Assert<Iterable<*>>.doesNotContain(element: Any?) = given { actual ->
2727

2828
/**
2929
* Asserts the iterable does not contain any of the expected elements.
30-
* @see [containsAll]
30+
* @see [containsAtLeast]
3131
*/
3232
fun Assert<Iterable<*>>.containsNone(vararg elements: Any?) = given { actual ->
3333
val notExpected = elements.filter { it in actual }
@@ -38,13 +38,23 @@ fun Assert<Iterable<*>>.containsNone(vararg elements: Any?) = given { actual ->
3838
}
3939

4040
/**
41-
* Asserts the iterable contains all the expected elements, in any order. The collection may also
41+
* Asserts the iterable contains at least the expected elements, in any order. The collection may also
4242
* contain additional elements.
4343
* @see [containsNone]
4444
* @see [containsExactly]
4545
* @see [containsOnly]
4646
*/
47-
fun Assert<Iterable<*>>.containsAll(vararg elements: Any?) = given { actual ->
47+
@Deprecated("renamed to containsAtLeast", ReplaceWith("containsAtLeast(*elements)"))
48+
fun Assert<Iterable<*>>.containsAll(vararg elements: Any?) = containsAtLeast(*elements)
49+
50+
/**
51+
* Asserts the iterable contains at least the expected elements, in any order. The collection may also
52+
* contain additional elements.
53+
* @see [containsNone]
54+
* @see [containsExactly]
55+
* @see [containsOnly]
56+
*/
57+
fun Assert<Iterable<*>>.containsAtLeast(vararg elements: Any?) = given { actual ->
4858
val notFound = elements.filterNot { it in actual }
4959
if (notFound.isEmpty()) {
5060
return
@@ -62,7 +72,7 @@ fun Assert<Iterable<*>>.containsAll(vararg elements: Any?) = given { actual ->
6272
*
6373
* @see [containsNone]
6474
* @see [containsExactly]
65-
* @see [containsAll]
75+
* @see [containsAtLeast]
6676
* @see [containsExactlyInAnyOrder]
6777
*/
6878
fun Assert<Iterable<*>>.containsOnly(vararg elements: Any?) = given { actual ->
@@ -91,7 +101,7 @@ fun Assert<Iterable<*>>.containsOnly(vararg elements: Any?) = given { actual ->
91101
*
92102
* @see [containsNone]
93103
* @see [containsExactly]
94-
* @see [containsAll]
104+
* @see [containsAtLeast]
95105
* @see [containsOnly]
96106
*/
97107
fun Assert<Iterable<*>>.containsExactlyInAnyOrder(vararg elements: Any?) = given { actual ->

assertk/src/commonMain/kotlin/assertk/assertions/list.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fun <T> Assert<List<T>>.index(index: Int): Assert<T> =
3030
* [1, 2, 2] containsExactly [2, 1] fails
3131
* [1, 2] containsExactly [1, 2, 2] fails
3232
*
33-
* @see [containsAll]
33+
* @see [containsAtLeast]
3434
* @see [containsOnly]
3535
* @see [containsExactlyInAnyOrder]
3636
*/

assertk/src/commonMain/kotlin/assertk/assertions/map.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,19 @@ fun <K, V> Assert<Map<K, V>>.contains(element: Pair<K, V>) {
7575
}
7676

7777
/**
78-
* Asserts the map contains all the expected elements. The map may also contain additional elements.
78+
* Asserts the map contains at least the expected elements. The map may also contain additional elements.
7979
* @see [containsNone]
8080
* @see [containsExactly]
8181
*/
82-
fun <K, V> Assert<Map<K, V>>.containsAll(vararg elements: Pair<K, V>) = given { actual ->
82+
@Deprecated("renamed to containsAtLeast", ReplaceWith("containsAtLeast(*elements)"))
83+
fun <K, V> Assert<Map<K, V>>.containsAll(vararg elements: Pair<K, V>) = containsAtLeast(*elements)
84+
85+
/**
86+
* Asserts the map contains at least the expected elements. The map may also contain additional elements.
87+
* @see [containsNone]
88+
* @see [containsExactly]
89+
*/
90+
fun <K, V> Assert<Map<K, V>>.containsAtLeast(vararg elements: Pair<K, V>) = given { actual ->
8391
if (elements.all { (k, v) -> actual.containsKey(k) && actual[k] == v }) {
8492
return
8593
}
@@ -109,7 +117,7 @@ fun <K, V> Assert<Map<K, V>>.doesNotContain(element: Pair<K, V>) {
109117

110118
/**
111119
* Asserts the map does not contain any of the expected elements.
112-
* @see [containsAll]
120+
* @see [containsAtLeast]
113121
*/
114122
fun <K, V> Assert<Map<K, V>>.containsNone(vararg elements: Pair<K, V>) = given { actual ->
115123
if (elements.all { (k, v) -> !actual.containsKey(k) || actual[k] != v }) return
@@ -123,7 +131,7 @@ fun <K, V> Assert<Map<K, V>>.containsNone(vararg elements: Pair<K, V>) = given {
123131

124132
/**
125133
* Asserts the map contains only the expected elements. There must not be any extra elements.
126-
* @see [containsAll]
134+
* @see [containsAtLeast]
127135
*/
128136
fun <K, V> Assert<Map<K, V>>.containsOnly(vararg elements: Pair<K, V>) = given { actual ->
129137
val elementMap = elements.toMap()

assertk/src/commonMain/kotlin/assertk/assertions/sequence.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fun Assert<Sequence<*>>.doesNotContain(element: Any?) = given { actual ->
3030

3131
/**
3232
* Asserts the sequence does not contain any of the expected elements.
33-
* @see [containsAll]
33+
* @see [containsAtLeast]
3434
*/
3535
fun Assert<Sequence<*>>.containsNone(vararg elements: Any?) = given { actual ->
3636
val actualList = actual.toList()
@@ -42,13 +42,23 @@ fun Assert<Sequence<*>>.containsNone(vararg elements: Any?) = given { actual ->
4242
}
4343

4444
/**
45-
* Asserts the sequence contains all the expected elements, in any order. The collection may also
45+
* Asserts the sequence contains at least the expected elements, in any order. The collection may also
4646
* contain additional elements.
4747
* @see [containsNone]
4848
* @see [containsExactly]
4949
* @see [containsOnly]
5050
*/
51-
fun Assert<Sequence<*>>.containsAll(vararg elements: Any?) = given { actual ->
51+
@Deprecated("renamed to containsAtLeast", ReplaceWith("containsAtLeast(*elements)"))
52+
fun Assert<Sequence<*>>.containsAll(vararg elements: Any?) = containsAtLeast(*elements)
53+
54+
/**
55+
* Asserts the sequence contains at least the expected elements, in any order. The collection may also
56+
* contain additional elements.
57+
* @see [containsNone]
58+
* @see [containsExactly]
59+
* @see [containsOnly]
60+
*/
61+
fun Assert<Sequence<*>>.containsAtLeast(vararg elements: Any?) = given { actual ->
5262
val actualList = actual.toList()
5363
val notFound = elements.filterNot { it in actualList }
5464
if (notFound.isEmpty()) {
@@ -67,7 +77,7 @@ fun Assert<Sequence<*>>.containsAll(vararg elements: Any?) = given { actual ->
6777
*
6878
* @see [containsNone]
6979
* @see [containsExactly]
70-
* @see [containsAll]
80+
* @see [containsAtLeast]
7181
* @see [containsExactlyInAnyOrder]
7282
*/
7383
fun Assert<Sequence<*>>.containsOnly(vararg elements: Any?) = given { actual ->
@@ -95,7 +105,7 @@ fun Assert<Sequence<*>>.containsOnly(vararg elements: Any?) = given { actual ->
95105
* [1, 2, 2] containsExactly [2, 1] fails
96106
* [1, 2] containsExactly [1, 2, 2] fails
97107
*
98-
* @see [containsAll]
108+
* @see [containsAtLeast]
99109
* @see [containsOnly]
100110
* @see [containsExactlyInAnyOrder]
101111
*/
@@ -116,7 +126,7 @@ fun Assert<Sequence<*>>.containsExactly(vararg elements: Any?) = given { actual
116126
*
117127
* @see [containsNone]
118128
* @see [containsExactly]
119-
* @see [containsAll]
129+
* @see [containsAtLeast]
120130
* @see [containsOnly]
121131
*/
122132
fun Assert<Sequence<*>>.containsExactlyInAnyOrder(vararg elements: Any?) = given { actual ->

assertk/src/commonTest/kotlin/test/assertk/assertions/ArrayTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,18 @@ class ArrayTest {
146146
}
147147
//region
148148

149-
//region containsAll
150-
@Test fun containsAll_all_elements_passes() {
151-
assertThat(arrayOf(1, 2)).containsAll(2, 1)
149+
//region containsAtLeast
150+
@Test fun containsAtLeast_all_elements_passes() {
151+
assertThat(arrayOf(1, 2)).containsAtLeast(2, 1)
152152
}
153153

154-
@Test fun containsAll_extra_elements_passes() {
155-
assertThat(arrayOf(1, 2, 3)).containsAll(1, 2)
154+
@Test fun containsAtLeast_extra_elements_passes() {
155+
assertThat(arrayOf(1, 2, 3)).containsAtLeast(1, 2)
156156
}
157157

158-
@Test fun containsAll_some_elements_fails() {
158+
@Test fun containsAtLeast_some_elements_fails() {
159159
val error = assertFailsWith<AssertionError> {
160-
assertThat(arrayOf(1)).containsAll(1, 2)
160+
assertThat(arrayOf(1)).containsAtLeast(1, 2)
161161
}
162162
assertEquals(
163163
"""expected to contain all:<[1, 2]> but was:<[1]>

assertk/src/commonTest/kotlin/test/assertk/assertions/IterableTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import assertk.assertions.any
66
import assertk.assertions.atLeast
77
import assertk.assertions.atMost
88
import assertk.assertions.contains
9-
import assertk.assertions.containsAll
9+
import assertk.assertions.containsAtLeast
1010
import assertk.assertions.containsExactly
1111
import assertk.assertions.containsExactlyInAnyOrder
1212
import assertk.assertions.containsNone
@@ -73,14 +73,14 @@ class IterableTest {
7373
}
7474
//region
7575

76-
//region containsAll
77-
@Test fun containsAll_all_elements_passes() {
78-
assertThat(iterableOf(1, 2)).containsAll(2, 1)
76+
//region containsAtLeast
77+
@Test fun containsAtLeast_all_elements_passes() {
78+
assertThat(iterableOf(1, 2)).containsAtLeast(2, 1)
7979
}
8080

81-
@Test fun containsAll_some_elements_fails() {
81+
@Test fun containsAtLeast_some_elements_fails() {
8282
val error = assertFailsWith<AssertionError> {
83-
assertThat(iterableOf(1)).containsAll(1, 2)
83+
assertThat(iterableOf(1)).containsAtLeast(1, 2)
8484
}
8585
assertEquals(
8686
"""expected to contain all:<[1, 2]> but was:<[1]>

0 commit comments

Comments
 (0)