Implemented asIterable method for arrays. #KT-1313 Fixed
This commit is contained in:
committed by
Ilya Ryzhenkov
parent
3954215b50
commit
38a4f86db2
@@ -9,6 +9,87 @@ import java.util.*
|
||||
|
||||
import java.util.Collections // TODO: it's temporary while we have java.util.Collections in js
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun <T> Array<out T>.asIterable(): Iterable<T> {
|
||||
return object : Iterable<T> {
|
||||
override fun iterator(): Iterator<T> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun BooleanArray.asIterable(): Iterable<Boolean> {
|
||||
return object : Iterable<Boolean> {
|
||||
override fun iterator(): Iterator<Boolean> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun ByteArray.asIterable(): Iterable<Byte> {
|
||||
return object : Iterable<Byte> {
|
||||
override fun iterator(): Iterator<Byte> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun CharArray.asIterable(): Iterable<Char> {
|
||||
return object : Iterable<Char> {
|
||||
override fun iterator(): Iterator<Char> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun DoubleArray.asIterable(): Iterable<Double> {
|
||||
return object : Iterable<Double> {
|
||||
override fun iterator(): Iterator<Double> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun FloatArray.asIterable(): Iterable<Float> {
|
||||
return object : Iterable<Float> {
|
||||
override fun iterator(): Iterator<Float> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun IntArray.asIterable(): Iterable<Int> {
|
||||
return object : Iterable<Int> {
|
||||
override fun iterator(): Iterator<Int> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun LongArray.asIterable(): Iterable<Long> {
|
||||
return object : Iterable<Long> {
|
||||
override fun iterator(): Iterator<Long> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Iterable that wraps the original array
|
||||
*/
|
||||
public fun ShortArray.asIterable(): Iterable<Short> {
|
||||
return object : Iterable<Short> {
|
||||
override fun iterator(): Iterator<Short> = this@asIterable.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the range of valid indices for the array
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package test.collections
|
||||
|
||||
import kotlin.test.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.expect
|
||||
import org.junit.Test as test
|
||||
|
||||
fun <T> checkContent(iter: Iterator<T>, length: Int, value: (Int) -> T) {
|
||||
@@ -214,6 +217,28 @@ class ArraysTest {
|
||||
assertEquals(listOf("aab", "aba", "ac"), array("ac", "aab", "aba").toSortedList())
|
||||
}
|
||||
|
||||
test fun asIterable() {
|
||||
val arr1 = intArray(1, 2, 3, 4, 5)
|
||||
val iter1 = arr1.asIterable()
|
||||
assertEquals(arr1.toList(), iter1.toList())
|
||||
arr1[0] = 0
|
||||
assertEquals(arr1.toList(), iter1.toList())
|
||||
|
||||
val arr2 = array("one", "two", "three")
|
||||
val iter2 = arr2.asIterable()
|
||||
assertEquals(arr2.toList(), iter2.toList())
|
||||
arr2[0] = ""
|
||||
assertEquals(arr2.toList(), iter2.toList())
|
||||
|
||||
val arr3 = IntArray(0)
|
||||
val iter3 = arr3.asIterable()
|
||||
assertEquals(iter3.toList(), emptyList<Int>())
|
||||
|
||||
val arr4 = Array(0, { "$it" })
|
||||
val iter4 = arr4.asIterable()
|
||||
assertEquals(iter4.toList(), emptyList<String>())
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
TODO FIXME ASAP: These currently fail on JS due to missing upto() method on numbers
|
||||
|
||||
Reference in New Issue
Block a user