def test_update_state_three_times(): sm = StateManager() new_state = sm.create({"game_id": "debug_testing"}) updated_state = sm.update(new_state, {"coordinates": [1, 1]}) assert updated_state.board == {'size': 3, 'status': [[0, 0, 0], [0, 1, 0], [0, 0, 0]]} assert updated_state.player_turn == 2 updated_state = sm.update(updated_state, {"coordinates": [0, 1]}) assert updated_state.board == {'size': 3, 'status': [[0, 2, 0], [0, 1, 0], [0, 0, 0]]} assert updated_state.player_turn == 1
class Game: window = None running = False state_manager = None def __init__(self, is_server=False): self.running = True self.is_server = is_server self.state_manager = StateManager(is_server) if is_server: self.state_manager.change_state(self.state_manager.server_state) else: self.state_manager = StateManager() pygame.init() self.window = pygame.display.set_mode((1024, 768)) pygame.display.set_caption("Snaky Snake") self.state_manager.change_state(self.state_manager.menu_state) self.mainloop() def mainloop(self): while self.running: if not self.is_server: events = pygame.event.get() for event in events: if event.type == pygame.QUIT: self.running = False self.state_manager.events = events self.update() self.render(self.window) pygame.display.update() pygame.time.delay(10) self.window.fill((0, 0, 0)) def update(self): self.state_manager.update() def render(self, window): self.state_manager.render(window)
def test_overwrite_state(): sr = StateRepo() sm = StateManager() new_state = sm.create({ "game_id": "debug_testing", "board_size": 5, "board_status": [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]] }) sr.write_state(new_state) read_data = sr.read_state("debug_testing") assert read_data.board == { "size": 5, "status": [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]] } overwrite_state = sm.update(read_data, { "coordinates": [2, 2], "player_ids": ["debug", "testing"] }) sr.write_state(overwrite_state) overwritten_read_data = sr.read_state("debug_testing") assert overwritten_read_data.board == { "size": 5, "status": [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 1, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]] } print(overwritten_read_data.history) assert overwritten_read_data.history[0].board == { "size": 5, "status": [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2, 3, 4]] }