Files
kotlin-fork/backend.native/tests/external/stdlib/collections/SequenceTest/take.kt
T
Ilya Matveev 85827b4880 tests: Copy stdlib tests from Kotlin/JVM
This patch copies Kotlin/JVM stdlib tests (libraries/stdlib/test)
excepting ones with explicit java dependencies. It also transforms
the tests to use them as box-tests.
2017-04-07 17:21:11 +07:00

24 lines
897 B
Kotlin

import kotlin.test.*
import kotlin.comparisons.*
fun fibonacci(): Sequence<Int> {
// fibonacci terms
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, ...
return generateSequence(Pair(0, 1), { Pair(it.second, it.first + it.second) }).map { it.first }
}
fun box() {
assertEquals(emptyList(), emptySequence<Int>().take(1).toList())
assertEquals(emptyList(), fibonacci().take(0).toList())
assertEquals("0, 1, 1, 2, 3, 5, 8", fibonacci().take(7).joinToString())
assertEquals("0, 1, 1, 2", fibonacci().take(7).take(4).joinToString())
assertEquals("0, 1, 1, 2", fibonacci().take(4).take(5).joinToString())
assertEquals(emptyList(), fibonacci().take(1).drop(1).toList())
assertEquals(emptyList(), fibonacci().take(1).drop(2).toList())
assertFailsWith<IllegalArgumentException> { fibonacci().take(-1) }
}