test_search.py 2,47 ko
Newer Older
Chipe1's avatar
Chipe1 a validé
import pytest
from search import *  # noqa
Chipe1's avatar
Chipe1 a validé


Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
romania_problem = GraphProblem('Arad', 'Bucharest', romania_map)
vacumm_world = GraphProblemStochastic('State_1', ['State_7', 'State_8'], vacumm_world)
LRTA_problem = OnlineSearchProblem('State_3', 'State_5', one_dim_state_space)
Chipe1's avatar
Chipe1 a validé

def test_breadth_first_tree_search():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    assert breadth_first_tree_search(romania_problem).solution() == ['Sibiu', 'Fagaras', 'Bucharest']
Chipe1's avatar
Chipe1 a validé

def test_breadth_first_search():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    assert breadth_first_search(romania_problem).solution() == ['Sibiu', 'Fagaras', 'Bucharest']
Chipe1's avatar
Chipe1 a validé

def test_uniform_cost_search():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    assert uniform_cost_search(romania_problem).solution() == ['Sibiu', 'Rimnicu', 'Pitesti', 'Bucharest']
Chipe1's avatar
Chipe1 a validé

def test_depth_first_graph_search():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    solution = depth_first_graph_search(romania_problem).solution()
    assert solution[-1] == 'Bucharest'
Chipe1's avatar
Chipe1 a validé

def test_iterative_deepening_search():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    assert iterative_deepening_search(romania_problem).solution() == ['Sibiu', 'Fagaras', 'Bucharest']

def test_depth_limited_search():
    # output flickers between 49 and 50
    # assert len(depth_limited_search(romania_problem).solution()) == 50
    pass

def test_astar_search():
    assert astar_search(romania_problem).solution() == ['Sibiu', 'Rimnicu', 'Pitesti', 'Bucharest']

def test_recursive_best_first_search():
    assert recursive_best_first_search(romania_problem).solution() == ['Sibiu', 'Rimnicu', 'Pitesti', 'Bucharest']

def test_BoggleFinder():
    board = list('SARTELNID')
    """
    >>> print_boggle(board)
        S  A  R
        T  E  L
        N  I  D
    """
    f = BoggleFinder(board)
    assert len(f) == 206
Chipe1's avatar
Chipe1 a validé

Chipe1's avatar
Chipe1 a validé
def test_and_or_graph_search():
    def run_plan(state, problem, plan):
        if problem.goal_test(state):
            return True
        if len(plan) is not 2:
            return False
Chipe1's avatar
Chipe1 a validé
        predicate = lambda x : run_plan(x, problem, plan[1][x])
        return all(predicate(r) for r in problem.result(state, plan[0]))
Chipe1's avatar
Chipe1 a validé
    plan = and_or_graph_search(vacumm_world)
    assert run_plan('State_1', vacumm_world, plan)

def test_LRTAStarAgent():
Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    my_agent = LRTAStarAgent(LRTA_problem)
    assert my_agent('State_3') == 'Right'
    assert my_agent('State_4') == 'Left'
    assert my_agent('State_3') == 'Right'
    assert my_agent('State_4') == 'Right'
    assert my_agent('State_5') is None

Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    my_agent = LRTAStarAgent(LRTA_problem)
    assert my_agent('State_4') == 'Left'

Surya Teja Cheedella's avatar
Surya Teja Cheedella a validé
    my_agent = LRTAStarAgent(LRTA_problem)
    assert my_agent('State_5') is None
Chipe1's avatar
Chipe1 a validé

Chipe1's avatar
Chipe1 a validé
if __name__ == '__main__':
    pytest.main()