backend/tests: Add blackbox tests from Kotlin JVM

Added tests from testData/codegen/box directory. There are blackbox tests
in other directories and they are to be added.
This commit is contained in:
Ilya Matveev
2017-01-12 19:43:20 +07:00
parent d5988297b1
commit 1b553ebfaf
2643 changed files with 66666 additions and 0 deletions
@@ -0,0 +1,38 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KFunction
import kotlin.reflect.jvm.*
import kotlin.test.*
class C {
companion object {
@JvmStatic
fun foo(s: String): Int = s.length
}
}
fun box(): String {
val foo = C.Companion::class.members.single { it.name == "foo" } as KFunction<*>
val j = foo.javaMethod ?: return "Fail: no Java method found for C::foo"
assertEquals(3, j.invoke(C, "abc"))
val k = j.kotlinFunction ?: return "Fail: no Kotlin function found for Java method C::foo"
assertEquals(3, k.call(C, "def"))
val staticMethod = C::class.java.getDeclaredMethod("foo", String::class.java)
val k2 = staticMethod.kotlinFunction ?:
return "Fail: no Kotlin function found for static bridge for @JvmStatic method in companion object C::foo"
assertEquals(3, k2.call(C, "ghi"))
assertFailsWith(NullPointerException::class) { k2.call(null, "")!! }
val j2 = k2.javaMethod
assertEquals(j, j2)
return "OK"
}
@@ -0,0 +1,25 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KFunction
import kotlin.reflect.jvm.*
import kotlin.test.assertEquals
object O {
@JvmStatic
fun foo(s: String): Int = s.length
}
fun box(): String {
val foo = O::class.members.single { it.name == "foo" } as KFunction<*>
val j = foo.javaMethod ?: return "Fail: no Java method found for O::foo"
assertEquals(3, j.invoke(null, "abc"))
val k = j.kotlinFunction ?: return "Fail: no Kotlin function found for Java method O::foo"
assertEquals(3, k.call(O, "def"))
return "OK"
}