added a few classes for doing property change listening (using pure kotlin code so its easier to work with JS and Java)

This commit is contained in:
James Strachan
2012-02-20 15:38:34 +00:00
parent 8597188bcc
commit 094d5d2e70
3 changed files with 185 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
package test.properties
import std.*
import std.properties.*
import std.util.*
import stdhack.test.*
import java.util.*
import junit.framework.TestCase
class Customer() : ChangeSupport() {
// TODO the setter code should be generated
// via KT-1299
var name: String? = null
set(value) {
changeProperty("name", $name, value)
$name = value
}
var city: String? = null
set(value) {
changeProperty("city", $city, value)
$city = value
}
fun toString() = "Customer($name, $city)"
}
class MyChangeListener() : ChangeListener {
val events = ArrayList<ChangeEvent>()
override fun onPropertyChange(event: ChangeEvent): Unit {
println("Property changed: $event")
events.add(event)
}
}
class PropertiesTest() : TestCase() {
fun testModel() {
val c = Customer()
c.name = "James"
c.city = "Mells"
val listener = MyChangeListener()
c.addChangeListener(listener)
c.name = "Andrey"
println("Customer $c and raised change events ${listener.events}")
assertEquals(1, listener.events.size(), "Should have received a change event ${listener.events}")
}
}