Repository navigation
Expand file tree
/
Copy pathChatTests.py
More file actions
75 lines (59 loc) · 2.89 KB
/
Copy pathChatTests.py
File metadata and controls
75 lines (59 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import unittest, ChatClient, ChatServer, StringIO, time
class Test(unittest.TestCase):
@classmethod
def setUpClass(self):
self.host = "localhost"
self.port = 5556
self.server = ChatServer.ChatServer(self.host, self.port)
self.server.start()
@classmethod
def tearDownClass(self):
self.server.stop()
def setUp(self):
self.client1_stream = StringIO.StringIO()
self.client2_stream = StringIO.StringIO()
self.client3_stream = StringIO.StringIO()
self.client1 = ChatClient.ChatClient(self.host, self.port, self.client1_stream, self.client1_stream)
self.client2 = ChatClient.ChatClient(self.host, self.port, self.client2_stream, self.client2_stream)
self.client3 = ChatClient.ChatClient(self.host, self.port, self.client3_stream, self.client3_stream)
def tearDown(self):
self.client1_stream.close()
self.client2_stream.close()
self.client3_stream.close()
self.client1.disconnect()
self.client2.disconnect()
self.client3.disconnect()
def WaitAbit(self):
time.sleep(1)
def test_clients_sends_messages__others_recieve(self):
message1 = "Hello Barak"
self.client1.send_message(message1)
#wait for messages to arrive
self.WaitAbit()
self.assertEqual(self.client1.get_message_from_server(), self.server.greeting_message * 2)
self.assertEqual(self.client2.get_message_from_server(), self.server.greeting_message + message1)
self.assertEqual(self.client3.get_message_from_server(), message1)
message2 = "Hello Eliran"
self.client3.send_message(message2)
#wait for messages to arrive
self.WaitAbit()
self.assertEqual(self.client1.get_message_from_server(), message2)
self.assertEqual(self.client2.get_message_from_server(), message2)
def test_client_disconnects__server_successfully_removes_it(self):
self.assertEqual(self.server.get_number_of_active_clients(), 3)
self.client3.disconnect()
self.WaitAbit()
self.assertEqual(self.server.get_number_of_active_clients(), 2)
def test_client_disconnects__messages_are_still_delivered(self):
message1 = "Hello client2"
message2 = "Hello client3"
self.client3.disconnect()
self.WaitAbit()
self.client1.send_message(message1)
self.client2.send_message(message2)
self.WaitAbit()
self.assertEqual(self.client1.get_message_from_server(), self.server.greeting_message * 2 + message2)
self.assertEqual(self.client2.get_message_from_server(), self.server.greeting_message + message1)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()