362770c9b1
* with the same erased signature #KT-3373 Fixed
34 lines
1.0 KiB
Kotlin
34 lines
1.0 KiB
Kotlin
package iterators
|
|
|
|
import kotlin.test.assertEquals
|
|
import org.junit.Test as test
|
|
import kotlin.test.failsWith
|
|
|
|
class IteratorsJVMTest {
|
|
|
|
|
|
test fun flatMapAndTakeExtractTheTransformedElements() {
|
|
fun intToBinaryDigits() = { (i: Int) ->
|
|
val binary = Integer.toBinaryString(i)!!
|
|
var index = 0
|
|
iterate<Char> { if (index < binary.length()) binary.get(index++) else null }
|
|
}
|
|
|
|
val expected = arrayListOf(
|
|
'0', // fibonacci(0) = 0
|
|
'1', // fibonacci(1) = 1
|
|
'1', // fibonacci(2) = 1
|
|
'1', '0', // fibonacci(3) = 2
|
|
'1', '1', // fibonacci(4) = 3
|
|
'1', '0', '1' // fibonacci(5) = 5
|
|
)
|
|
|
|
assertEquals(expected, fibonacci().flatMap<Int, Char>(intToBinaryDigits()).take(10).toList())
|
|
}
|
|
|
|
test fun flatMapOnIterator() {
|
|
val result = listOf(1, 2).iterator().flatMap { i -> (0..i).iterator()}
|
|
assertEquals(listOf(0, 1, 0, 1, 2), result.toList())
|
|
}
|
|
}
|