tests: Update external tests (1.1.2-dev-393)

This commit is contained in:
Ilya Matveev
2017-03-13 12:38:08 +03:00
committed by ilmat192
parent ac56fccb15
commit bc074e6d39
3178 changed files with 22396 additions and 696 deletions
@@ -0,0 +1,54 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
interface Interface {
open fun openFun() {}
abstract fun abstractFun()
}
abstract class AbstractClass {
final val finalVal = Unit
open val openVal = Unit
abstract var abstractVar: Unit
}
fun box(): String {
assertFalse(Interface::openFun.isFinal)
assertTrue(Interface::openFun.isOpen)
assertFalse(Interface::openFun.isAbstract)
assertFalse(Interface::abstractFun.isFinal)
assertFalse(Interface::abstractFun.isOpen)
assertTrue(Interface::abstractFun.isAbstract)
assertTrue(AbstractClass::finalVal.isFinal)
assertFalse(AbstractClass::finalVal.isOpen)
assertFalse(AbstractClass::finalVal.isAbstract)
assertTrue(AbstractClass::finalVal.getter.isFinal)
assertFalse(AbstractClass::finalVal.getter.isOpen)
assertFalse(AbstractClass::finalVal.getter.isAbstract)
assertFalse(AbstractClass::openVal.isFinal)
assertTrue(AbstractClass::openVal.isOpen)
assertFalse(AbstractClass::openVal.isAbstract)
assertFalse(AbstractClass::openVal.getter.isFinal)
assertTrue(AbstractClass::openVal.getter.isOpen)
assertFalse(AbstractClass::openVal.getter.isAbstract)
assertFalse(AbstractClass::abstractVar.isFinal)
assertFalse(AbstractClass::abstractVar.isOpen)
assertTrue(AbstractClass::abstractVar.isAbstract)
assertFalse(AbstractClass::abstractVar.getter.isFinal)
assertFalse(AbstractClass::abstractVar.getter.isOpen)
assertTrue(AbstractClass::abstractVar.getter.isAbstract)
assertFalse(AbstractClass::abstractVar.setter.isFinal)
assertFalse(AbstractClass::abstractVar.setter.isOpen)
assertTrue(AbstractClass::abstractVar.setter.isAbstract)
return "OK"
}
@@ -0,0 +1,58 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.reflect.KFunction
import kotlin.reflect.KProperty
import kotlin.reflect.KVisibility
import kotlin.test.assertEquals
open class Foo<in T> {
public fun publicFun() {}
protected fun protectedFun() {}
internal fun internalFun() {}
private fun privateFun() {}
private fun privateToThisFun(): T = null!!
fun getProtectedFun() = this::protectedFun
fun getPrivateFun() = this::privateFun
fun getPrivateToThisFun(): KFunction<*> = this::privateToThisFun
public val publicVal = Unit
protected val protectedVar = Unit
internal val internalVal = Unit
private val privateVal = Unit
private val privateToThisVal: T? = null
fun getProtectedVar() = this::protectedVar
fun getPrivateVal() = this::privateVal
fun getPrivateToThisVal(): KProperty<*> = this::privateToThisVal
public var publicVarPrivateSetter = Unit
private set
fun getPublicVarPrivateSetter() = this::publicVarPrivateSetter
}
fun box(): String {
val f = Foo<String>()
assertEquals(KVisibility.PUBLIC, f::publicFun.visibility)
assertEquals(KVisibility.PROTECTED, f.getProtectedFun().visibility)
assertEquals(KVisibility.INTERNAL, f::internalFun.visibility)
assertEquals(KVisibility.PRIVATE, f.getPrivateFun().visibility)
assertEquals(KVisibility.PRIVATE, f.getPrivateToThisFun().visibility)
assertEquals(KVisibility.PUBLIC, f::publicVal.visibility)
assertEquals(KVisibility.PROTECTED, f.getProtectedVar().visibility)
assertEquals(KVisibility.INTERNAL, f::internalVal.visibility)
assertEquals(KVisibility.PRIVATE, f.getPrivateVal().visibility)
assertEquals(KVisibility.PRIVATE, f.getPrivateToThisVal().visibility)
assertEquals(KVisibility.PUBLIC, f.getPublicVarPrivateSetter().visibility)
assertEquals(KVisibility.PUBLIC, f.getPublicVarPrivateSetter().getter.visibility)
assertEquals(KVisibility.PRIVATE, f.getPublicVarPrivateSetter().setter.visibility)
return "OK"
}
@@ -0,0 +1,59 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
class FinalClass {
companion object Companion
}
open class OpenClass
abstract class AbstractClass
interface Interface
enum class EnumClass
enum class EnumClassWithAbstractMember { ; abstract fun foo() }
annotation class AnnotationClass
object Object
fun box(): String {
assertTrue(FinalClass::class.isFinal)
assertFalse(FinalClass::class.isOpen)
assertFalse(FinalClass::class.isAbstract)
assertTrue(FinalClass.Companion::class.isFinal)
assertFalse(FinalClass.Companion::class.isOpen)
assertFalse(FinalClass.Companion::class.isAbstract)
assertFalse(OpenClass::class.isFinal)
assertTrue(OpenClass::class.isOpen)
assertFalse(OpenClass::class.isAbstract)
assertFalse(AbstractClass::class.isFinal)
assertFalse(AbstractClass::class.isOpen)
assertTrue(AbstractClass::class.isAbstract)
assertFalse(Interface::class.isFinal)
assertFalse(Interface::class.isOpen)
assertTrue(Interface::class.isAbstract)
assertTrue(EnumClass::class.isFinal)
assertFalse(EnumClass::class.isOpen)
assertFalse(EnumClass::class.isAbstract)
assertTrue(EnumClassWithAbstractMember::class.isFinal)
assertFalse(EnumClassWithAbstractMember::class.isOpen)
assertFalse(EnumClassWithAbstractMember::class.isAbstract)
// Note that unlike in JVM, annotation classes are final in Kotlin
assertTrue(AnnotationClass::class.isFinal)
assertFalse(AnnotationClass::class.isOpen)
assertFalse(AnnotationClass::class.isAbstract)
assertTrue(Object::class.isFinal)
assertFalse(Object::class.isOpen)
assertFalse(Object::class.isAbstract)
return "OK"
}
@@ -0,0 +1,32 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.reflect.KClass
import kotlin.reflect.KVisibility
import kotlin.test.assertEquals
class DefaultVisibilityClass
public class PublicClass {
protected class ProtectedClass
fun getProtectedClass(): KClass<*> = ProtectedClass::class
}
internal class InternalClass
private class PrivateClass
fun box(): String {
assertEquals(KVisibility.PUBLIC, DefaultVisibilityClass::class.visibility)
assertEquals(KVisibility.PUBLIC, PublicClass::class.visibility)
assertEquals(KVisibility.PROTECTED, PublicClass().getProtectedClass().visibility)
assertEquals(KVisibility.INTERNAL, InternalClass::class.visibility)
assertEquals(KVisibility.PRIVATE, PrivateClass::class.visibility)
class Local
assertEquals(null, Local::class.visibility)
val anonymous = object {}
assertEquals(null, anonymous::class.visibility)
return "OK"
}
@@ -0,0 +1,46 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
sealed class S {
data class DataClass(val x: Int) : S()
inner class InnerClass
companion object
object NonCompanionObject
}
fun box(): String {
assertTrue(S::class.isSealed)
assertFalse(S::class.isFinal)
assertFalse(S::class.isOpen)
assertFalse(S::class.isAbstract)
assertFalse(S::class.isData)
assertFalse(S::class.isInner)
assertFalse(S::class.isCompanion)
assertFalse(S.DataClass::class.isSealed)
assertTrue(S.DataClass::class.isData)
assertFalse(S.DataClass::class.isInner)
assertFalse(S.DataClass::class.isCompanion)
assertFalse(S.InnerClass::class.isSealed)
assertFalse(S.InnerClass::class.isData)
assertTrue(S.InnerClass::class.isInner)
assertFalse(S.InnerClass::class.isCompanion)
assertFalse(S.Companion::class.isSealed)
assertFalse(S.Companion::class.isData)
assertFalse(S.Companion::class.isInner)
assertTrue(S.Companion::class.isCompanion)
assertFalse(S.NonCompanionObject::class.isSealed)
assertFalse(S.NonCompanionObject::class.isData)
assertFalse(S.NonCompanionObject::class.isInner)
assertFalse(S.NonCompanionObject::class.isCompanion)
return "OK"
}
@@ -0,0 +1,62 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
inline fun inline() {}
class External { external fun external() }
operator fun Unit.invoke() {}
infix fun Unit.infix(unit: Unit) {}
// TODO: support or prohibit references to suspend functions
// class Suspend { suspend fun suspend(c: Continuation<Unit>) {} }
val externalGetter = Unit
external get
inline var inlineProperty: Unit
get() = Unit
set(value) {}
fun box(): String {
assertTrue(::inline.isInline)
assertFalse(::inline.isExternal)
assertFalse(::inline.isOperator)
assertFalse(::inline.isInfix)
assertFalse(::inline.isSuspend)
assertFalse(External::external.isInline)
assertTrue(External::external.isExternal)
assertFalse(External::external.isOperator)
assertFalse(External::external.isInfix)
assertFalse(External::external.isSuspend)
assertFalse(Unit::invoke.isInline)
assertFalse(Unit::invoke.isExternal)
assertTrue(Unit::invoke.isOperator)
assertFalse(Unit::invoke.isInfix)
assertFalse(Unit::invoke.isSuspend)
assertFalse(Unit::infix.isInline)
assertFalse(Unit::infix.isExternal)
assertFalse(Unit::infix.isOperator)
assertTrue(Unit::infix.isInfix)
assertFalse(Unit::infix.isSuspend)
// assertFalse(Suspend::suspend.isInline)
// assertFalse(Suspend::suspend.isExternal)
// assertFalse(Suspend::suspend.isOperator)
// assertFalse(Suspend::suspend.isInfix)
// assertTrue(Suspend::suspend.isSuspend)
assertTrue(::externalGetter.getter.isExternal)
assertFalse(::externalGetter.getter.isInline)
assertFalse(::inlineProperty.getter.isExternal)
assertTrue(::inlineProperty.getter.isInline)
assertTrue(::inlineProperty.setter.isInline)
return "OK"
}
@@ -0,0 +1,36 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
// FILE: J.java
class J {
protected class C {}
protected static class D {}
void foo() {}
protected void bar() {}
protected static void baz() {}
}
// FILE: K.kt
import kotlin.test.assertEquals
fun box(): String {
// Package-private class
assertEquals(null, J::class.visibility)
// Protected+package class
assertEquals(null, J.C::class.visibility)
// Protected static class
assertEquals(null, J.D::class.visibility)
// Package-private method
assertEquals(null, J::foo.visibility)
// Protected+package method
assertEquals(null, J::bar.visibility)
// Protected static method
assertEquals(null, J::baz.visibility)
return "OK"
}
@@ -0,0 +1,25 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
const val const = "const"
val nonConst = "nonConst"
class A {
lateinit var lateinit: Unit
var nonLateinit = Unit
}
fun box(): String {
assertTrue(::const.isConst)
assertFalse(::nonConst.isConst)
assertTrue(A::lateinit.isLateinit)
assertFalse(A::nonLateinit.isLateinit)
return "OK"
}
@@ -0,0 +1,18 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
class A {
fun <T> nonReified(): T = null!!
inline fun <reified U> reified(): U = null!!
}
fun box(): String {
assertFalse(A::class.members.single { it.name == "nonReified" }.typeParameters.single().isReified)
assertTrue(A::class.members.single { it.name == "reified" }.typeParameters.single().isReified)
return "OK"
}