Scan functions for Sequences and Iterable #KT-7657

This commit is contained in:
Abduqodiri Qurbonzoda
2020-01-24 04:42:19 +03:00
parent 0d7e641736
commit ed7b8e9b85
16 changed files with 2411 additions and 0 deletions
@@ -438,6 +438,40 @@ abstract class IterableTests<T : Iterable<String>>(val createFrom: (Array<out St
assertTrue(reduced == "foobar" || reduced == "barfoo")
}
@Test
fun scan() {
val accumulators = data.scan("baz") { acc, e -> acc + e }
assertEquals(3, accumulators.size)
assertEquals("baz", accumulators.first())
assertTrue(accumulators.elementAt(1) in listOf("bazfoo", "bazbar"))
assertTrue(accumulators.last() in listOf("bazfoobar", "bazbarfoo"))
}
@Test
fun scanIndexed() {
val accumulators = data.scanIndexed("baz") { i, acc, e -> acc + i + e }
assertEquals(3, accumulators.size)
assertEquals("baz", accumulators.first())
assertTrue(accumulators.elementAt(1) in listOf("baz0foo", "baz0bar"))
assertTrue(accumulators.last() in listOf("baz0foo1bar", "baz0bar1foo"))
}
@Test
fun scanReduce() {
val accumulators = data.scanReduce { acc, e -> acc + e }
assertEquals(2, accumulators.size)
assertTrue(accumulators.first() in listOf("foo", "bar"))
assertTrue(accumulators.last() in listOf("foobar", "barfoo"))
}
@Test
fun scanReduceIndexed() {
val accumulators = data.scanReduceIndexed { i, acc, e -> acc + i + e }
assertEquals(2, accumulators.size)
assertTrue(accumulators.first() in listOf("foo", "bar"))
assertTrue(accumulators.last() in listOf("foo1bar", "bar1foo"))
}
@Test
fun mapAndJoinToString() {
val result = data.joinToString(separator = "-") { it.toUpperCase() }