Files
kotlin-fork/js/js.translator/testData/delegateProperty/cases/delegateByExtensionProperty.kt
T
2014-09-29 21:35:30 +04:00

39 lines
905 B
Kotlin

package foo
class State(var realValue: Int)
fun format(event: String, property: String, value: Int): String
= "${event}: ${property} = ${value}; "
object LoggerDelegate {
var log = ""
fun get(state: State, desc: PropertyMetadataImpl): Int {
log += format("get", desc.name, state.realValue)
return state.realValue
}
fun set(state: State, desc: PropertyMetadataImpl, value: Int) {
log += format("set", desc.name, value)
state.realValue = value
}
}
var State.value by LoggerDelegate
fun box(): String {
val state = State(1)
var expectedLog = ""
assertEquals(1, state.value)
expectedLog += format("get", "value", 1)
state.value = 3
expectedLog += format("set", "value", 3)
assertEquals(3, state.value)
expectedLog += format("get", "value", 3)
assertEquals(expectedLog, LoggerDelegate.log)
return "OK"
}