def test_already_at_goal(self):
        me = MapEnvironment(self.map)
        agent = OnlineDFSAgent(
            OnlineSearchProblem(MapActionFunction(self.map),
                                MapGoalTestFunction("A"),
                                MapStepCostFunction(self.map)),
            MapPerceptToStateFunction())

        me.add_new_agent(agent, "A")
        expected_actions = [NoOpAction()]
        me.add_environment_view(EnvironmentViewMock(expected_actions))

        me.step_until_done()
    def test_normal_search(self):
        me = MapEnvironment(self.map)
        agent = OnlineDFSAgent(
            OnlineSearchProblem(MapActionFunction(self.map),
                                MapGoalTestFunction("G"),
                                MapStepCostFunction(self.map)),
            MapPerceptToStateFunction())

        me.add_new_agent(agent, "A")
        locations = ['C', 'A', 'B', 'A', 'B', 'E', 'B', 'D', 'B', 'D', 'G']
        expected_actions = get_move_to_actions_array(locations)
        me.add_environment_view(EnvironmentViewMock(expected_actions))

        me.step_until_done()
    def test_no_path(self):
        map = ExtendableMap()
        map.add_bidirectional_link('A', 'B', 1)
        me = MapEnvironment(map)
        agent = OnlineDFSAgent(
            OnlineSearchProblem(MapActionFunction(map),
                                MapGoalTestFunction("G"),
                                MapStepCostFunction(map)),
            MapPerceptToStateFunction())

        me.add_new_agent(agent, "A")
        locations = ['B', 'A', 'B', 'A']
        expected_actions = get_move_to_actions_array(locations)
        me.add_environment_view(EnvironmentViewMock(expected_actions))

        me.step_until_done()
    def test_no_path(self):
        me = MapEnvironment(self.map)
        agent = LRTAStarAgent(
            OnlineSearchProblem(MapActionFunction(self.map),
                                MapGoalTestFunction("G"),
                                MapStepCostFunction(self.map)),
            MapPerceptToStateFunction(), self.HF())

        me.add_new_agent(agent, "A")
        locations = [
            'B', 'A', 'B', 'C', 'B', 'C', 'D', 'C', 'D', 'E', 'D', 'E', 'F',
            'E'
        ]
        expected_actions = get_move_to_actions_array(locations)
        expected_actions.pop()
        me.add_environment_view(EnvironmentViewMock(expected_actions))

        me.step(14)