Improve onEach templates.

Add new functions to reference API.
Add tests for onEach
  #KT-8220
This commit is contained in:
Ilya Gorbunov
2016-10-01 03:51:59 +03:00
parent 5bde230d4a
commit dc57d69085
10 changed files with 115 additions and 14 deletions
@@ -87,6 +87,22 @@ public class SequenceTest {
assertEquals(listOf("f", "ba"), indexed)
}
@Test
fun onEach() {
var count = 0
val data = sequenceOf("foo", "bar")
val newData = data.onEach { count += it.length }
assertFalse(data === newData)
assertEquals(0, count, "onEach should be executed lazily")
data.forEach { }
assertEquals(0, count, "onEach should be executed only when resulting sequence is iterated")
val sum = newData.sumBy { it.length }
assertEquals(sum, count)
}
@Test fun filterAndTakeWhileExtractTheElementsWithinRange() {
assertEquals(listOf(144, 233, 377, 610, 987), fibonacci().filter { it > 100 }.takeWhile { it < 1000 }.toList())
}