test_search.py 1,66 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
        next_state = choice(problem.result(state, plan[0]))
        return run_plan(next_state, problem, plan[1][next_state])
    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()