Tests for private members and accessors for them

This commit is contained in:
Michael Bogdanov
2015-10-15 14:03:05 +03:00
committed by Max Kammerer
parent 8641dbf42a
commit 3b02498ca8
16 changed files with 283 additions and 0 deletions
@@ -0,0 +1,20 @@
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("TestKt")
package test
import kotlin.test.assertEquals
private var prop = "O"
private fun test() = "K"
fun box(): String {
val clazz = Class.forName("test.TestKt")
assertEquals(1, clazz.declaredMethods.size(), "Facade should have only box and getProp methods")
assertEquals("box", clazz.declaredMethods.first().name, "Facade should have only box method")
return {
prop + test()
}()
}
@@ -0,0 +1,25 @@
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("TestKt")
package test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
public var prop = "fail"
private set
private fun test() = "K"
fun box(): String {
val clazz = Class.forName("test.TestKt")
assertEquals(2, clazz.declaredMethods.size(), "Facade should have only box method")
val methods = clazz.declaredMethods.map { it.name }
assertTrue(methods.contains("box"), "Facade should have box method")
assertTrue(methods.contains("getProp"), "Facade should have box method")
return {
prop = "O"
prop + test()
}()
}
@@ -0,0 +1,19 @@
package test
private val prop = "O"
private fun test() = "K"
inline internal fun call(p: () -> String): String = p()
inline internal fun inlineFun(): String {
return call {
object {
fun run() = prop + test()
}.run()
}
}
fun box(): String {
return inlineFun();
}
@@ -0,0 +1,11 @@
package test
private val prop = "O"
private fun test() = "K"
fun box(): String {
return {
prop + test()
}()
}
@@ -0,0 +1,13 @@
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("TestKt")
package test
private val prop = "O"
private fun test() = "K"
fun box(): String {
return {
prop + test()
}()
}