def test_reenter_maze(self): test_cases = [] test_cases.append((NORTH, SOUTH)) test_cases.append((EAST, WEST)) test_cases.append((SOUTH, NORTH)) test_cases.append((WEST, EAST)) test_case_second_entrances = { NORTH: Room((0, 2), EXITS[NORTH]), EAST: Room((1, -2), EXITS[EAST]), SOUTH: Room((2, 2), EXITS[SOUTH]), WEST: Room((1, 2), EXITS[WEST]) } for (original_direction, expected_direction) in test_cases: maze = Maze() second_entrance = test_case_second_entrances[original_direction] maze.add_room(second_entrance) maze.entrances.second = second_entrance.vector walker = Walker(None, original_direction) movement = Reenter(walker, maze) movement.move() self.assertEqual(walker.direction, expected_direction) self.assertEqual(walker.room, second_entrance)
def test_exit_maze(self): maze = Maze() exit_room = Room((2, 2), 0) maze.add_room(exit_room) walker = Walker(exit_room, WEST) movement = Exit(walker, maze) movement.move() self.assertEqual(walker.room, None) self.assertEqual(maze.rooms[exit_room.vector].exits, WEST) self.assertEqual(maze.entrances.second, (2, 2))
def test_walk_north_into_new_room(self): maze = Maze() start_room = Room((1, 2), EXITS[SOUTH]) maze.add_room(start_room) end_room = Room((0, 2), EXITS[SOUTH]) walker = Walker(start_room, NORTH) walk = Walk(walker, maze) walk.move() self.assertEqual(walker.direction, NORTH) self.assertEqual(walker.room, end_room) self.assertEqual(maze.has_room(end_room.vector), True) self.assertEqual(maze.rooms[end_room.vector], end_room) self.assertEqual(maze.rooms[start_room.vector].exits, 3)
def test_walk_west_into_new_room(self): maze = Maze() start_room = Room((0, 0), EXITS[NORTH]) maze.add_room(start_room) end_room = Room((0, 1), EXITS[EAST]) walker = Walker(start_room, WEST) walk = Walk(walker, maze) walk.move() self.assertEqual(walker.direction, WEST) self.assertEqual(walker.room, end_room) self.assertEqual(maze.has_room(end_room.vector), True) self.assertEqual(maze.rooms[end_room.vector], end_room) self.assertEqual(maze.rooms[start_room.vector].exits, 5)
def test_walk_back_west_into_known_room_through_known_entrance(self): known_exits = 12 start_room = Room((1, 1), EXITS[WEST]) end_room = Room((1, 2), known_exits) maze = Maze() maze.add_room(start_room) maze.add_room(end_room) walker = Walker(start_room, WEST) walk = Walk(walker, maze) walk.move() self.assertEqual(walker.direction, WEST) self.assertEqual(walker.room, end_room) self.assertEqual(maze.rooms[start_room.vector].exits, EXITS[WEST]) self.assertEqual(maze.rooms[end_room.vector].exits, known_exits)
def test_walk_back_north_into_known_room_through_known_entrance(self): known_exits = 3 start_room = Room((1, 0), EXITS[NORTH]) end_room = Room((0, 0), known_exits) maze = Maze() maze.add_room(start_room) maze.add_room(end_room) walker = Walker(start_room, NORTH) walk = Walk(walker, maze) walk.move() self.assertEqual(walker.direction, NORTH) self.assertEqual(walker.room, end_room) self.assertEqual(maze.rooms[start_room.vector].exits, EXITS[NORTH]) self.assertEqual(maze.rooms[end_room.vector].exits, known_exits)
def test_walk_back_east_into_known_room_through_new_entrance(self): previously_known_exits = EXITS[EAST] now_known_exits = 12 start_room = Room((1, 1), EXITS[EAST]) end_room = Room((1, 0), previously_known_exits) maze = Maze() maze.add_room(start_room) maze.add_room(end_room) walker = Walker(start_room, EAST) walk = Walk(walker, maze) walk.move() self.assertEqual(walker.direction, EAST) self.assertEqual(walker.room, end_room) self.assertEqual(maze.rooms[start_room.vector].exits, EXITS[EAST]) self.assertEqual(maze.rooms[end_room.vector].exits, now_known_exits)
def create_maze(): """Series of operations which create our Maze.""" maze = Maze() room1 = Room(1) room2 = Room(2) thedoor = Door(room1, room2) maze.add_room(room1) maze.add_room(room2) room1.set_side(Direction.NORTH, Wall()) room1.set_side(Direction.EAST, thedoor) room1.set_side(Direction.SOUTH, Wall()) room1.set_side(Direction.WEST, Wall()) room2.set_side(Direction.NORTH, Wall()) room2.set_side(Direction.EAST, Wall()) room2.set_side(Direction.SOUTH, Wall()) room2.set_side(Direction.WEST, thedoor) return maze
def create_maze(self): a_maze = Maze() r1 = Room(1) r2 = Room(2) the_door = Door(r1, r2) a_maze.add_room(r1) a_maze.add_room(r2) r1.set_side(Direction.NORTH, Wall()) r1.set_side(Direction.EAST, the_door) r1.set_side(Direction.SOUTH, Wall()) r1.set_side(Direction.WEST, Wall()) r2.set_side(Direction.NORTH, Wall()) r2.set_side(Direction.EAST, Wall()) r2.set_side(Direction.SOUTH, Wall()) r2.set_side(Direction.WEST, the_door) print("-------------------------------------------------------------") print(f'rooms created: {r1}, {r2}') print(f'doors created: {the_door}') return a_maze