2025-04-19 16:42:46 +02:00

51 lines
1.6 KiB
Python

from Crypto.PublicKey.ECC import EccKey
from src.SantaExchange.Message import Message
from src.SantaExchange.MessageHandler import MessageHandler
from src.SantaExchange.SantasBrain import Brain
from src.SantaExchange.UserInterface import UserInterface
participants: list[tuple[MessageHandler, UserInterface]] = []
class TestMessageHandler(MessageHandler):
def __init__(self):
super().__init__()
def send_message(self, message: Message, signing_key: EccKey):
message_string = message.generate_and_sign(signing_key)
for message_handler, _ in participants:
if message_handler != self:
message_handler.decode_received_message(message_string)
class TestUserInterface(UserInterface):
def __init__(self, own_name, extra_info):
super().__init__()
self.received_names = []
self.own_name = own_name
self.extra_info = extra_info
def tell(self):
self.set_user_info(self.own_name, self.extra_info)
def lets_go(self):
self.start_exchange(self.received_names)
def receive_user(self, name: str):
self.received_names.append(name)
def announce_recipient(self, name: str, other_info: str):
print(f'{self.own_name}: Received {name}, {other_info}')
number_of_participants = 3
for i in range(number_of_participants):
test_message_handler = TestMessageHandler()
test_user_interface = TestUserInterface(f'User {i}', f'Lives at {i} street')
brain = Brain(test_message_handler, test_user_interface)
participants.append((test_message_handler, test_user_interface))
test_user_interface.tell()
for i in range(number_of_participants):
handler, interface = participants[i]
interface.lets_go()