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 ) {
2
4
fun send (msg : String ) {
3
- println (" ${ name} : Sending Message= ${ msg} " )
5
+ println (" $name : Sending Message= $msg " )
4
6
mediator.sendMessage(msg, this )
5
7
}
6
8
7
9
fun receive (msg : String ) {
8
- println (" ${ name} : Message received: ${ msg} " )
10
+ println (" $name : Message received: $msg " )
9
11
}
10
-
11
12
}
12
13
13
14
class ChatMediator {
15
+
14
16
private val users: MutableList <ChatUser > = ArrayList ()
15
17
16
18
fun sendMessage (msg : String , user : ChatUser ) {
17
- users.forEach {
18
- if (it != = user)
19
+ users
20
+ .filter { it != user }
21
+ .forEach {
19
22
it.receive(msg)
20
- }
23
+ }
21
24
}
22
25
23
- fun addUser (user : ChatUser ) {
24
- users.add(user)
25
- }
26
+ fun addUser (user : ChatUser ): ChatMediator =
27
+ apply { users.add(user) }
26
28
27
29
}
28
30
29
- fun main (args : Array <String >) {
30
- val mediatorImpl = ChatMediator ()
31
- val john = ChatUser (mediatorImpl, " John" )
31
+ class MediatorTest {
32
32
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" )
39
38
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
+ }
41
46
}
0 commit comments