From 544cd5c45cd1039ad755b744d88809e453f94202 Mon Sep 17 00:00:00 2001 From: Lucas Moura Date: Thu, 2 Mar 2017 17:45:05 -0300 Subject: [PATCH 1/2] Add tests to CSP class Add test for the following methods on CSP class: * assign * unassigns * nconflits * actions --- tests/test_csp.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_csp.py b/tests/test_csp.py index 358d6fe07..9f94ff046 100644 --- a/tests/test_csp.py +++ b/tests/test_csp.py @@ -2,6 +2,52 @@ from csp import * #noqa +def test_csp_assign(): + var = 10 + val = 5 + assignment = {} + australia.assign(var, val, assignment) + + assert australia.nassigns == 1 + assert assignment[var] == val + + +def test_csp_unassign(): + var = 10 + assignment = {var: 5} + australia.unassign(var, assignment) + + assert (var in assignment) == False + + +def test_csp_nconflits(): + map_coloring_test = MapColoringCSP(list('RGB'), 'A: B C; B: C; C: ') + assignment = {'A': 'R', 'B': 'G'} + var = 'C' + val = 'R' + assert map_coloring_test.nconflicts(var, val, assignment) == 1 + + val = 'B' + assert map_coloring_test.nconflicts(var, val, assignment) == 0 + + +def test_csp_actions(): + map_coloring_test = MapColoringCSP(list('123'), 'A: B C; B: C; C: ') + + state = {'A': '1', 'B': '2', 'C': '3'} + assert map_coloring_test.actions(state) == [] + + state = {'A': '1', 'B': '3'} + assert map_coloring_test.actions(state) == [('C', '2')] + + state = {'A': '1', 'C': '2'} + assert map_coloring_test.actions(state) == [('B', '3')] + + state = {'A': '1'} + assert (map_coloring_test.actions(state) == [('C', '2'), ('C', '3')] or + map_coloring_test.actions(state) == [('B', '2'), ('B', '3')]) + + def test_backtracking_search(): assert (backtracking_search(australia) is not None) == True assert (backtracking_search(australia, select_unassigned_variable=mrv) is not None) == True @@ -23,5 +69,6 @@ def test_parse_neighbours(): assert parse_neighbors('X: Y Z; Y: Z') == {'Y': ['X', 'Z'], 'X': ['Y', 'Z'], 'Z': ['X', 'Y']} + if __name__ == "__main__": pytest.main() From 0aed3706b4aa93aa313fce04a637a6955e7d0d5d Mon Sep 17 00:00:00 2001 From: Lucas Moura Date: Fri, 3 Mar 2017 09:02:31 -0300 Subject: [PATCH 2/2] Refactor some asserts in test_csp.py Some asserts were being done in the following way: assert (X is not None) == True Now, they are handled in the following way: assert X --- tests/test_csp.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tests/test_csp.py b/tests/test_csp.py index 9f94ff046..7eae4b0c4 100644 --- a/tests/test_csp.py +++ b/tests/test_csp.py @@ -17,7 +17,7 @@ def test_csp_unassign(): assignment = {var: 5} australia.unassign(var, assignment) - assert (var in assignment) == False + assert var not in assignment def test_csp_nconflits(): @@ -49,15 +49,15 @@ def test_csp_actions(): def test_backtracking_search(): - assert (backtracking_search(australia) is not None) == True - assert (backtracking_search(australia, select_unassigned_variable=mrv) is not None) == True - assert (backtracking_search(australia, order_domain_values=lcv) is not None) == True - assert (backtracking_search(australia, select_unassigned_variable=mrv, - order_domain_values=lcv) is not None) == True - assert (backtracking_search(australia, inference=forward_checking) is not None) == True - assert (backtracking_search(australia, inference=mac) is not None) == True - assert (backtracking_search(usa, select_unassigned_variable=mrv, - order_domain_values=lcv, inference=mac) is not None) == True + assert backtracking_search(australia) + assert backtracking_search(australia, select_unassigned_variable=mrv) + assert backtracking_search(australia, order_domain_values=lcv) + assert backtracking_search(australia, select_unassigned_variable=mrv, + order_domain_values=lcv) + assert backtracking_search(australia, inference=forward_checking) + assert backtracking_search(australia, inference=mac) + assert backtracking_search(usa, select_unassigned_variable=mrv, + order_domain_values=lcv, inference=mac) def test_universal_dict(): @@ -69,6 +69,5 @@ def test_parse_neighbours(): assert parse_neighbors('X: Y Z; Y: Z') == {'Y': ['X', 'Z'], 'X': ['Y', 'Z'], 'Z': ['X', 'Y']} - if __name__ == "__main__": pytest.main()