ready to test

This commit is contained in:
2025-07-30 12:56:32 +01:00
parent 88fa2fa2a3
commit e87c1f74f4
6 changed files with 202 additions and 48 deletions

View File

@@ -2,6 +2,7 @@ import socket
import threading
import time
import unittest
import sys
class TestBudgetChat(unittest.TestCase):
SERVER_HOST = 'localhost'
@@ -39,9 +40,11 @@ class TestBudgetChat(unittest.TestCase):
_ = self.receive_message(client) # Welcome message
client.send(f"{name}\n".encode('ascii'))
# Server should disconnect us
response = self.receive_message(client)
with self.assertRaises((ConnectionResetError, ConnectionAbortedError, socket.error)):
client.send("test\n".encode('ascii'))
client.sendall("test\n".encode('ascii'))
response = self.receive_message(client)
response = self.receive_message(client)
response = self.receive_message(client)
client.close()
def test_valid_username(self):
@@ -95,7 +98,7 @@ class TestBudgetChat(unittest.TestCase):
client.send(f"{username}\n".encode('ascii'))
_ = self.receive_message(client) # Room info
clients.append(client)
time.sleep(0.1) # Small delay to prevent race conditions
# time.sleep(0.1) # Small delay to prevent race conditions
# Send a message from the last client
test_message = "Hello from last user!"
@@ -105,6 +108,7 @@ class TestBudgetChat(unittest.TestCase):
expected = f"[{usernames[-1]}] {test_message}"
for i in range(len(clients)-1):
received = self.receive_message(clients[i])
print(f"Received: {received}")
self.assertEqual(expected, received)
# Cleanup
@@ -126,10 +130,49 @@ class TestBudgetChat(unittest.TestCase):
# Close client2 and check if client1 receives departure message
client2.close()
departure_msg = self.receive_message(client1)
print(departure_msg)
self.assertTrue("user2" in departure_msg)
self.assertTrue(departure_msg.startswith("*"))
client1.close()
def list_tests():
"""List all available tests"""
print("\nAvailable tests:")
test_methods = [method for method in dir(TestBudgetChat) if method.startswith('test_')]
for i, test in enumerate(test_methods, 1):
print(f"{i}. {test}")
print("\n0. Run all tests")
def run_selected_test(test_number):
"""Run a specific test based on user selection"""
suite = unittest.TestSuite()
test_methods = [method for method in dir(TestBudgetChat) if method.startswith('test_')]
if test_number == 0:
# Run all tests
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBudgetChat))
else:
try:
selected_test = test_methods[test_number - 1]
suite.addTest(TestBudgetChat(selected_test))
except IndexError:
print("Invalid test number!")
return
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
if __name__ == '__main__':
unittest.main()
while True:
list_tests()
try:
choice = input("\nEnter test number (or 'q' to quit): ")
if choice.lower() == 'q':
break
test_number = int(choice)
run_selected_test(test_number)
except ValueError:
print("Please enter a valid number!")
input("\nPress Enter to continue...")