mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
This patch mutes the following test categories:
* Tests with java dependencies (System class,
java stdlib, jvm-oriented annotations etc).
* Coroutines tests.
* Reflection tests.
* Tests with an inheritance from the standard
collections.
50 lines
2.6 KiB
Kotlin
Vendored
50 lines
2.6 KiB
Kotlin
Vendored
// TODO: muted automatically, investigate should it be ran for JS or not
|
|
// IGNORE_BACKEND: JS, NATIVE
|
|
|
|
// WITH_REFLECT
|
|
|
|
package test
|
|
|
|
annotation class A
|
|
annotation class B(val s: String)
|
|
|
|
@A
|
|
@B("2")
|
|
fun javaReflectionAnnotationInstances() {}
|
|
|
|
fun box(): String {
|
|
val createA = A::class.constructors.single()
|
|
|
|
val a1 = createA.call()
|
|
if (a1.toString() != "@test.A()") return "Fail: toString does not correspond to the documentation of java.lang.annotation.Annotation#toString: $a1"
|
|
|
|
val a2 = createA.call()
|
|
if (a1 === a2) return "Fail: instances created by the constructor should be different"
|
|
if (a1 != a2) return "Fail: any instance of A should be equal to any other instance of A"
|
|
if (a1.hashCode() != a2.hashCode()) return "Fail: hash codes of equal instances should be equal"
|
|
if (a1.hashCode() != 0) return "Fail: hashCode does not correspond to the documentation of java.lang.annotation.Annotation#hashCode: ${a1.hashCode()}"
|
|
|
|
val createB = B::class.constructors.single()
|
|
val b1 = createB.call("1")
|
|
if (b1.toString() != "@test.B(s=1)") return "Fail: toString does not correspond to the documentation of java.lang.annotation.Annotation#toString: $b1"
|
|
if (b1 != b1) return "Fail: instance should be equal to itself"
|
|
|
|
val b2 = createB.call("2")
|
|
if (b1 == b2) return "Fail: instances with different data should not be equal"
|
|
if (b1.hashCode() == b2.hashCode()) return "Fail: hash codes of different instances should very likely be also different"
|
|
|
|
val a3 = ::javaReflectionAnnotationInstances.annotations.filterIsInstance<A>().single()
|
|
if (a1 === a3) return "Fail: instance created by the constructor and the one obtained from Java reflection should be different"
|
|
if (a1 != a3) return "Fail: instance created by the constructor should be equal to the one obtained from Java reflection"
|
|
if (a3 != a1) return "Fail: instance obtained from Java reflection should be equal to the one created by the constructor"
|
|
if (a1.hashCode() != a3.hashCode()) return "Fail: hash codes of equal instances should be equal"
|
|
|
|
val b3 = ::javaReflectionAnnotationInstances.annotations.filterIsInstance<B>().single()
|
|
if (b2 === b3) return "Fail: instance created by the constructor and the one obtained from Java reflection should be different"
|
|
if (b2 != b3) return "Fail: instance created by the constructor should be equal to the one obtained from Java reflection"
|
|
if (b3 != b2) return "Fail: instance obtained from Java reflection should be equal to the one created by the constructor"
|
|
if (b2.hashCode() != b3.hashCode()) return "Fail: hash codes of equal instances should be equal"
|
|
|
|
return "OK"
|
|
}
|