def parse_single_target_command(user_input, player):
    command = user_input[0]
    if command in Constants.EXAMINE:
        return Commands.parse_examine_command(user_input, player)
    if command in Constants.TAKE:
        return Commands.parse_take_command(user_input, player)
    if command in Constants.TALK:
        return Commands.parse_talk_command(user_input, player)
    return Constants.INVALID_COMMAND_GIVEN_STRING
    def test_take_command_item_not_present(self):
        user_input = ["take", "test not present"]
        player = copy.copy(Test_Objects.TEST_PLAYER)
        room = Room.Room("Test Room", "This is a test room for testing.", {},
                         [Test_Objects.TEST_ITEM_ON_GROUND], [])
        item = copy.copy(Test_Objects.TEST_ITEM_NOT_PRESENT)

        self.assertTrue(item not in room.items)
        self.assertTrue(item not in player.inventory)

        actual = Commands.parse_take_command(user_input, player)
        self.assertTrue(item not in room.items)
        self.assertTrue(item not in player.inventory)
        self.assertEqual(Constants.ITEM_NOT_VISIBLE_STRING, actual)
    def test_take_command_item_with_keyword(self):
        user_input = ["take", "keyword"]
        item = Item.Item("test 2", ["keyword"], "Short desc 2", "Long desc 2",
                         True, True)
        room = Room.Room("Test Room", "This is a test room for testing.", {},
                         [item], [])
        player = Player.Player(room, [Test_Objects.TEST_ITEM_IN_INVENTORY])

        self.assertTrue(item in room.items)
        self.assertTrue(item not in player.inventory)

        actual = Commands.parse_take_command(user_input, player)
        self.assertTrue(item not in room.items)
        self.assertTrue(item in player.inventory)
        self.assertEqual("You take the test 2.", actual)