JS: move more test to box tests
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val a = arrayOfNulls<Int>(2)
|
||||
a.set(1, 2)
|
||||
return if (a.get(1) == 2) "OK" else "fail"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
val a = arrayOfNulls<Int>(4)
|
||||
a[1] = 2
|
||||
a[2] = 3
|
||||
return if ((a[1] == 2) && (a[2] == 3)) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
val s = Array<String>(3) { it.toString() }
|
||||
if (s.size != 3) return "Fail Array size: ${s.size}"
|
||||
if (s[1] != "1") return "Fail Array value: ${s[1]}"
|
||||
|
||||
val i = IntArray(3) { it }
|
||||
if (i.size != 3) return "Fail IntArray size: ${i.size}"
|
||||
if (i[1] != 1) return "Fail IntArray value: ${i[1]}"
|
||||
|
||||
val c = CharArray(3) { it.toChar() }
|
||||
if (c.size != 3) return "Fail CharArray size: ${c.size}"
|
||||
if (c[1] != 1.toChar()) return "Fail CharArray value: ${c[1]}"
|
||||
|
||||
val b = BooleanArray(3) { true }
|
||||
if (b.size != 3) return "Fail BooleanArray size: ${b.size}"
|
||||
if (b[1] != true) return "Fail BooleanArray value: ${b[1]}"
|
||||
|
||||
val l = LongArray(3) { it.toLong() }
|
||||
if (l.size != 3) return "Fail LongArray size: ${l.size}"
|
||||
if (l[1] != 1L) return "Fail LongArray value: ${l[1]}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package foo
|
||||
|
||||
class Fail(message: String) : Exception(message)
|
||||
|
||||
fun test(testName: String, actual: Any, expectedAsString: String) {
|
||||
val expected = eval("[$expectedAsString]") as Array<in Any>
|
||||
val expectedJs: dynamic = expected
|
||||
val actualJs: dynamic = actual
|
||||
if (expectedJs.length != actualJs.length) {
|
||||
fail("Lengths do not match: ${expectedJs} vs. ${actualJs}")
|
||||
}
|
||||
for (index in 0..(expectedJs.length)) {
|
||||
val expectedElem = expectedJs[index] as Any?
|
||||
val actualElem = actualJs[index] as Any?
|
||||
if (expectedElem != actualElem) {
|
||||
fail("Content do not match: ${expectedJs} vs. ${actualJs}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
try {
|
||||
test("arrayOf", arrayOf(0, 1, 2, 3, 4), "0, 1, 2, 3, 4")
|
||||
test("booleanArrayOf", booleanArrayOf(true, false, false, true, true), "true, false, false, true, true")
|
||||
test("charArray'", charArrayOf('0', '1', '2', '3', '4'), "'0', '1', '2', '3', '4'")
|
||||
test("byteArrayOf", byteArrayOf(0, 1, 2, 3, 4), "0, 1, 2, 3, 4")
|
||||
test("shortArrayOf", shortArrayOf(0, 1, 2, 3, 4), "0, 1, 2, 3, 4")
|
||||
test("intArray,", intArrayOf(0, 1, 2, 3, 4), "0, 1, 2, 3, 4")
|
||||
test("longArrayOf", longArrayOf(0, 1, 2, 3, 4), "kotlin.Long.fromInt(0), kotlin.Long.fromInt(1), kotlin.Long.fromInt(2), kotlin.Long.fromInt(3), kotlin.Long.fromInt(4)")
|
||||
test("floatArrayOf", floatArrayOf(0.0f, 1.0f, 2.0f, 3.0f, 4.0f), "0.0, 1.0, 2.0, 3.0, 4.0")
|
||||
test("doubleArrayOf", doubleArrayOf(0.0, 1.1, 2.2, 3.3, 4.4), "0.0, 1.1, 2.2, 3.3, 4.4")
|
||||
}
|
||||
catch (e: Fail) {
|
||||
return e.message!!
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package foo
|
||||
|
||||
val f = { i: Int -> i + 1 }
|
||||
|
||||
val a = Array(3, f)
|
||||
|
||||
fun box() = if (a[0] == 1 && a[2] == 3 && a[1] == 2) "OK" else "fail"
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo
|
||||
|
||||
val a = arrayOfNulls<Int>(3)
|
||||
|
||||
fun box() = if (a[0] == null && a[1] == null && a[2] == null) "OK" else "fail"
|
||||
@@ -0,0 +1,9 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
}
|
||||
|
||||
val a1 = arrayOfNulls<Int>(3)
|
||||
val a2 = arrayOfNulls<A>(2)
|
||||
|
||||
fun box() = if (a1.size == 3 && a2.size == 2) "OK" else "fail"
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
val a1 = Array<Int>(3, { i: Int -> i })
|
||||
|
||||
fun box(): String {
|
||||
val i = a1.iterator()
|
||||
if (i.hasNext() != true) return "fail1"
|
||||
if (i.next() != 0) return "fail2"
|
||||
if (i.hasNext() != true) return "fail3"
|
||||
if (i.next() != 1) return "fail4"
|
||||
if (i.hasNext() != true) return "fail5"
|
||||
if (i.next() != 2) return "fail6"
|
||||
if (i.hasNext() != false) return "fail7"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package foo
|
||||
|
||||
import java.util.HashMap
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val x = true
|
||||
val y = false
|
||||
|
||||
val mapWithIntKeys = HashMap<Int, Int>()
|
||||
mapWithIntKeys[1] = 1
|
||||
assertEquals("number", jsTypeOf (mapWithIntKeys.keys.iterator().next()), "mapWithIntKeys")
|
||||
|
||||
val mapWithShortKeys = HashMap<Short, Int>()
|
||||
mapWithShortKeys[1.toShort()] = 1
|
||||
assertEquals("number", jsTypeOf (mapWithShortKeys.keys.iterator().next()), "mapWithShortKeys")
|
||||
|
||||
val mapWithByteKeys = HashMap<Byte, Int>()
|
||||
mapWithByteKeys[1.toByte()] = 1
|
||||
assertEquals("number", jsTypeOf (mapWithByteKeys.keys.iterator().next()), "mapWithByteKeys")
|
||||
|
||||
val mapWithDoubleKeys = HashMap<Double, Int>()
|
||||
mapWithDoubleKeys[1.0] = 1
|
||||
assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "mapWithDoubleKeys")
|
||||
|
||||
// boxed NaNs are not equal, KT-13610
|
||||
// mapWithDoubleKeys.clear()
|
||||
// var dNaN = 0.0 / 0.0
|
||||
// mapWithDoubleKeys[dNaN] = 100
|
||||
// assertEquals(100, mapWithDoubleKeys[dNaN])
|
||||
// assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "dNaN")
|
||||
|
||||
mapWithDoubleKeys.clear()
|
||||
var dPositiveInfinity = +1.0 / 0.0
|
||||
mapWithDoubleKeys[dPositiveInfinity] = 100
|
||||
assertEquals(100, mapWithDoubleKeys[dPositiveInfinity])
|
||||
assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "dPositiveInfinity")
|
||||
|
||||
mapWithDoubleKeys.clear()
|
||||
var dNegativeInfinity = -1.0 / 0.0
|
||||
mapWithDoubleKeys[dNegativeInfinity] = 100
|
||||
assertEquals(100, mapWithDoubleKeys[dNegativeInfinity])
|
||||
assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "dNegativeInfinity")
|
||||
|
||||
val mapWithFloatKeys = HashMap<Float, Int>()
|
||||
mapWithFloatKeys[1.0f] = 1
|
||||
assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "mapWithFloatKeys")
|
||||
|
||||
// boxed NaNs are not equal, KT-13610
|
||||
// mapWithFloatKeys.clear()
|
||||
// var fNaN: Float = 0.0f / 0.0f
|
||||
// mapWithFloatKeys[fNaN] = 100
|
||||
// assertEquals(100, mapWithFloatKeys[fNaN])
|
||||
// assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "fNaN")
|
||||
|
||||
mapWithFloatKeys.clear()
|
||||
var fPositiveInfinity = +1.0f / 0.0f
|
||||
mapWithFloatKeys[fPositiveInfinity] = 100
|
||||
assertEquals(100, mapWithFloatKeys[fPositiveInfinity])
|
||||
assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "fPositiveInfinity")
|
||||
|
||||
mapWithFloatKeys.clear()
|
||||
var NegativeInfinity = -1.0f / 0.0f
|
||||
mapWithFloatKeys[NegativeInfinity] = 100
|
||||
assertEquals(100, mapWithFloatKeys[NegativeInfinity])
|
||||
assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "fNegativeInfinity")
|
||||
|
||||
val mapWithCharKeys = HashMap<Char, Int>()
|
||||
mapWithCharKeys['A'] = 1
|
||||
assertEquals("string", jsTypeOf (mapWithCharKeys.keys.iterator().next()), "mapWithCharKeys")
|
||||
|
||||
val mapWithLongKeys = HashMap<Long, Int>()
|
||||
mapWithLongKeys[1L] = 1
|
||||
assertEquals("object", jsTypeOf (mapWithLongKeys.keys.iterator().next()), "mapWithLongKeys")
|
||||
|
||||
val mapWithBooleanKeys = HashMap<Boolean, Int>()
|
||||
mapWithBooleanKeys[true] = 1
|
||||
assertEquals("boolean", jsTypeOf (mapWithBooleanKeys.keys.iterator().next()), "mapWithBooleanKeys")
|
||||
|
||||
val mapWithStringKeys = HashMap<String, Int>()
|
||||
mapWithStringKeys["key"] = 1
|
||||
assertEquals("string", jsTypeOf (mapWithStringKeys.keys.iterator().next()), "mapWithStringKeys")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
package foo
|
||||
|
||||
import java.util.HashSet
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val x = true
|
||||
val y = false
|
||||
|
||||
val intSet = HashSet<Int>()
|
||||
intSet.add(1)
|
||||
assertEquals("number", jsTypeOf (intSet.iterator().next()), "intSet")
|
||||
|
||||
val shortSet = HashSet<Short>()
|
||||
shortSet.add(1.toShort())
|
||||
assertEquals("number", jsTypeOf (shortSet.iterator().next()), "shortSet")
|
||||
|
||||
val byteSet = HashSet<Byte>()
|
||||
byteSet.add(1.toByte())
|
||||
assertEquals("number", jsTypeOf (byteSet.iterator().next()), "byteSet")
|
||||
|
||||
val doubleSet = HashSet<Double>()
|
||||
doubleSet.add(1.0)
|
||||
assertEquals("number", jsTypeOf (doubleSet.iterator().next()), "doubleSet")
|
||||
|
||||
doubleSet.clear()
|
||||
doubleSet.add(0.0 / 0.0)
|
||||
assertEquals("number", jsTypeOf (doubleSet.iterator().next()), "dNaN")
|
||||
|
||||
doubleSet.clear()
|
||||
doubleSet.add(1.0 / 0.0)
|
||||
assertEquals("number", jsTypeOf (doubleSet.iterator().next()), "dPositiveInfinity")
|
||||
|
||||
doubleSet.clear()
|
||||
doubleSet.add(-1.0 / 0.0)
|
||||
assertEquals("number", jsTypeOf (doubleSet.iterator().next()), "dNegativeInfinity")
|
||||
|
||||
val floatSet = HashSet<Float>()
|
||||
floatSet.add(1.0f)
|
||||
assertEquals("number", jsTypeOf (floatSet.iterator().next()), "floatSet")
|
||||
|
||||
floatSet.clear()
|
||||
floatSet.add(0.0f / 0.0f)
|
||||
assertEquals("number", jsTypeOf (floatSet.iterator().next()), "fNaN")
|
||||
|
||||
floatSet.clear()
|
||||
floatSet.add(+1.0f / 0.0f)
|
||||
assertEquals("number", jsTypeOf (floatSet.iterator().next()), "fPositiveInfinity")
|
||||
|
||||
floatSet.clear()
|
||||
floatSet.add(-1.0f / 0.0f)
|
||||
assertEquals("number", jsTypeOf (floatSet.iterator().next()), "fNegativeInfinity")
|
||||
|
||||
val charSet = HashSet<Char>()
|
||||
charSet.add('A')
|
||||
assertEquals("string", jsTypeOf (charSet.iterator().next()), "charSet")
|
||||
|
||||
val longSet = HashSet<Long>()
|
||||
longSet.add(1L)
|
||||
assertEquals("object", jsTypeOf (longSet.iterator().next()), "longSet")
|
||||
|
||||
val booleanSet = HashSet<Boolean>()
|
||||
booleanSet.add(true)
|
||||
assertEquals("boolean", jsTypeOf (booleanSet.iterator().next()), "booleanSet")
|
||||
|
||||
val stringSet = HashSet<String>()
|
||||
stringSet.add("text")
|
||||
assertEquals("string", jsTypeOf (stringSet.iterator().next()), "stringSet")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package foo
|
||||
|
||||
class A {
|
||||
override fun hashCode() = 23456
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val x = A()
|
||||
val y = A()
|
||||
|
||||
val map = mutableMapOf<A, Int>()
|
||||
map[x] = 1
|
||||
assertEquals(1, map.size)
|
||||
|
||||
map.remove(y)
|
||||
assertEquals(1, map.size)
|
||||
|
||||
map.remove(x)
|
||||
assertEquals(0, map.size)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package foo
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val s = StringBuilder()
|
||||
s.append("a")
|
||||
s.append("b").append("c")
|
||||
s.append('d').append("e")
|
||||
|
||||
if (s.toString() != "abcde") return s.toString()
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user