def test_church_floor_message(self, mock_output): character.set_column(8) character.set_row(8) scenario_message() expected_output = 'You walk over the cold stone floor of the church\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_treasury_message(self, mock_output): character.set_column(3) character.set_row(2) scenario_message() expected_output = 'You are in the treasury\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_wooden_ground_message(self, mock_output): character.set_column(2) character.set_row(7) scenario_message() expected_output = 'The wooden boards creak underneath your feet\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_grass_message(self, mock_output): character.set_column(8) character.set_row(3) scenario_message() expected_output = 'You are on a grassy field\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_shack_message(self, mock_output): character.set_column(4) character.set_row(7) scenario_message() expected_output = 'There is a run down shack to your left\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_dirt_path_message(self, mock_output): character.set_column(4) character.set_row(6) scenario_message() expected_output = 'You are on a dirt path\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_bridge_message(self, mock_output): character.set_column(8) character.set_row(4) scenario_message() expected_output = 'You walk over the stone bridge\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_collision_message(self, mock_output): character.set_row(6) character.set_column(4) expected_output = 'You cant move in that direction\n' collision_check('north') actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_take_key(self): character.character_info['inventory'] = [] character.set_column(5) character.set_row(5) map.set_map(5, 5, ' K ') take_item_check('take key') self.assertEqual(character.get_character_info()['inventory'], ['key'])
def test_no_key_message(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 4, ' L ') adjacent_door_check('unlock door') expected_output = 'You do not have a key to open that door\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_locked_door_message(self, mock_output): character.set_column(6) character.set_row(2) scenario_message() expected_output = 'You reach the treasury but it looks like the door is locked\n' \ 'You will need some sort of key to get through\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_church_message(self, mock_output): character.set_column(4) character.set_row(9) scenario_message() expected_output = 'You come across a church that is still in good condition\n' \ 'There is a door that seems to be unlocked\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_random_input(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 4, ' L ') adjacent_door_check('unlock gdfgeg') expected_output = 'i dont understand\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_treasure_message(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 5, ' C ') item_on_ground_message() expected_output = 'You find the treasure you were searching for\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_take_treasure(self): character.character_info['inventory'] = [] character.set_column(5) character.set_row(5) map.set_map(5, 5, ' C ') take_item_check('take treasure') self.assertEqual(character.get_character_info()['inventory'], ['treasure'])
def test_bread_message(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 5, ' B ') item_on_ground_message() expected_output = 'You see some bread left on a bench, it looks edible\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_key_message(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 5, ' K ') item_on_ground_message() expected_output = 'You see a key on a table\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_sword_message(self, mock_output): character.set_row(5) character.set_column(5) map.set_map(5, 5, ' S ') item_on_ground_message() expected_output = 'There is a sword propped up against the wall, it seems to be in good condition\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_unlock_door_message(self, mock_output): map.set_map(0, 0, ' ') character.set_row(0) character.set_column(0) print_message('unlock door') expected_output = 'you unlock the door\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_use_bread_message(self, mock_output): map.set_map(0, 0, ' ') character.set_row(0) character.set_column(0) print_message('use bread') expected_output = 'You eat the bread and return to full HP\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_use_sword_message(self, mock_output): map.set_map(0, 0, ' ') character.set_row(0) character.set_column(0) print_message('use sword') expected_output = 'You swing your sword around looking really dumb\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_take_item_message(self, mock_output): map.set_map(0, 0, ' ') character.set_row(0) character.set_column(0) print_message('take bread') expected_output = 'you pick up bread\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_take_treasure_message(self, mock_output): map.set_map(0, 0, ' ') character.set_row(0) character.set_column(0) print_message('take treasure') expected_output = 'you accomplish your goal and retrieved the treasure\n' \ 'now you may roam this town killing monsters as you wish\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_item_not_on_player(self, mock_output): character.character_info['inventory'] = [] character.set_column(5) character.set_row(5) map.set_map(5, 5, ' C ') take_item_check('take bread') expected_output = 'You cant take that\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def test_displays_3x3_portion(self, mock_output): character.set_row(10) character.set_column(1) map.reset_map() display_map() expected_output = ' | ------\n\n' \ ' | P \n\n' \ ' \ ------\n\n' actual_output = mock_output.getvalue() self.assertEqual(expected_output, actual_output)
def collision_check(player_input: str) -> bool: """Checks if there is a wall where the player is trying to move PARAM player a correctly formatted dictionary PARAM dungeon_map a list of lists PARAM player_input a string PRECONDITION player is a correctly formatted dictionary PRECONDITION dungeon_map is a list of lists with 12 elements each PRECONDITION player_input is the string north, east, south, or west POSTCONDITION Prints nothing or an error message if there is a wall RETURN True if user cant walk in that direction False otherwise """ # list of all un-walkable terrain unwalkable_terrain = ('---', ' | ', ' \ ', ' / ', '~~~', '|||', ' D ', ' L ') dungeon_map = map.get_map() player = character.get_character_info() # Checks user move direction and whether that directions area is in un-walkable terrain if player_input == 'east' and dungeon_map[player['row']][ player['column'] + 1] not in unwalkable_terrain: character.set_column(player['column'] + 1) return False elif player_input == 'west' and dungeon_map[player['row']][ player['column'] - 1] not in unwalkable_terrain: character.set_column(player['column'] - 1) return False elif player_input == 'north' and dungeon_map[player['row'] - 1][ player['column']] not in unwalkable_terrain: character.set_row(player['row'] - 1) return False elif player_input == 'south' and dungeon_map[player['row'] + 1][ player['column']] not in unwalkable_terrain: character.set_row(player['row'] + 1) return False # User tried to move toward an un-walkable terrain, prints error else: print('You cant move in that direction') return True
def test_door_input(self, mock_input): character.set_column(5) character.set_row(5) map.set_map(5, 6, ' D ') self.assertEqual(user_input(), 'open door')
def test_collision(self): map.reset_map() character.set_row(6) character.set_column(4) self.assertTrue(collision_check('north'))
def test_move_west(self): character.set_row(6) character.set_column(5) self.assertFalse(collision_check('west'))
def test_move_south(self): character.set_row(6) character.set_column(4) self.assertFalse(collision_check('south'))