Merge boxWithJava testData into box, delete BoxWithJava test
This commit is contained in:
committed by
Alexander Udalov
parent
16a0ddd2fb
commit
f8dfaf4599
+67
@@ -0,0 +1,67 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public String publicMemberJ;
|
||||
private String privateMemberJ;
|
||||
public static String publicStaticJ;
|
||||
private static String privateStaticJ;
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
open class K : J() {
|
||||
public val publicMemberK: String = ""
|
||||
private val privateMemberK: String = ""
|
||||
public val Any.publicMemberExtensionK: String get() = ""
|
||||
private val Any.privateMemberExtensionK: String get() = ""
|
||||
}
|
||||
|
||||
class L : K()
|
||||
|
||||
fun Collection<KProperty<*>>.names(): Set<String> =
|
||||
this.map { it.name }.toSet()
|
||||
|
||||
fun check(c: Collection<KProperty<*>>, names: Set<String>) {
|
||||
assertEquals(names, c.names())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val j = J::class
|
||||
|
||||
check(j.staticProperties,
|
||||
setOf("publicStaticJ", "privateStaticJ"))
|
||||
check(j.declaredMemberProperties,
|
||||
setOf("publicMemberJ", "privateMemberJ"))
|
||||
check(j.declaredMemberExtensionProperties,
|
||||
emptySet())
|
||||
|
||||
check(j.memberProperties, j.declaredMemberProperties.names())
|
||||
check(j.memberExtensionProperties, emptySet())
|
||||
|
||||
val k = K::class
|
||||
|
||||
check(k.staticProperties,
|
||||
emptySet())
|
||||
check(k.declaredMemberProperties,
|
||||
setOf("publicMemberK", "privateMemberK"))
|
||||
check(k.declaredMemberExtensionProperties,
|
||||
setOf("publicMemberExtensionK", "privateMemberExtensionK"))
|
||||
|
||||
check(k.memberProperties, setOf("publicMemberJ") + k.declaredMemberProperties.names())
|
||||
check(k.memberExtensionProperties, k.declaredMemberExtensionProperties.names())
|
||||
|
||||
|
||||
val l = L::class
|
||||
|
||||
check(l.staticProperties, emptySet())
|
||||
check(l.declaredMemberProperties, emptySet())
|
||||
check(l.declaredMemberExtensionProperties, emptySet())
|
||||
check(l.memberProperties, setOf("publicMemberJ", "publicMemberK"))
|
||||
check(l.memberExtensionProperties, setOf("publicMemberExtensionK"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public String result = null;
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
class K : J()
|
||||
|
||||
fun box(): String {
|
||||
val k = K()
|
||||
val p = K::result
|
||||
if (p.get(k) != null) return "Fail"
|
||||
p.set(k, "OK")
|
||||
return p.get(k)
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
static String x;
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun box(): String {
|
||||
val f = J::x
|
||||
assertEquals("x", f.name)
|
||||
|
||||
assertEquals(f, J::class.members.single { it.name == "x" })
|
||||
|
||||
f.set("OK")
|
||||
assertEquals("OK", J.x)
|
||||
assertEquals("OK", f.getter())
|
||||
|
||||
return f.get()
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J extends K {
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
public open class K {
|
||||
var prop: String = ":("
|
||||
|
||||
val Int.ext: Int get() = this
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val j = J()
|
||||
|
||||
val prop = J::prop
|
||||
if (prop !is KMutableProperty1<*, *>) return "Fail instanceof"
|
||||
if (prop.name != "prop") return "Fail name: ${prop.name}"
|
||||
if (prop.get(j) != ":(") return "Fail get before: ${prop.get(j)}"
|
||||
prop.set(j, ":)")
|
||||
if (prop.get(j) != ":)") return "Fail get after: ${prop.get(j)}"
|
||||
|
||||
|
||||
if (prop == K::prop) return "Fail J::prop == K::prop (these are different properties)"
|
||||
|
||||
|
||||
val klass = J::class.java.kotlin
|
||||
if (klass.declaredMemberProperties.isNotEmpty()) return "Fail: declaredMemberProperties should be empty"
|
||||
if (klass.declaredMemberExtensionProperties.isNotEmpty()) return "Fail: declaredMemberExtensionProperties should be empty"
|
||||
|
||||
val prop2 = klass.memberProperties.firstOrNull { it.name == "prop" } ?: "Fail: no 'prop' property in memberProperties"
|
||||
if (prop != prop2) return "Fail: property references from :: and from properties differ: $prop != $prop2"
|
||||
if (prop2 !is KMutableProperty1<*, *>) return "Fail instanceof 2"
|
||||
(prop2 as KMutableProperty1<J, String>).set(j, "::)")
|
||||
if (prop.get(j) != "::)") return "Fail get after 2: ${prop.get(j)}"
|
||||
|
||||
|
||||
val ext = klass.memberExtensionProperties.firstOrNull { it.name == "ext" } ?: "Fail: no 'ext' property in memberExtensionProperties"
|
||||
ext as KProperty2<J, Int, Int>
|
||||
val fortyTwo = ext.get(j, 42)
|
||||
if (fortyTwo != 42) return "Fail ext get: $fortyTwo"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
private String result = "Fail";
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
fun box(): String {
|
||||
val a = J()
|
||||
val p = J::class.members.single { it.name == "result" } as KMutableProperty1<J, String>
|
||||
p.isAccessible = true
|
||||
p.set(a, "OK")
|
||||
return p.get(a)
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
private static String result = "Fail";
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
fun box(): String {
|
||||
val a = J()
|
||||
val p = J::class.members.single { it.name == "result" } as KMutableProperty0<String>
|
||||
p.isAccessible = true
|
||||
p.set("OK")
|
||||
return p.get()
|
||||
}
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public String foo = "";
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
class K : J() {
|
||||
fun getFoo(): String = "K"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val j = J()
|
||||
val x = J::foo
|
||||
x.set(j, "J")
|
||||
assertEquals("J", x.get(j))
|
||||
|
||||
val k = K()
|
||||
val y = K::foo
|
||||
y.set(k, "K")
|
||||
assertEquals("K", y.get(k))
|
||||
assertEquals("K", x.get(k))
|
||||
|
||||
val z = K::getFoo
|
||||
assertEquals("K", z.invoke(k))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: J.java
|
||||
|
||||
public class J implements K {
|
||||
private String foo;
|
||||
|
||||
@Override
|
||||
public String getFoo() {
|
||||
return foo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFoo(String s) {
|
||||
foo = s;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.reflect.KParameter
|
||||
|
||||
interface K {
|
||||
var foo: String
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val p = J::foo
|
||||
assertEquals("foo", p.name)
|
||||
|
||||
if (p.parameters.size != 1) return "Should have only 1 parameter"
|
||||
if (p.parameters.single().kind != KParameter.Kind.INSTANCE) return "Should have an instance parameter"
|
||||
|
||||
if (J::class.members.none { it == p }) return "No foo in members"
|
||||
|
||||
val j = J()
|
||||
p.setter.call(j, "OK")
|
||||
return p.getter.call(j)
|
||||
}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// FILE: J.java
|
||||
|
||||
public class J extends K {
|
||||
public final int value = 42;
|
||||
}
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
open class K
|
||||
|
||||
fun box(): String {
|
||||
val f = J::value
|
||||
val a = J()
|
||||
return if (f.get(a) == 42) "OK" else "Fail: ${f.get(a)}"
|
||||
}
|
||||
Reference in New Issue
Block a user