Skip to content

Commit c9eab0f

Browse files
lucasmouranorvig
authored andcommitted
Add tests to CSP class (aimacode#299)
* Add tests to CSP class Add test for the following methods on CSP class: * assign * unassigns * nconflits * actions * 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
1 parent ca893d7 commit c9eab0f

File tree

1 file changed

+55
-9
lines changed

1 file changed

+55
-9
lines changed

tests/test_csp.py

Lines changed: 55 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,62 @@
22
from csp import * #noqa
33

44

5+
def test_csp_assign():
6+
var = 10
7+
val = 5
8+
assignment = {}
9+
australia.assign(var, val, assignment)
10+
11+
assert australia.nassigns == 1
12+
assert assignment[var] == val
13+
14+
15+
def test_csp_unassign():
16+
var = 10
17+
assignment = {var: 5}
18+
australia.unassign(var, assignment)
19+
20+
assert var not in assignment
21+
22+
23+
def test_csp_nconflits():
24+
map_coloring_test = MapColoringCSP(list('RGB'), 'A: B C; B: C; C: ')
25+
assignment = {'A': 'R', 'B': 'G'}
26+
var = 'C'
27+
val = 'R'
28+
assert map_coloring_test.nconflicts(var, val, assignment) == 1
29+
30+
val = 'B'
31+
assert map_coloring_test.nconflicts(var, val, assignment) == 0
32+
33+
34+
def test_csp_actions():
35+
map_coloring_test = MapColoringCSP(list('123'), 'A: B C; B: C; C: ')
36+
37+
state = {'A': '1', 'B': '2', 'C': '3'}
38+
assert map_coloring_test.actions(state) == []
39+
40+
state = {'A': '1', 'B': '3'}
41+
assert map_coloring_test.actions(state) == [('C', '2')]
42+
43+
state = {'A': '1', 'C': '2'}
44+
assert map_coloring_test.actions(state) == [('B', '3')]
45+
46+
state = {'A': '1'}
47+
assert (map_coloring_test.actions(state) == [('C', '2'), ('C', '3')] or
48+
map_coloring_test.actions(state) == [('B', '2'), ('B', '3')])
49+
50+
551
def test_backtracking_search():
6-
assert (backtracking_search(australia) is not None) == True
7-
assert (backtracking_search(australia, select_unassigned_variable=mrv) is not None) == True
8-
assert (backtracking_search(australia, order_domain_values=lcv) is not None) == True
9-
assert (backtracking_search(australia, select_unassigned_variable=mrv,
10-
order_domain_values=lcv) is not None) == True
11-
assert (backtracking_search(australia, inference=forward_checking) is not None) == True
12-
assert (backtracking_search(australia, inference=mac) is not None) == True
13-
assert (backtracking_search(usa, select_unassigned_variable=mrv,
14-
order_domain_values=lcv, inference=mac) is not None) == True
52+
assert backtracking_search(australia)
53+
assert backtracking_search(australia, select_unassigned_variable=mrv)
54+
assert backtracking_search(australia, order_domain_values=lcv)
55+
assert backtracking_search(australia, select_unassigned_variable=mrv,
56+
order_domain_values=lcv)
57+
assert backtracking_search(australia, inference=forward_checking)
58+
assert backtracking_search(australia, inference=mac)
59+
assert backtracking_search(usa, select_unassigned_variable=mrv,
60+
order_domain_values=lcv, inference=mac)
1561

1662

1763
def test_universal_dict():

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy