def test_move_command_valid_move(self):
     user_input = "north"
     player = copy.copy(Test_Objects.TEST_PLAYER)
     room = copy.copy(Test_Objects.TEST_ROOM)
     room_two = copy.copy(Test_Objects.TEST_ROOM_2)
     self.assertEqual(player.location.desc, room.desc)
     Commands.parse_move_command(user_input, player)
     self.assertEqual(player.location.desc, room_two.desc)
 def test_move_command_invalid_move(self):
     user_input = "west"
     player = copy.copy(Test_Objects.TEST_PLAYER)
     room = copy.copy(Test_Objects.TEST_ROOM)
     self.assertEqual(player.location.desc, room.desc)
     actual = Commands.parse_move_command(user_input, player)
     self.assertEqual(Constants.EXIT_NOT_FOUND_STRING, actual)
def parse_untargetable_command(user_input, player):
    command = user_input[0]
    if command in Constants.DIRECTIONS[0]:
        return Commands.parse_move_command(user_input, player)
    if command in Constants.HELP:
        return Commands.parse_help_command()
    if command in Constants.LOOK:
        return Commands.parse_look_command(player)
    if command in Constants.QUIT:
        return Commands.parse_quit_command()
    if command in Constants.INVENTORY:
        return Commands.parse_inventory_command(player)

    # If the command is in the targeted commands like 'examine' or 'give', tell the player this.
    if is_command_valid(
            user_input, Constants.SINGLE_TARGET_COMMANDS +
            Constants.DOUBLE_TARGET_COMMANDS):
        return Constants.IMPROPERLY_TARGETED_COMMAND

    return Constants.INVALID_COMMAND_GIVEN_STRING