Prevent calling AssertContentEquals with two Set arguments
It's unclear whether these sets are intended to be compared with the unordered Set equality, or with the ordered Iterable equality. KT-32996
This commit is contained in:
@@ -361,6 +361,14 @@ fun <@OnlyInputTypes T> assertContentEquals(expected: Iterable<T>?, actual: Iter
|
||||
assertIterableContentEquals("Iterable", message, expected, actual, Iterable<*>::iterator)
|
||||
}
|
||||
|
||||
|
||||
@SinceKotlin("1.5")
|
||||
@Deprecated("'assertContentEquals' for Set arguments is ambiguous. Use 'assertEquals' to compare content with the unordered set equality, or cast one of arguments to Iterable to compare the set elements in order of iteration.",
|
||||
level = DeprecationLevel.ERROR,
|
||||
replaceWith = ReplaceWith("assertContentEquals(expected, actual?.asIterable(), message)"))
|
||||
fun <@OnlyInputTypes T> assertContentEquals(expected: Set<T>?, actual: Set<T>?, message: String? = null): Unit =
|
||||
assertContentEquals(expected, actual?.asIterable(), message)
|
||||
|
||||
/**
|
||||
* Asserts that the [expected] sequence is *structurally* equal to the [actual] sequence,
|
||||
* i.e. contains the same number of the same elements in the same order, with an optional [message].
|
||||
|
||||
+3
@@ -34,6 +34,9 @@ class AssertContentEqualsTest {
|
||||
testFailureMessage("Iterable lengths differ. Expected length is 3, actual length is bigger than 3.") {
|
||||
assertContentEquals(list, 1..4)
|
||||
}
|
||||
testFailureMessage("Iterable elements differ at index 0. Expected element <1>, actual element <3>.") {
|
||||
assertContentEquals(setOf(1, 2, 3).asIterable(), setOf(3, 2, 1))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user