tests: Update external tests (1.1.2-dev-393)
This commit is contained in:
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
import kotlin.reflect.KParameter
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class Outer(val s1: String) {
|
||||
inner class Inner(val s2: String, val s3: String = "K") {
|
||||
val result = s1 + s2 + s3
|
||||
}
|
||||
}
|
||||
|
||||
fun KParameter.check(name: String) {
|
||||
assertEquals(name, this.name!!)
|
||||
assertEquals(KParameter.Kind.VALUE, this.kind)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val ctor = Outer("O")::Inner
|
||||
val ctorPararms = ctor.parameters
|
||||
|
||||
ctorPararms[0].check("s2")
|
||||
ctorPararms[1].check("s3")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
// TODO: investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
object Host {
|
||||
fun foo(i: Int, s: String) {}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val fooParams = Host::foo.parameters
|
||||
|
||||
assertEquals(2, fooParams.size)
|
||||
|
||||
assertEquals("i", fooParams[0].name)
|
||||
assertEquals(Int::class.java, fooParams[0].type.javaType)
|
||||
|
||||
assertEquals("s", fooParams[1].name)
|
||||
assertEquals(String::class.java, fooParams[1].type.javaType)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// TODO: investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
import kotlin.test.*
|
||||
|
||||
class C {
|
||||
fun foo() {}
|
||||
var bar = "OK"
|
||||
}
|
||||
|
||||
fun C.extFun(i: Int) {}
|
||||
|
||||
fun KParameter.check(name: String) {
|
||||
assertEquals(name, this.name!!)
|
||||
assertEquals(KParameter.Kind.VALUE, this.kind)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val cFoo = C()::foo
|
||||
val cBar = C()::bar
|
||||
val cExtFun = C()::extFun
|
||||
|
||||
assertEquals(0, cFoo.parameters.size)
|
||||
assertEquals(0, cBar.getter.parameters.size)
|
||||
assertEquals(1, cBar.setter.parameters.size)
|
||||
|
||||
assertEquals(1, cExtFun.parameters.size)
|
||||
cExtFun.parameters[0].check("i")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public void bar(int x) {}
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.full.findParameterByName
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
|
||||
fun foo(x: Int) = x
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(::foo.parameters.single(), ::foo.findParameterByName("x"))
|
||||
assertNull(::foo.findParameterByName("y"))
|
||||
|
||||
assertNull(J::bar.findParameterByName("x"))
|
||||
assertNull(J::bar.findParameterByName("y"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo(bar: String): Int = bar.length
|
||||
|
||||
class A(val c: String) {
|
||||
fun foz(baz: Int) {}
|
||||
|
||||
fun Double.mext(mez: Long) {}
|
||||
}
|
||||
|
||||
fun Int.qux(zux: String) {}
|
||||
|
||||
fun checkParameters(f: KFunction<*>, names: List<String?>) {
|
||||
val params = f.parameters
|
||||
assertEquals(names, params.map { it.name })
|
||||
assertEquals(params.indices.toList(), params.map { it.index })
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
checkParameters(::box, listOf())
|
||||
checkParameters(::foo, listOf("bar"))
|
||||
checkParameters(A::foz, listOf(null, "baz"))
|
||||
checkParameters(Int::qux, listOf(null, "zux"))
|
||||
|
||||
checkParameters(A::class.functions.single { it.name == "mext" }, listOf(null, null, "mez"))
|
||||
|
||||
checkParameters(::A, listOf("c"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.full.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertNull
|
||||
|
||||
class A {
|
||||
fun String.memExt(param: Int) {}
|
||||
}
|
||||
|
||||
fun topLevel() {}
|
||||
|
||||
fun Int.ext(vararg o: Any) {}
|
||||
|
||||
fun box(): String {
|
||||
A::class.members.single { it.name == "memExt" }.let {
|
||||
assertNotNull(it.instanceParameter)
|
||||
assertNotNull(it.extensionReceiverParameter)
|
||||
assertEquals(1, it.valueParameters.size)
|
||||
}
|
||||
|
||||
::topLevel.let {
|
||||
assertNull(it.instanceParameter)
|
||||
assertNull(it.extensionReceiverParameter)
|
||||
assertEquals(0, it.valueParameters.size)
|
||||
}
|
||||
|
||||
Int::ext.let {
|
||||
assertNull(it.instanceParameter)
|
||||
assertNotNull(it.extensionReceiverParameter)
|
||||
assertEquals(1, it.valueParameters.size)
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class A {
|
||||
fun <T, U : Any> foo(p1: String, p2: String?, p3: T, p4: U, p5: U?) { }
|
||||
}
|
||||
|
||||
fun Any?.ext() {}
|
||||
|
||||
fun box(): String {
|
||||
val ps = A::class.declaredFunctions.single().parameters.map { it.type.isMarkedNullable }
|
||||
assertEquals(listOf(false, false, true, false, false, true), ps)
|
||||
|
||||
assertTrue(Any?::ext.parameters.single().type.isMarkedNullable)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
open class A {
|
||||
open fun foo(x: Int, y: Int = 1) {}
|
||||
}
|
||||
|
||||
class B : A() {
|
||||
override fun foo(x: Int, y: Int) {}
|
||||
}
|
||||
|
||||
class C : A()
|
||||
|
||||
|
||||
fun Int.extFun() {}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(listOf(false, false, true), A::foo.parameters.map { it.isOptional })
|
||||
assertEquals(listOf(false, false, true), B::foo.parameters.map { it.isOptional })
|
||||
assertEquals(listOf(false, false, true), C::foo.parameters.map { it.isOptional })
|
||||
|
||||
assertFalse(Int::extFun.parameters.single().isOptional)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public @interface J {
|
||||
short s();
|
||||
long j();
|
||||
boolean z();
|
||||
int i();
|
||||
float f();
|
||||
char c();
|
||||
double d();
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.KParameter
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun box(): String {
|
||||
val ctor = J::class.constructors.single()
|
||||
|
||||
// We sort parameters by name for consistency
|
||||
assertEquals(listOf("c", "d", "f", "i", "j", "s", "z"), ctor.parameters.map { it.name })
|
||||
assert(ctor.parameters.all { it.kind == KParameter.Kind.VALUE })
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
void foo(String s, int i) {}
|
||||
|
||||
static void bar(J j) {}
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(listOf(null, null, null), J::foo.parameters.map { it.name })
|
||||
assertEquals(listOf(null), J::bar.parameters.map { it.name })
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.KParameter.Kind.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class A {
|
||||
fun Int.foo(x: String) {}
|
||||
|
||||
inner class Inner(s: String) {}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val foo = A::class.memberExtensionFunctions.single()
|
||||
|
||||
assertEquals(listOf(INSTANCE, EXTENSION_RECEIVER, VALUE), foo.parameters.map { it.kind })
|
||||
assertEquals(listOf(INSTANCE, VALUE), A::Inner.parameters.map { it.kind })
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
// WITH_REFLECT
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
var default: Int = 0
|
||||
|
||||
var defaultAnnotated: Int = 0
|
||||
public set
|
||||
|
||||
var custom: Int = 0
|
||||
set(myName: Int) {}
|
||||
|
||||
fun checkPropertySetterParam(property: KMutableProperty<*>, name: String?) {
|
||||
val parameter = property.setter.parameters.single()
|
||||
assertEquals(0, parameter.index)
|
||||
assertEquals(name, parameter.name)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
checkPropertySetterParam(::default, null)
|
||||
checkPropertySetterParam(::defaultAnnotated, null)
|
||||
checkPropertySetterParam(::custom, "myName")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user