Split tests for MutableList.shuffle and Iterable.shuffled

This commit is contained in:
Ilya Gorbunov
2023-04-06 09:09:43 +02:00
committed by Space Team
parent f13e127b0f
commit 2dbff89098
2 changed files with 45 additions and 15 deletions
@@ -1123,6 +1123,32 @@ class CollectionTest {
} }
} }
@Test fun shuffled() {
val data = List(100) { it }
val list = data.toMutableList()
val shuffled = list.shuffled()
assertEquals(data, list)
assertNotEquals(list, shuffled)
assertEquals(list.toSet(), shuffled.toSet())
assertEquals(list.size, shuffled.distinct().size)
}
@Test fun shuffledPredictably() {
val data = List(10) { it }
val list = data.toMutableList()
val shuffled1 = list.shuffled(Random(1))
val shuffled11 = list.shuffled(Random(1))
assertEquals(data, list)
assertEquals(shuffled1, shuffled11)
assertEquals("[1, 4, 0, 6, 2, 8, 9, 7, 3, 5]", shuffled1.toString())
val shuffled2 = list.shuffled(Random(42))
assertEquals("[5, 0, 4, 9, 2, 8, 1, 7, 6, 3]", shuffled2.toString())
}
@Test fun decomposeFirst() { @Test fun decomposeFirst() {
val (first) = listOf(1, 2) val (first) = listOf(1, 2)
assertEquals(first, 1) assertEquals(first, 1)
@@ -161,25 +161,29 @@ class MutableCollectionTest {
} }
} }
@Test fun shuffled() { @Test fun shuffle() {
val list = MutableList(100) { it } val list = List(100) { it }
val shuffled = list.shuffled() forAllStandardMutableLists(list) { shuffled ->
shuffled.shuffle()
assertNotEquals(list, shuffled) assertNotEquals(list, shuffled)
assertEquals(list.toSet(), shuffled.toSet()) assertEquals(list.toSet(), shuffled.toSet())
assertEquals(list.size, shuffled.distinct().size) assertEquals(list.size, shuffled.distinct().size)
}
} }
@Test fun shuffledPredictably() { @Test fun shufflePredictably() {
val list = List(10) { it } val list = List(10) { it }
val shuffled1 = list.shuffled(Random(1)) repeat(2) {
val shuffled11 = list.shuffled(Random(1)) forAllStandardMutableLists(list) { shuffled1 ->
shuffled1.shuffle(Random(1))
assertEquals("[1, 4, 0, 6, 2, 8, 9, 7, 3, 5]", shuffled1.toString())
}
}
assertEquals(shuffled1, shuffled11) forAllStandardMutableLists(list) { shuffled2 ->
assertEquals("[1, 4, 0, 6, 2, 8, 9, 7, 3, 5]", shuffled1.toString()) shuffled2.shuffle(Random(42))
assertEquals("[5, 0, 4, 9, 2, 8, 1, 7, 6, 3]", shuffled2.toString())
val shuffled2 = list.shuffled(Random(42)) }
assertEquals("[5, 0, 4, 9, 2, 8, 1, 7, 6, 3]", shuffled2.toString())
} }
} }