JS backend: tests for reflection support

This commit is contained in:
Michael Nedzelsky
2014-07-22 15:21:35 +04:00
parent cc98664832
commit 145aa5a276
70 changed files with 1464 additions and 0 deletions
@@ -0,0 +1,22 @@
package bar
fun topLevelFun(s: String) = "topLevelFun: ${s}";
var topLevelVar = 100
val topLevelVal = 200
class A(val v: String) {
fun memA(s: String) = "memA: ${v} ${s}"
var propVar: Int = 1000
val propVal: Int = 2000
var text: String = "text"
}
fun A.ext1(s: String): String = "A.ext1: ${this.v} ${s}"
var A.extProp: String
get() = "${this.text}"
set(value) {
this.text = value
}
@@ -0,0 +1,29 @@
package foo
import bar.*
fun A.ext2(s: String): String = "A.ext2: ${this.v} ${s}"
fun box(): Boolean {
assertEquals("topLevelFun: A", (::topLevelFun)("A"))
assertEquals("A.ext1: test B", A("test").(A::ext1)("B"))
assertEquals("A.ext2: test B", A("test").(A::ext2)("B"))
assertEquals("memA: test C", A("test").(A::memA)("C"))
assertEquals(100, ::topLevelVar.get())
::topLevelVar.set(500)
assertEquals(500, ::topLevelVar.get())
assertEquals(200, ::topLevelVal.get())
val a = A("test")
assertEquals(1000, (A::propVar).get(a))
A::propVar.set(a, 5000)
assertEquals(5000, (A::propVar).get(a))
assertEquals(2000, (A::propVal).get(a))
assertEquals("text", (A::extProp).get(a))
(A::extProp).set(a, "new text")
assertEquals("new text", (A::extProp).get(a))
return true;
}