test_search.py 1,32 ko
Newer Older
Chipe1's avatar
Chipe1 a validé
import pytest
from search import *  # noqa
Chipe1's avatar
Chipe1 a validé
from random import choice #noqa
Chipe1's avatar
Chipe1 a validé


romania = GraphProblem('Arad', 'Bucharest', Fig[3, 2])
Chipe1's avatar
Chipe1 a validé
vacumm_world = GraphProblemStochastic('State_1', ['State_7', 'State_8'], Fig[4, 9])
Chipe1's avatar
Chipe1 a validé

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

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

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

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

def test_iterative_deepening_search():
    assert iterative_deepening_search(romania).solution() == ['Sibiu', 'Fagaras', 'Bucharest']
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)


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