39 lines
905 B
Kotlin
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"
|
|
} |