Skip to content

Commit 41c91d1

Browse files
author
Uzi Landsmann
committed
Changed listener so that it allows for multiple listeners. Also changed the test to allow seeing that the text has actually changed.
1 parent 3711a40 commit 41c91d1

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,20 @@ interface TextChangedListener {
5151
}
5252

5353
class PrintingTextChangedListener : TextChangedListener {
54-
55-
override fun onTextChanged(oldText: String, newText: String) =
56-
println("Text is changed $oldText -> $newText")
54+
55+
var text = ""
56+
57+
override fun onTextChanged(oldText: String, newText: String) {
58+
text = "Text is changed: $oldText -> $newText"
59+
}
5760
}
5861

5962
class TextView {
6063

61-
var listener: TextChangedListener? = null
64+
val listeners = mutableListOf<TextChangedListener>()
6265

6366
var text: String by Delegates.observable("<empty>") { _, old, new ->
64-
listener?.onTextChanged(old, new)
67+
listeners.forEach { it.onTextChanged(old, new) }
6568
}
6669
}
6770
```

patterns/src/test/kotlin/Listener.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,38 @@ interface TextChangedListener {
99

1010
class PrintingTextChangedListener : TextChangedListener {
1111

12-
override fun onTextChanged(oldText: String, newText: String) =
13-
println("Text is changed $oldText -> $newText")
12+
var text = ""
13+
14+
override fun onTextChanged(oldText: String, newText: String) {
15+
text = "Text is changed: $oldText -> $newText"
16+
}
1417
}
1518

1619
class TextView {
1720

18-
var listener: TextChangedListener? = null
21+
val listeners = mutableListOf<TextChangedListener>()
1922

2023
var text: String by Delegates.observable("<empty>") { _, old, new ->
21-
listener?.onTextChanged(old, new)
24+
listeners.forEach { it.onTextChanged(old, new) }
2225
}
2326
}
2427

2528
class ListenerTest {
2629

2730
@Test
2831
fun `Listener`() {
32+
val listener = PrintingTextChangedListener()
33+
2934
val textView = TextView().apply {
30-
listener = PrintingTextChangedListener()
35+
listeners.add(listener)
3136
}
3237

3338
with(textView) {
3439
text = "Lorem ipsum"
3540
text = "dolor sit amet"
3641
}
3742

38-
assertThat(textView.listener).isNotNull()
43+
assertThat(listener.text).isEqualTo("Text is changed: Lorem ipsum -> dolor sit amet")
3944
}
4045
}
4146

0 commit comments

Comments
 (0)