JS: move more test to box tests
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
package foo
|
||||
|
||||
class Test() {
|
||||
var a: Int = 100
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var test = Test()
|
||||
test.a = 1
|
||||
return if (1 == test.a) "OK" else "fail: ${test.a}"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package foo
|
||||
|
||||
var a = 0
|
||||
|
||||
class A() {
|
||||
init {
|
||||
a++
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var c = A()
|
||||
c = A()
|
||||
c = A()
|
||||
return if (a == 3) "OK" else "fail: $a"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
class Test() {
|
||||
val a: Int
|
||||
get() {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var test = Test()
|
||||
return if (test.a == 5) "OK" else "fail: ${test.a}"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package foo
|
||||
|
||||
class Test() {
|
||||
var a: Int = 5
|
||||
set(b: Int) {
|
||||
field = 3
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var test = Test()
|
||||
test.a = 5
|
||||
return if (test.a == 3) "OK" else "fail: ${test.a}"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// FILE: enumerable.kt
|
||||
package foo
|
||||
|
||||
@native
|
||||
fun <T> _enumerate(o: T): T = noImpl
|
||||
|
||||
@native
|
||||
fun <T> _findFirst(o: Any): T = noImpl
|
||||
|
||||
class Test() {
|
||||
val a: Int = 100
|
||||
val b: String = "s"
|
||||
}
|
||||
|
||||
class P() {
|
||||
@enumerable
|
||||
val a: Int = 100
|
||||
val b: String = "s"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val test = _enumerate(Test())
|
||||
val p = _enumerate(P())
|
||||
if (100 != test.a) return "fail1: ${test.a}"
|
||||
if ("s" != test.b) return "fail2: ${test.b}"
|
||||
if (p.a != 100) return "fail3: ${p.a}"
|
||||
|
||||
val result = _findFirst<Int>(object {
|
||||
val test = 100
|
||||
})
|
||||
if (result != 100) return "fail4: $result"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// FILE: enumerate.js
|
||||
function _enumerate(o) {
|
||||
var r = {};
|
||||
for (var p in o) {
|
||||
r[p] = o[p];
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
function _findFirst(o) {
|
||||
for (var p in o) {
|
||||
return o[p];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package foo
|
||||
|
||||
fun f(a: Int?, b: Int.(Int) -> Int) = a?.b(2)
|
||||
|
||||
fun box(): String {
|
||||
val c1 = f (null) {
|
||||
it + this
|
||||
} != null
|
||||
if (c1) return "fail1"
|
||||
if (f(3) {
|
||||
it + this
|
||||
} != 5) return "fail2"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
class A {
|
||||
var a: Int = 0
|
||||
get() = field + 1
|
||||
set(arg) {
|
||||
field = arg
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
a.a = 1
|
||||
if (a.a != 2) return "A().a != 2, it: ${a.a}"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
class Test() {
|
||||
val a: Int = 100
|
||||
var b: Int = a
|
||||
val c: Int = a + b
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val test = Test()
|
||||
if (100 != test.a) return "fail1: ${test.a}"
|
||||
if (100 != test.b) return "fail2: ${test.b}"
|
||||
if (200 != test.c) return "fail3: ${test.c}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package foo
|
||||
|
||||
class A {
|
||||
val a: Int
|
||||
val aa: Int
|
||||
get() {
|
||||
return field
|
||||
}
|
||||
|
||||
var aR = 0
|
||||
var aaR = 0
|
||||
init {
|
||||
a = 1
|
||||
aa = 2
|
||||
|
||||
aR = a
|
||||
aaR = aa
|
||||
}
|
||||
}
|
||||
|
||||
class B {
|
||||
private val a: Int
|
||||
private val aa: Int
|
||||
get() {
|
||||
return field
|
||||
}
|
||||
|
||||
var aR = 0
|
||||
var aaR = 0
|
||||
init {
|
||||
a = 3
|
||||
aa = 4
|
||||
|
||||
aR = a
|
||||
aaR = aa
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
|
||||
if (a.a != 1) return "a.a != 1, it: ${a.a}"
|
||||
if (a.aa != 2) return "a.aa != 2, it: ${a.aa}"
|
||||
if (a.aR != 1) return "a.aR != 1, it: ${a.aR}"
|
||||
if (a.aaR != 2) return "a.aaR != 2, it: ${a.aaR}"
|
||||
|
||||
val b = B()
|
||||
if (b.aR != 3) return "b.aR != 3, it: ${b.aR}"
|
||||
if (b.aaR != 4) return "b.aaR != 4, it: ${b.aaR}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package foo
|
||||
|
||||
val PACKAGE = "kotlin.modules.JS_TESTS.foo"
|
||||
|
||||
class A
|
||||
@native val Any.__proto__: String get() = noImpl
|
||||
@native val A.__proto__: String get() = noImpl
|
||||
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
val any: Any = a
|
||||
val protoA = eval("$PACKAGE.A.prototype")
|
||||
if (a.__proto__ != any.__proto__ || a.__proto__ != protoA)
|
||||
return "a.__proto__ != any.__proto__ /*${a.__proto__ != any.__proto__}*/ || a.__proto__ != $PACKAGE.A.prototype /*${a.__proto__ != protoA}*/"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package foo
|
||||
|
||||
interface I {
|
||||
fun test(): String
|
||||
}
|
||||
|
||||
class P : I {
|
||||
override fun test(): String {
|
||||
return "O" + test("K")
|
||||
}
|
||||
|
||||
private fun test(p: String): String {
|
||||
return p
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return P().test()
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
var a: Int
|
||||
|
||||
|
||||
get() {
|
||||
return 5
|
||||
}
|
||||
set(b) {
|
||||
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return if (a == 5) "OK" else "fail: $a"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package foo
|
||||
|
||||
val b = 3
|
||||
|
||||
fun box() = if (b == 3) "OK" else "fail: $b"
|
||||
@@ -0,0 +1,8 @@
|
||||
package foo
|
||||
|
||||
var b = 3
|
||||
|
||||
fun box(): String {
|
||||
b = 2
|
||||
return if (b == 2) "OK" else "fail: $b"
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package foo
|
||||
|
||||
object A {
|
||||
private val foo = 23
|
||||
|
||||
fun bar(): Int {
|
||||
// Erase object so that we ensure that access to 'foo' property is performed via 'this'
|
||||
// It's no crucial from runtime standpoind, but JS code looks more concise and natural this way.
|
||||
erase()
|
||||
return foo
|
||||
}
|
||||
|
||||
fun erase() {
|
||||
js("_.foo.A = null")
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var result = A.bar()
|
||||
if (result != 23) return "failed: ${result}"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// See https://youtrack.jetbrains.com/issue/KT-10785
|
||||
package foo
|
||||
|
||||
class A(var x: Int) {
|
||||
operator fun plusAssign(other: A) {
|
||||
x += other.x
|
||||
}
|
||||
}
|
||||
|
||||
object B {
|
||||
private var holder = A(42)
|
||||
|
||||
val foo: A
|
||||
get() = holder
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
B.foo += A(23)
|
||||
if (B.foo.x != 65) return "failed: ${B.foo.x}"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
class Test() {
|
||||
var a: Int = 1
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var b = Test()
|
||||
assertEquals(1, b.a)
|
||||
b.a = 100
|
||||
assertEquals(100, b.a)
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
val a: Int = 1
|
||||
}
|
||||
|
||||
class B() {
|
||||
val b: Int = 2
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (A().a != 1) return "fail1"
|
||||
if (B().b != 2) return "fail2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user