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,21 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(val args: Array<KClass<*>>)
class O
class K
@Ann(arrayOf(O::class, K::class)) class MyClass
fun box(): String {
val args = MyClass::class.java.getAnnotation(Ann::class.java).args
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}
@@ -0,0 +1,26 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_RUNTIME
// FILE: Test.java
class O {}
class K {}
@Ann(args={O.class, K.class})
class Test {
}
// FILE: array.kt
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(val args: Array<KClass<*>>)
fun box(): String {
val args = Test::class.java.getAnnotation(Ann::class.java).args
val argName1 = args[0].java.simpleName ?: "fail 1"
val argName2 = args[1].java.simpleName ?: "fail 2"
return argName1 + argName2
}
@@ -0,0 +1,18 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(val arg: KClass<*>)
class OK
@Ann(OK::class) class MyClass
fun box(): String {
val argName = MyClass::class.java.getAnnotation(Ann::class.java).arg.simpleName ?: "fail 1"
return argName
}
@@ -0,0 +1,23 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_RUNTIME
// FILE: Test.java
class OK {}
@Ann(arg=OK.class)
class Test {
}
// FILE: basic.kt
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(val arg: KClass<*>)
fun box(): String {
val argName = Test::class.java.getAnnotation(Ann::class.java).arg.java.simpleName ?: "fail 1"
return argName
}
@@ -0,0 +1,15 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KClass
fun box(): String {
try {
String::class.java as KClass<String>
} catch (e: Exception) {
return "OK"
}
return "fail"
}
@@ -0,0 +1,21 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_REFLECT
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(vararg val args: KClass<*>)
class O
class K
@Ann(O::class, K::class) class MyClass
fun box(): String {
val args = MyClass::class.java.getAnnotation(Ann::class.java).args
val argName1 = args[0].simpleName ?: "fail 1"
val argName2 = args[1].simpleName ?: "fail 2"
return argName1 + argName2
}
@@ -0,0 +1,26 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// WITH_RUNTIME
// FILE: Test.java
class O {}
class K {}
@Ann(args={O.class, K.class})
class Test {
}
// FILE: vararg.kt
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(vararg val args: KClass<*>)
fun box(): String {
val args = Test::class.java.getAnnotation(Ann::class.java).args
val argName1 = args[0].java.simpleName ?: "fail 1"
val argName2 = args[1].java.simpleName ?: "fail 2"
return argName1 + argName2
}