Skip to content

Commit e1b9d85

Browse files
committed
Mediator: refactored logic, migrated to test
1 parent d992aab commit e1b9d85

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

patterns/src/test/kotlin/Mediator.kt

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,46 @@
1-
class ChatUser(val mediator: ChatMediator, val name: String){
1+
import org.junit.jupiter.api.Test
2+
3+
class ChatUser(private val mediator: ChatMediator, val name: String) {
24
fun send(msg: String) {
3-
println("${name}: Sending Message= ${msg}")
5+
println("$name: Sending Message= $msg")
46
mediator.sendMessage(msg, this)
57
}
68

79
fun receive(msg: String) {
8-
println("${name}: Message received: ${msg}")
10+
println("$name: Message received: $msg")
911
}
10-
1112
}
1213

1314
class ChatMediator {
15+
1416
private val users: MutableList<ChatUser> = ArrayList()
1517

1618
fun sendMessage(msg: String, user: ChatUser) {
17-
users.forEach {
18-
if (it !== user)
19+
users
20+
.filter { it != user }
21+
.forEach {
1922
it.receive(msg)
20-
}
23+
}
2124
}
2225

23-
fun addUser(user: ChatUser) {
24-
users.add(user)
25-
}
26+
fun addUser(user: ChatUser): ChatMediator =
27+
apply { users.add(user) }
2628

2729
}
2830

29-
fun main(args: Array<String>) {
30-
val mediatorImpl = ChatMediator()
31-
val john = ChatUser(mediatorImpl, "John")
31+
class MediatorTest {
3232

33-
with(mediatorImpl) {
34-
addUser(ChatUser(this, "User1"))
35-
addUser(ChatUser(this, "User2"))
36-
addUser(ChatUser(this, "User3"))
37-
addUser(john)
38-
}
33+
@Test
34+
fun `Mediator`() {
35+
val mediator = ChatMediator()
36+
37+
val john = ChatUser(mediator, "John")
3938

40-
john.send("Hi everyone!")
39+
mediator
40+
.addUser(ChatUser(mediator, "Alice"))
41+
.addUser(ChatUser(mediator, "Bob"))
42+
.addUser(john)
43+
44+
john.send("Hi everyone!")
45+
}
4146
}

0 commit comments

Comments
 (0)