JS: move expressions test to box tests

This commit is contained in:
Alexey Andreev
2016-08-26 19:32:17 +03:00
parent 2bf0199959
commit b159049be8
314 changed files with 2380 additions and 2185 deletions
@@ -0,0 +1,34 @@
package foo
val a1 = arrayOfNulls<Int>(10)
fun box(): String {
var c = 0
var d = 0
a1[3] = 3
a1[5] = 5
for (a: Int? in a1) {
if (a != null) {
c += 1;
}
else {
d += 1
}
}
assertEquals(2, c)
assertEquals(8, d)
var s: String = ""
for(i in arrayOf(0,1,2))
try { s += "A${i}:"} finally {}
assertEquals("A0:A1:A2:", s)
var sLong = 0L
var aLong = longArrayOf(1,2,3,4,5,6,7,8,9,10)
for(i in aLong)
sLong += i
assertEquals(55L, sLong)
return "OK"
}
@@ -0,0 +1,50 @@
package foo
var global: String = ""
fun up(s: String, value: Int): Int {
global += s
return value
}
fun box(): String {
// http://youtrack.jetbrains.com/issue/KT-5262
// JS: wrong code for `for` over range when start greater end
var n: Int = 0
for(i in 3..0)
n++
assertEquals(0, n)
for(i in 0..3)
n++
assertEquals(4, n)
// Evaluation order
for (i in up("A", 0)..up("B", 5)) {
}
assertEquals("AB", global)
global = ""
for (i in try { up("A", 0) } finally {} ..up("B", 5)) {
}
assertEquals("AB", global)
global = ""
for (i in up("A", 0).. try { up("B", 5)} finally {}) {
}
assertEquals("AB", global)
global = ""
for (i in try { up("A", 0) } finally {}.. try { up("B", 5)} finally {}) {
}
assertEquals("AB", global)
var sLong = 0L
for(i in 0L..10L)
sLong += i
assertEquals(55L, sLong)
return "OK"
}
@@ -0,0 +1,22 @@
package foo
fun box(): String {
var n = 0
var r = 3..0
for(i in r)
n++
assertEquals(0, n)
r = 0..3
for(i in r)
n++
assertEquals(4, n)
var sLong = 0L
var rLong = 0L..10L
for(i in rLong)
sLong += i
assertEquals(55L, sLong)
return "OK"
}
@@ -0,0 +1,21 @@
package foo
class Iter(val upper: Int) {
var count: Int = 0
operator fun hasNext(): Boolean = count < upper
operator fun next(): Int = count++
}
class A(val upper: Int) {
operator fun iterator(): Iter = Iter(upper)
}
fun box(): String {
var n = 0
for(i in A(10)) {
n++
}
assertEquals(10, n)
return "OK"
}
@@ -0,0 +1,10 @@
package foo
val a1 = arrayOfNulls<Int>(0)
fun box(): String {
for (a in a1) {
return "fail"
}
return "OK"
}
@@ -0,0 +1,12 @@
package foo
fun box(): String {
var s: String = ""
s = ""
for(i in 0..2)
try { s += "A"} finally {}
assertEquals("AAA", s)
return "OK"
}
@@ -0,0 +1,14 @@
package foo
fun box(): String {
for (i in 0..5);
val r = 0..5
for (i in r);
for (i in arrayOf(1, 2, 3));
for (i in arrayOf(1, 2, 3).asList());
return "OK"
}
@@ -0,0 +1,45 @@
package foo
var log = ""
class T(val id: Int) {
operator fun component1(): Int {
log += "($id).component1();"
return 1
}
operator fun component2(): String {
log += "($id).component2();"
return "1"
}
}
class C {
operator fun iterator(): Iterator<T> = object: Iterator<T> {
var i = 0
var data = arrayOf(T(3), T(1), T(2))
override fun hasNext(): Boolean {
log += "C.hasNext();"
return i < data.size
}
override fun next(): T {
log += "C.next();"
return data[i++]
}
}
}
fun box(): String {
for ((a, b) in arrayOf(T(3), T(1), T(2)));
assertEquals("(3).component1();(3).component2();(1).component1();(1).component2();(2).component1();(2).component2();", log)
log = ""
for ((a, b) in C());
assertEquals("C.hasNext();C.next();(3).component1();(3).component2();C.hasNext();C.next();" +
"(1).component1();(1).component2();C.hasNext();C.next();" +
"(2).component1();(2).component2();C.hasNext();", log)
return "OK"
}
@@ -0,0 +1,16 @@
package foo
val a1 = arrayOfNulls<Int>(0)
fun box(): String {
var bar = 33
outer@ for (a in arrayOf(1, 2)) {
for (b in arrayOf(1, 4)) {
break@outer
}
bar = 42
}
if (bar != 33) return "fail: $bar"
return "OK"
}
@@ -0,0 +1,36 @@
// http://youtrack.jetbrains.com/issue/KT-5257
// JS: for with continue with label fails on runtime
package foo
var global: String = ""
fun up(s: String, value: Int): Int {
global += s
return value
}
fun box(): String {
list@
for (i in 0..up("A", 5)) {
continue@list
}
assertEquals("A", global)
global = ""
list1@
for (i in up("A", 0)..try { global += "B"; 5} finally {}) {
continue@list1
}
assertEquals("AB", global)
global = ""
list2@
for (i in try { up("A", 0) } finally {}..try { global += "B"; 5} finally {}) {
continue@list2
}
assertEquals("AB", global)
return "OK"
}
@@ -0,0 +1,49 @@
package foo
fun box(): String {
var n = 0
forLabel0@ for(i in 0..10) {
var j = 0
whileLabel0@ while(j++<i) {
n++;
if (j==2)
continue@forLabel0
}
}
assertEquals(19, n)
n = 0
forLabel1@ for(i in 0..10) {
var j = 0
whileLabel1@ while(try {j++} finally {} <i) {
n++;
if (j==2)
continue@forLabel1
}
}
assertEquals(19, n)
n = 0
forLabel2@ for(i in 0..10) {
var j = 0
whileLabel2@ while(j++<i) {
n++;
if (j==2)
break@forLabel2
}
}
assertEquals(3, n)
n = 0
forLabel3@ for(i in 0..10) {
var j = 0
whileLabel3@ while(j++<i) {
n++;
if (j==2)
break@whileLabel3
}
}
assertEquals(19, n)
return "OK"
}