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
+34
View File
@@ -0,0 +1,34 @@
var bar = {
boo: function (a) {
return "bar.boo(" + a + ")";
},
invoke: function () {
return renderInvocation("bar.invoke", arguments)
},
num: 42,
str: "ok!",
obj: {
name: "bar.obj"
},
1: {
one: "1.one"
},
5: 0,
0 : "zero",
get: function(a, b, c) {
return renderInvocation("bar.get", arguments)
},
set: function(a, b, c) {
return renderInvocation("bar.set", arguments)
}
};
var arr = [{ it : "is", 1 : "object" }, 65, undefined, -2, "Yo!"];
function baz() {
return renderInvocation("baz", arguments)
}
function renderInvocation(prefix, args) {
return prefix + "(" + Array.prototype.slice.call(args) + ")"
}
+18
View File
@@ -0,0 +1,18 @@
package foo
@native
var bar: dynamic = noImpl
@native
var arr: dynamic = noImpl
@native
var baz: dynamic = noImpl
object t {
override fun toString() = "object t {}"
}
object n {
fun valueOf() = 42
}
@@ -0,0 +1,20 @@
package foo
fun box(): String {
val a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
assertEquals(60, a * 5)
assertEquals(-21.4, a - b)
assertEquals("12text", a + c)
assertEquals("text foo", c + " foo")
assertEquals("text33.4", c + b)
assertEquals("12[object Object]", a + bar)
assertEquals(2, a % 5)
assertEquals("42.35928143712575text[object Object]", a / b + d * n + c + bar)
assertEquals("12text[object Object]4233.4", a + c + bar + n + b)
return "OK"
}
+10
View File
@@ -0,0 +1,10 @@
package foo
fun box(): String {
assertEquals("bar.get()", bar.get())
assertEquals("bar.get(some text)", bar.get("some text"))
assertEquals("bar.get(1,2,3)", bar.get(1, 2, 3))
assertEquals("bar.get(1,second,2,3)", bar.get(1, "second", 2, 3))
return "OK"
}
+10
View File
@@ -0,0 +1,10 @@
package foo
fun box(): String {
assertEquals("bar.boo(23)", bar.boo(23))
assertEquals("bar.boo(Hello)", bar.boo("Hello"))
assertEquals("bar.boo(object t {})", bar.boo(t))
assertEquals("bar.boo(null)", bar.boo(null))
return "OK"
}
+10
View File
@@ -0,0 +1,10 @@
package foo
fun box(): String {
assertEquals("bar.set()", bar.set())
assertEquals("bar.set(some text)", bar.set("some text"))
assertEquals("bar.set(1,2,3)", bar.set(1, 2, 3))
assertEquals("bar.set(1,second,2,3)", bar.set(1, "second", 2, 3))
return "OK"
}
+20
View File
@@ -0,0 +1,20 @@
package foo
fun box(): String {
val a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
testFalse { a > b }
testTrue { b <= 34 }
testTrue { c >= "text" }
testFalse { c <= "abc" }
testTrue { d >= 1 }
testFalse { d <= 0 }
testTrue { d && true }
testTrue { false || d }
testFalse { d && a < c }
return "OK"
}
+47
View File
@@ -0,0 +1,47 @@
package foo
object f {
var equalsCalled = 0
override fun equals(other: Any?): Boolean {
equalsCalled++
if (equalsCalled > 1) return false
return super.equals(other)
}
}
fun box(): String {
val a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
val v: dynamic = 42
val tt: dynamic = "object t {}"
testFalse { a == 34 }
testFalse { a == "34" }
testTrue { a == 12 }
testTrue { a == "12" }
testFalse { a != 12 }
testFalse { a != "12" }
testTrue { c == "text" }
testTrue { d == 1 }
testFalse { d == 0 }
testFalse { c != "text" }
testTrue { v == n }
testTrue { tt == t }
testFalse { v == bar }
testTrue { n != bar }
testFalse { a.equals(34) }
testFalse { a.equals("34") }
testTrue { a.equals(12) }
testFalse { a.equals("12") }
val ff: dynamic = f
testFalse { ff.equals(v) }
assertEquals(1, f.equalsCalled)
return "OK"
}
+36
View File
@@ -0,0 +1,36 @@
package foo
fun box(): String {
assertEquals(42, bar["num"])
assertEquals("ok!", bar["str"])
assertEquals(bar.obj, bar["obj"])
assertEquals("zero", bar[0])
assertEquals("e", bar[0][1])
assertEquals(0, bar[5])
assertEquals("1.one", bar[1].one)
assertEquals("bar.obj", bar.obj["name"])
assertEquals("bar.obj", bar["obj"]["name"])
assertEquals("baz", baz["name"])
assertEquals(0, baz["length"])
assertEquals("is", arr["0"].it)
assertEquals("object", arr["0"][1])
assertEquals("is", arr[0]["it"])
assertEquals(undefined, arr[2])
assertEquals(-2, arr[3])
assertEquals(5, arr["length"])
assertEquals(undefined, bar["num0"])
assertEquals(undefined, bar["STR"])
assertEquals(undefined, bar[2])
assertEquals(undefined, bar.obj["foo"])
assertEquals(undefined, bar["obj"].foo)
assertEquals(undefined, bar["obj"]["foo"])
assertEquals(undefined, baz[3])
assertEquals(undefined, baz["function"])
assertEquals(undefined, arr["6"])
assertEquals(undefined, arr[7])
assertEquals(undefined, arr[10])
assertEquals(undefined, arr["name"])
return "OK"
}
+28
View File
@@ -0,0 +1,28 @@
package foo
fun box(): String {
val a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
val v: dynamic = 42
val tt: dynamic = "object t {}"
testFalse { a === 34 }
testFalse { a === "34" }
testTrue { a === 12 }
testFalse { a === "12" }
testFalse { a !== 12 }
testTrue { a !== "12" }
testTrue { c === "text" }
testFalse { d === 1 }
testFalse { d === 0 }
testFalse { c !== "text" }
testFalse { v === n }
testFalse { tt === t }
testFalse { v === bar }
testTrue { n !== bar }
return "OK"
}
+57
View File
@@ -0,0 +1,57 @@
package foo
fun box(): String {
testTrue { "num" in bar }
testTrue { "str" in bar }
testTrue { "obj" in bar }
testTrue { 0 in bar }
testTrue { 5 in bar }
testTrue { 1 in bar }
testTrue { "name" in bar.obj }
testTrue { "name" in baz }
testTrue { "length" in baz }
testTrue { "0" in arr }
testTrue { 0 in arr }
testTrue { 2 in arr }
testTrue { 3 in arr }
testTrue { "length" in arr }
testFalse { "num" !in bar }
testFalse { "str" !in bar }
testFalse { "obj" !in bar }
testFalse { 0 !in bar }
testFalse { 5 !in bar }
testFalse { 1 !in bar }
testFalse { "name" !in bar.obj }
testFalse { "name" !in baz }
testFalse { "length" !in baz }
testFalse { "0" !in arr }
testFalse { 0 !in arr }
testFalse { 2 !in arr }
testFalse { 3 !in arr }
testFalse { "length" !in arr }
testFalse { "num0" in bar }
testFalse { "STR" in bar }
testFalse { 2 in bar }
testFalse { "foo" in bar.obj }
testFalse { 3 in baz }
testFalse { "function" in baz }
testFalse { "6" in arr }
testFalse { 7 in arr }
testFalse { 10 in arr }
testFalse { "name" in arr }
testTrue { "num0" !in bar }
testTrue { "STR" !in bar }
testTrue { 2 !in bar }
testTrue { "foo" !in bar.obj }
testTrue { 3 !in baz }
testTrue { "function" !in baz }
testTrue { "6" !in arr }
testTrue { 7 !in arr }
testTrue { 10 !in arr }
testTrue { "name" !in arr }
return "OK"
}
@@ -0,0 +1,28 @@
package foo
fun box(): String {
var a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
assertEquals(11, --a)
assertEquals(11, a)
assertEquals(11, a--)
assertEquals(10, a)
assertEquals(10, a++)
assertEquals(11, a)
assertEquals(12, ++a)
assertEquals(12, a)
assertEquals(32.4, --b)
assertEquals(32.4, b)
assertEquals(32.4, b--)
assertEquals(31.4, b)
assertEquals(31.4, b++)
assertEquals(32.4, b)
assertEquals(33.4, ++b)
assertEquals(33.4, b)
return "OK"
}
+10
View File
@@ -0,0 +1,10 @@
package foo
fun box(): String {
assertEquals("bar.boo(23)", bar boo 23)
assertEquals("bar.boo(Hello)", bar boo "Hello")
assertEquals("bar.boo(object t {})", bar boo t)
assertEquals("bar.boo(null)", bar boo null)
return "OK"
}
+9
View File
@@ -0,0 +1,9 @@
package foo
fun box(): String {
assertEquals("bar.invoke(32,object t {})", bar.invoke(32, t))
assertEquals("bar.invoke(77)", bar invoke 77)
assertEquals("baz(object t {},object t {})", baz(t, t))
return "OK"
}
+23
View File
@@ -0,0 +1,23 @@
// FILE: is.kt
package foo
class A
@native
class B
fun box(): String {
val a: dynamic = A()
testTrue { a is A }
testFalse { a is B }
val b: dynamic = B()
testTrue { b is B }
testFalse { b is A }
return "OK"
}
// FILE: is.js
function B() {
}
@@ -0,0 +1,32 @@
package foo
enum class Type {
NUMBER,
STRING,
BOOLEAN,
OBJECT
}
fun test(a: dynamic, actualType: Type) {
assertEquals(actualType == Type.NUMBER, a is Int, "$a is Int")
assertEquals(actualType == Type.NUMBER, a is Number, "$a is Number")
assertEquals(actualType == Type.NUMBER, a is Double, "$a is Double")
assertEquals(actualType == Type.BOOLEAN, a is Boolean, "$a is Boolean")
assertEquals(actualType == Type.STRING, a is String, "$a is String")
}
fun box(): String {
test(1, Type.NUMBER)
test(12.3, Type.NUMBER)
test(12.3f, Type.NUMBER)
test("text", Type.STRING)
test(true, Type.BOOLEAN)
test(false, Type.BOOLEAN)
test(object {}, Type.OBJECT)
return "OK"
}
+32
View File
@@ -0,0 +1,32 @@
package foo
fun testFor(expected: Int, d: dynamic, case: String) {
var actual = 0
for (v in d) {
actual += v as Int
}
assertEquals(expected, actual, "testFor on $case")
}
fun testIterator(expected: Int, d: dynamic, case: String) {
var actual = 0
val it = d.iterator()
while (it.hasNext()) {
actual += it.next() as Int
}
assertEquals(expected, actual, "testIterator on $case")
}
fun test(expected: Int, d: dynamic, case: String) {
testFor(expected, d, case)
testIterator(expected, d, case)
}
fun box(): String {
test(6, arrayOf(1, 2, 3), "array")
test(64, byteArrayOf(42, 22), "byte array")
test(66, listOf(55, 3, 8), "list")
test(167, setOf(55, 3, 8, 101), "set")
return "OK"
}
+26
View File
@@ -0,0 +1,26 @@
package foo
fun assertContains(expectedName: String, f: () -> Unit) {
val s = f.toString()
assertTrue(s.contains(expectedName), "\"$s\" dosn't contain \"$expectedName\"")
}
fun box(): String {
val d: dynamic = bar
val a = {
val somethingBefore = 1
d.somethingBefore
}
assertContains("var somethingBefore = 1;", a)
val b = {
d.somethingAfter
val somethingAfter = 1
}
assertContains("var somethingAfter = 1;", b)
return "OK"
}
@@ -0,0 +1,25 @@
package foo
fun box(): String {
var a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
a += d
assertEquals(13, a)
c += a
assertEquals("text13", c)
a %= 7
assertEquals(6, a)
b -= 32
assertEquals(1.3999999999999986, b)
b *= n
assertEquals(58.79999999999994, b)
b /= a
assertEquals(9.79999999999999, b)
c += a * 3 + b / n
assertEquals("text1318.233333333333334", c)
return "OK"
}
+38
View File
@@ -0,0 +1,38 @@
package foo
fun box(): String {
assertEquals(42, bar.num)
assertEquals("ok!", bar.str)
assertEquals("bar.obj", bar.obj.name)
assertEquals("baz", baz.name)
assertEquals(undefined, bar.num0)
assertEquals(undefined, bar.str0)
assertEquals(undefined, bar.obj.noname)
assertEquals(undefined, baz.boo)
bar.num = 22
assertEquals(22, bar.num)
bar.str = undefined
assertEquals(undefined, bar.str)
bar.obj.name = "new bar.obj"
assertEquals("new bar.obj", bar.obj.name)
bar.num0 = 100
assertEquals(100, bar.num0)
bar.str0 = "new str"
assertEquals("new str", bar.str0)
bar.obj.noname = "noname value"
assertEquals("noname value", bar.obj.noname)
baz.boo = "baz"
assertEquals("baz", baz.boo)
return "OK"
}
+62
View File
@@ -0,0 +1,62 @@
package foo
fun box(): String {
bar["num"] = "some"
assertEquals("some", bar["num"])
bar["str"] = "OK!"
assertEquals("OK!", bar["str"])
var tmp = bar["obj"]
bar["obj"] = bar[0]
bar[0] = tmp
assertEquals("zero", bar["obj"])
assertEquals(tmp, bar[0])
assertEquals("bar.obj", bar[0].name)
bar[5] = 27
assertEquals(27, bar[5])
bar[0]["name"] = "new name"
assertEquals("new name", bar[0]["name"])
arr["0"].it = 23
assertEquals(23, arr["0"].it)
arr[0][1] = "ooo"
assertEquals("ooo", arr[0][1])
arr[2] = 37
assertEquals(37, arr[2])
arr[3] = 77
assertEquals(77, arr[3])
arr["length"] = 3
assertEquals(3, arr["length"])
bar["num0"] = "new value"
assertEquals("new value", bar["num0"])
bar["STR"] = 12
assertEquals(12, bar["STR"])
bar[2] = "bar[2]"
assertEquals("bar[2]", bar[2])
arr["6"] = "0"
assertEquals("0", arr["6"])
assertEquals(7, arr.length)
arr[10] = 15
assertEquals(undefined, arr[7])
assertEquals(15, arr[10])
assertEquals(11, arr.length)
arr["name"] = "My Array"
assertEquals("My Array", arr["name"])
return "OK"
}
@@ -0,0 +1,20 @@
package foo
fun box(): String {
val a: dynamic = 12
var b: dynamic = 33.4
var c: dynamic = "text"
val d: dynamic = true
assertEquals(-12, -a)
assertEquals(33.4, +b)
testTrue { d }
testFalse { !d }
testTrue { !!d }
testFalse { !a }
testTrue { !!a }
testFalse { !b }
testTrue { !!b }
return "OK"
}