Refactored tests using Array constructor:
Some moved to tests with stdlib Some changed to use arrayOfNulls
This commit is contained in:
committed by
Alexander Udalov
parent
abbcf61183
commit
654411a0b0
@@ -1,11 +0,0 @@
|
||||
fun Array<String>.get(index1: Int, index2: Int) = this[index1 + index2]
|
||||
fun Array<String>.set(index1: Int, index2: Int, elem: String) {
|
||||
this[index1 + index2] = elem
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val s = Array<String>(1, { "" })
|
||||
s[1, -1] = "O"
|
||||
s[2, -2] += "K"
|
||||
return s[-3, 3]
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fun Array<String>.get(index1: Int, index2: Int) = this[index1 + index2]
|
||||
fun Array<String>.set(index1: Int, index2: Int, elem: String) {
|
||||
this[index1 + index2] = elem
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val s = Array<String>(1, { "" })
|
||||
s[1, -1] = "OK"
|
||||
return s[-2, 2]
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
fun box(): String {
|
||||
val x = Array<Int>(5, { it } ).iterator()
|
||||
var i = 0
|
||||
while (x.hasNext()) {
|
||||
if (x.next() != i) return "Fail $i"
|
||||
i++
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
@@ -5,7 +5,7 @@ fun t1 () {
|
||||
}
|
||||
|
||||
fun t2 () {
|
||||
val a2 = Array<Int>(1,{0})
|
||||
val a2 = arrayOfNulls<Int>(1) as Array<Int>
|
||||
a2[0] = 0 //ok
|
||||
var i = a2[0] //ok
|
||||
}
|
||||
|
||||
@@ -67,10 +67,10 @@ fun box(): String {
|
||||
if (foo(boolA) != 1) return "fail boolean[]"
|
||||
val cA = CharArray(1)
|
||||
if (foo(cA) != 1) return "fail char[]"
|
||||
val oA = Array<Any>(1) { 1 }
|
||||
val oA = arrayOfNulls<Int>(1)
|
||||
if (foo(oA) != 1) return "fail Any[]"
|
||||
|
||||
val sArray = Array<String>(0) { "" }
|
||||
val sArray = arrayOfNulls<String>(0)
|
||||
if (foo(sArray) != 0) return "fail String[]"
|
||||
|
||||
return "OK"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
val <T> Array<T>.length : Int get() = this.size()
|
||||
|
||||
fun box() = if(Array(10, {1}).length == 10) "OK" else "fail"
|
||||
fun box() = if(arrayOfNulls<Int>(10).length == 10) "OK" else "fail"
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
class A() {
|
||||
class B(val i: Int) {
|
||||
}
|
||||
|
||||
fun test() = Array<B> (10, { B(it) })
|
||||
}
|
||||
|
||||
fun box() = if(A().test()[5].i == 5) "OK" else "fail"
|
||||
@@ -1,110 +0,0 @@
|
||||
class MyNumber(val i: Int) {
|
||||
fun inc(): MyNumber = MyNumber(i+1)
|
||||
}
|
||||
|
||||
class MNR(var ref: MyNumber) {}
|
||||
|
||||
fun test1() : Boolean {
|
||||
var m = MyNumber(42)
|
||||
|
||||
m++
|
||||
if (m.i != 43) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test2() : Boolean {
|
||||
var m = MyNumber(44)
|
||||
|
||||
var m2 = m++
|
||||
if (m2.i != 44) return false
|
||||
if (m.i != 45) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test3() : Boolean {
|
||||
var mnr = MNR(MyNumber(42))
|
||||
mnr.ref++
|
||||
if (mnr.ref.i != 43) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test4() : Boolean {
|
||||
var mnr = MNR(MyNumber(42))
|
||||
val m3 = mnr.ref++
|
||||
if (m3.i != 42) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test5() : Boolean {
|
||||
var mnr = Array<MyNumber>(2,{MyNumber(42)})
|
||||
mnr[0]++
|
||||
if (mnr[0].i != 43) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test6() : Boolean {
|
||||
var mnr = Array<MyNumber>(2,{it -> MyNumber(42-it)})
|
||||
mnr[1] = mnr[0]++
|
||||
if (mnr[0].i != 43) return false
|
||||
if (mnr[1].i != 42) return false
|
||||
return true
|
||||
}
|
||||
|
||||
// ArrayList without jdk-annotations cannot be used in these tests
|
||||
class MyArrayList<T>() {
|
||||
private var value17: T? = null
|
||||
private var value39: T? = null
|
||||
fun get(index: Int): T {
|
||||
if (index == 17) return value17!!
|
||||
if (index == 39) return value39!!
|
||||
throw Exception()
|
||||
}
|
||||
fun set(index: Int, value: T): T? {
|
||||
if (index == 17) value17 = value
|
||||
else if (index == 39) value39 = value
|
||||
else throw Exception()
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
fun test7() : Boolean {
|
||||
var mnr = MyArrayList<MyNumber>()
|
||||
mnr[17] = MyNumber(42)
|
||||
mnr[17]++
|
||||
if (mnr[17].i != 43) return false
|
||||
return true
|
||||
}
|
||||
|
||||
fun test8() : Boolean {
|
||||
var mnr = MyArrayList<MyNumber>()
|
||||
mnr[17] = MyNumber(42)
|
||||
mnr[39] = mnr[17]++
|
||||
if (mnr[17].i != 43) return false
|
||||
if (mnr[39].i != 42) return false
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
fun box() : String {
|
||||
var m = MyNumber(42)
|
||||
|
||||
if (!test1()) return "fail test 1"
|
||||
if (!test2()) return "fail test 2"
|
||||
if (!test3()) return "fail test 3"
|
||||
if (!test4()) return "fail test 4"
|
||||
|
||||
if (!test5()) return "fail test 5"
|
||||
if (!test6()) return "fail test 6"
|
||||
if (!test7()) return "fail test 7"
|
||||
if (!test8()) return "fail test 8"
|
||||
|
||||
|
||||
++m
|
||||
if (m.i != 43) return "fail 0"
|
||||
|
||||
var m1 = ++m
|
||||
if (m1.i != 44) return "fail 3"
|
||||
if (m.i != 44) return "fail 4"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
class mInt(val i : Int) {
|
||||
override fun toString() : String = "mint: $i"
|
||||
fun plus(i : Int) = mInt(this.i + i)
|
||||
fun inc() = mInt(i + 1)
|
||||
}
|
||||
|
||||
class MyArray() {
|
||||
val a = Array<mInt>(10, {mInt(0)})
|
||||
fun get(i : mInt) : mInt = a[i.i]
|
||||
fun set(i : mInt, v : mInt) {
|
||||
a[i.i] = v
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
val a = MyArray()
|
||||
var i = mInt(0)
|
||||
System.out?.println(i)
|
||||
a[i++]// = mInt(1)
|
||||
System.out?.println(i)
|
||||
a[i++] = mInt(1)
|
||||
System.out?.println(i)
|
||||
for (i in 0..9)
|
||||
System.out?.println("ar: ${a[mInt(i)]}")
|
||||
return "OK"
|
||||
}
|
||||
@@ -90,7 +90,7 @@ fun for_object_list(): Int {
|
||||
}
|
||||
|
||||
fun for_str_array(): Int {
|
||||
val a = Array<String>(10) {i -> "$i"}
|
||||
val a = arrayOfNulls<String>(10)
|
||||
var c = 0
|
||||
for (i in a) {
|
||||
if (c >= 5) continue
|
||||
|
||||
@@ -90,7 +90,7 @@ fun for_object_list(): Int {
|
||||
}
|
||||
|
||||
fun for_str_array(): Int {
|
||||
val a = Array<String>(10) {i -> "$i"}
|
||||
val a = arrayOfNulls<String>(10)
|
||||
var c = 0
|
||||
@loop for (i in a) {
|
||||
if (c >= 5) continue @loop
|
||||
|
||||
@@ -7,4 +7,8 @@ fun f(x: Any?): String {
|
||||
return "FAIL"
|
||||
}
|
||||
|
||||
fun box(): String = f(Array<String>(1, {"OK"}))
|
||||
fun box(): String {
|
||||
val a = arrayOfNulls<String>(1) as Array<String>
|
||||
a[0] = "OK"
|
||||
return f(a)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
fun box() : String {
|
||||
val a = Array<Int> (5, {0})
|
||||
val a = arrayOfNulls<Int>(5)
|
||||
var i = 0
|
||||
var sum = 0
|
||||
for(el in 0..4) {
|
||||
a[i] = i++
|
||||
}
|
||||
for (el in a) {
|
||||
for (el in (a as Array<Int>)) {
|
||||
sum = sum + el
|
||||
}
|
||||
if(sum != 10) return "a failed"
|
||||
|
||||
@@ -44,7 +44,7 @@ fun box() : String {
|
||||
}
|
||||
if(sum != 15) return "c4 failed"
|
||||
|
||||
val a : Array<Int> = Array<Int> (5, {0})
|
||||
val a : Array<Int> = arrayOfNulls<Int>(5) as Array<Int>
|
||||
for(el in 0..4) {
|
||||
a[i] = i++
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ fun main(args: Array<String>?) {
|
||||
//do not compile
|
||||
System.out?.println(fff<Unit>(Unit)) //do not compile
|
||||
System.out?.println(id<Unit>(y)) //do not compile
|
||||
System.out?.println(fff<Unit>(id<Unit>(y)) == id<Unit>(foreach(Array<Int>(0,{0}),{(e : Int) : Unit -> }))) //do not compile
|
||||
System.out?.println(fff<Unit>(id<Unit>(y)) == id<Unit>(foreach(arrayOfNulls<Int>(0) as Array<Int>,{(e : Int) : Unit -> }))) //do not compile
|
||||
}
|
||||
class A<T>()
|
||||
|
||||
@@ -30,7 +30,7 @@ fun almostFilter(array: Array<Int>, action: (Int)-> Int) {
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
val a = Array<Int> (3,{-1})
|
||||
val a = arrayOfNulls<Int>(3) as Array<Int>
|
||||
a[0] = 0
|
||||
a[1] = 1
|
||||
a[2] = 2
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
fun Array<String>.test1(): Array<String> {
|
||||
val func = {(i:Int) -> this}
|
||||
return func(1)
|
||||
}
|
||||
|
||||
fun Array<String>.test1Nested(): Array<String> {
|
||||
val func = {(i:Int) -> { this }()}
|
||||
return func(1)
|
||||
}
|
||||
|
||||
|
||||
fun Array<String>.test2() : Array<String> {
|
||||
class Z2() {
|
||||
fun run(): Array<String> {
|
||||
return this@test2
|
||||
}
|
||||
}
|
||||
return Z2().run()
|
||||
}
|
||||
|
||||
fun Array<String>.test2Nested() : Array<String> {
|
||||
class Z2() {
|
||||
fun run(): Array<String> {
|
||||
class Z3 {
|
||||
fun run(): Array<String> {
|
||||
return this@test2Nested;
|
||||
}
|
||||
}
|
||||
return Z3().run()
|
||||
}
|
||||
}
|
||||
return Z2().run()
|
||||
}
|
||||
|
||||
fun Array<String>.test3(): Array<String> {
|
||||
fun local(): Array<String> {
|
||||
return this@test3
|
||||
}
|
||||
return local()
|
||||
}
|
||||
|
||||
fun Array<String>.test3Nested(): Array<String> {
|
||||
fun local(): Array<String> {
|
||||
fun local2(): Array<String> {
|
||||
return this@test3Nested
|
||||
}
|
||||
return local2()
|
||||
}
|
||||
return local()
|
||||
}
|
||||
|
||||
|
||||
fun Array<String>.test4() : Array<String> {
|
||||
return object {
|
||||
fun run() : Array<String> {
|
||||
return this@test4
|
||||
}
|
||||
}.run()
|
||||
}
|
||||
|
||||
fun Array<String>.test4Nested() : Array<String> {
|
||||
return object {
|
||||
fun run() : Array<String> {
|
||||
return object {
|
||||
fun run() : Array<String> {
|
||||
return this@test4Nested
|
||||
}
|
||||
}.run()
|
||||
}
|
||||
}.run()
|
||||
}
|
||||
|
||||
fun Array<DoubleArray>.test1(): Array<DoubleArray> {
|
||||
val func = {(i:Int) -> this}
|
||||
return func(1)
|
||||
}
|
||||
|
||||
|
||||
fun box() : String {
|
||||
val array = Array<String>(2, { i -> "${i}" })
|
||||
if (array != array.test1()) return "fail 1"
|
||||
if (array != array.test2()) return "fail 2"
|
||||
if (array != array.test3()) return "fail 3"
|
||||
if (array != array.test4()) return "fail 4"
|
||||
|
||||
if (array != array.test1Nested()) return "fail 1Nested"
|
||||
if (array != array.test2Nested()) return "fail 2Nested"
|
||||
if (array != array.test3Nested()) return "fail 3Nested"
|
||||
if (array != array.test4Nested()) return "fail 4Nested"
|
||||
|
||||
val array2 = Array<DoubleArray>(2, { i -> DoubleArray(i) })
|
||||
if (array2 != array2.test1()) return "fail on array of double []"
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
var result = 0
|
||||
|
||||
fun <T> Iterator<T>.foreach(action: (T) -> Unit) {
|
||||
while (this.hasNext()) {
|
||||
(action)(this.next())
|
||||
}
|
||||
}
|
||||
|
||||
fun <In, Out> Iterator<In>.select(f: (In) -> Out) : Iterator<Out> {
|
||||
return Selector(this, f);
|
||||
}
|
||||
|
||||
class Selector<In, Out>(val source: Iterator<In>, val f: (In) -> Out) : Iterator<Out> {
|
||||
override fun hasNext(): Boolean = source.hasNext()
|
||||
|
||||
override fun next(): Out {
|
||||
return (f)(source.next())
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
Array(4, { it + 1 }).iterator()
|
||||
.select({i -> i * 10})
|
||||
.foreach({k -> result += k})
|
||||
if (result != 10+20+30+40) return "Fail: $result"
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
class C(val i: Int) {
|
||||
fun component1() = i + 1
|
||||
fun component2() = i + 2
|
||||
}
|
||||
|
||||
fun doTest(l : Array<C>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<C>(3, {x -> C(x)})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
class C(val i: Int) {
|
||||
}
|
||||
|
||||
fun C.component1() = i + 1
|
||||
fun C.component2() = i + 2
|
||||
|
||||
fun doTest(l : Array<C>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<C>(3, {x -> C(x)})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
class C(val i: Int) {
|
||||
}
|
||||
|
||||
class M {
|
||||
fun C.component1() = i + 1
|
||||
fun C.component2() = i + 2
|
||||
|
||||
fun doTest(l : Array<C>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<C>(3, {x -> C(x)})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
class C(val i: Int) {
|
||||
}
|
||||
|
||||
class M {
|
||||
fun C.component1() = i + 1
|
||||
fun C.component2() = i + 2
|
||||
}
|
||||
|
||||
fun M.doTest(l : Array<C>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<C>(3, {x -> C(x)})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
class C(val i: Int) {
|
||||
fun component1() = i + 1
|
||||
fun component2() = i + 2
|
||||
}
|
||||
|
||||
fun doTest(l : Array<C>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += {"$a:$b;"}()
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<C>(3, {x -> C(x)})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
fun Int.component1() = this + 1
|
||||
fun Int.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Int>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Int>(3, {x -> x})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
fun Int.component1() = this + 1
|
||||
fun Int.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Int>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += {"$a:$b;"}()
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Int>(3, {x -> x})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
class M {
|
||||
fun Int.component1() = this + 1
|
||||
fun Int.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Int>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Int>(3, {x -> x})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
class M {
|
||||
fun Int.component1() = this + 1
|
||||
fun Int.component2() = this + 2
|
||||
}
|
||||
|
||||
fun M.doTest(l : Array<Int>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Int>(3, {x -> x})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
fun Long.component1() = this + 1
|
||||
fun Long.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Long>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Long>(3, {x -> x.toLong()})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
fun Long.component1() = this + 1
|
||||
fun Long.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Long>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += {"$a:$b;"}()
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Long>(3, {x -> x.toLong()})
|
||||
val s = doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
class M {
|
||||
fun Long.component1() = this + 1
|
||||
fun Long.component2() = this + 2
|
||||
|
||||
fun doTest(l : Array<Long>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Long>(3, {x -> x.toLong()})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
class M {
|
||||
fun Long.component1() = this + 1
|
||||
fun Long.component2() = this + 2
|
||||
}
|
||||
|
||||
fun M.doTest(l : Array<Long>): String {
|
||||
var s = ""
|
||||
for ((a, b) in l) {
|
||||
s += "$a:$b;"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val l = Array<Long>(3, {x -> x.toLong()})
|
||||
val s = M().doTest(l)
|
||||
return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s"
|
||||
}
|
||||
@@ -7,6 +7,6 @@ object Obj {
|
||||
fun box() : String {
|
||||
val klass = Class.forName("Obj\$Inner")!!
|
||||
val cons = klass.getConstructors()!![0]
|
||||
val inner = cons.newInstance(* Array(0){""})
|
||||
val inner = cons.newInstance(*(arrayOfNulls<String>(0) as Array<String>))
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ fun checkLess(x: Array<Int>, y: Array<Int>) = when {
|
||||
fun Array<Int>.compareTo(other: Array<Int>) = size() - other.size()
|
||||
|
||||
fun box(): String {
|
||||
val a = Array<Int>(0, {0})
|
||||
val b = Array<Int>(1, {0})
|
||||
val a = arrayOfNulls<Int>(0) as Array<Int>
|
||||
val b = arrayOfNulls<Int>(1) as Array<Int>
|
||||
return checkLess(a, b)
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
fun box() : String {
|
||||
val data = Array<Array<Boolean>>(3) { Array<Boolean>(4, {false}) }
|
||||
for(d in data) {
|
||||
if(d.size() != 4) return "fail"
|
||||
for(b in d) if (b) return "fail"
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -6,7 +6,7 @@ fun box(): String {
|
||||
val collection = MyCollection(Arrays.asList(2, 3, 9)) as java.util.Collection<*>
|
||||
|
||||
val array1 = collection.toArray()
|
||||
val array2 = collection.toArray(Array<Int>(3, { 0 }))
|
||||
val array2 = collection.toArray(arrayOfNulls<Int>(3) as Array<Int>)
|
||||
|
||||
if (array1 !is Array<Any>) return (array1 as Object).getClass().toString()
|
||||
if (array2 !is Array<Int>) return (array2 as Object).getClass().toString()
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
import java.util.Arrays
|
||||
|
||||
class MyCollection<T>(val delegate: Collection<T>): Collection<T> by delegate {
|
||||
public fun toArray(): Array<Any?> = Array<Any?>(3, { it })
|
||||
public fun toArray(): Array<Any?> {
|
||||
val a = arrayOfNulls<Any?>(3)
|
||||
a[0] = 0
|
||||
a[1] = 1
|
||||
a[2] = 2
|
||||
return a
|
||||
}
|
||||
public fun <E> toArray(array: Array<E>): Array<E> {
|
||||
val asIntArray = array as Array<Int>
|
||||
asIntArray[0] = 0
|
||||
@@ -15,7 +21,7 @@ fun box(): String {
|
||||
val collection = MyCollection(Arrays.asList(2, 3, 9)) as java.util.Collection<*>
|
||||
|
||||
val array1 = collection.toArray()
|
||||
val array2 = collection.toArray(Array<Int>(3, { 0 }))
|
||||
val array2 = collection.toArray(arrayOfNulls<Int>(3) as Array<Int>)
|
||||
|
||||
if (array1 !is Array<Any>) return (array1 as Object).getClass().toString()
|
||||
if (array2 !is Array<Int>) return (array2 as Object).getClass().toString()
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
trait ISized {
|
||||
val size : Int
|
||||
}
|
||||
|
||||
trait javaUtilIterator<T> : Iterator<T> {
|
||||
fun remove() : Unit {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
class MyIterator<T>(val array : ReadOnlyArray<T>) : javaUtilIterator<T> {
|
||||
private var index = 0
|
||||
|
||||
override fun hasNext() : Boolean = index < array.size
|
||||
|
||||
override fun next() : T = array.get(index++)
|
||||
}
|
||||
|
||||
trait ReadOnlyArray<out T> : ISized, Iterable<T> {
|
||||
fun get(index : Int) : T
|
||||
|
||||
override fun iterator() : Iterator<T> = MyIterator<T>(this)
|
||||
}
|
||||
|
||||
trait WriteOnlyArray<in T> : ISized {
|
||||
fun set(index : Int, value : T) : Unit
|
||||
|
||||
fun set(from: Int, count: Int, value: T) {
|
||||
for(i in from..from+count-1) {
|
||||
set(i, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MutableArray<T>(length: Int, init : (Int) -> T) : ReadOnlyArray<T>, WriteOnlyArray<T> {
|
||||
private val array = Array<Any?>(length, init)
|
||||
|
||||
override fun get(index : Int) : T = array[index] as T
|
||||
override fun set(index : Int, value : T) : Unit { array[index] = value }
|
||||
|
||||
override val size : Int
|
||||
get() = array.size()
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
var a = MutableArray<Int> (4, {0})
|
||||
a [0] = 10
|
||||
a.set(1, 2, 13)
|
||||
a [3] = 40
|
||||
a.iterator()
|
||||
a.iterator().hasNext()
|
||||
for(el in a) {
|
||||
val fl = el
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user