Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 624d68a

Browse files
committed
Add more tests to test_csp.py
1 parent 034d279 commit 624d68a

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

tests/test_csp.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,70 @@ def test_mrv():
254254
assert mrv(assignment, csp) == 'C'
255255

256256

257+
def test_unordered_domain_values():
258+
map_coloring_test = MapColoringCSP(list('123'), 'A: B C; B: C; C: ')
259+
assignment = None
260+
assert unordered_domain_values('A', assignment, map_coloring_test) == ['1', '2', '3']
261+
262+
263+
def test_lcv():
264+
neighbors = parse_neighbors('A: B; B: C; C: ')
265+
domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 5], 'C': [0, 1, 2, 3, 4]}
266+
constraints = lambda X, x, Y, y: x % 2 == 0 and (x+y) == 4
267+
csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints)
268+
assignment = {'A': 0}
269+
270+
var = 'B'
271+
272+
assert lcv(var, assignment, csp) == [4, 0, 1, 2, 3, 5]
273+
assignment = {'A': 1, 'C': 3}
274+
275+
constraints = lambda X, x, Y, y: (x + y) % 2 == 0 and (x + y) < 5
276+
csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints)
277+
278+
assert lcv(var, assignment, csp) == [1, 3, 0, 2, 4, 5]
279+
280+
281+
def test_forward_checking():
282+
neighbors = parse_neighbors('A: B; B: C; C: ')
283+
domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 5], 'C': [0, 1, 2, 3, 4]}
284+
constraints = lambda X, x, Y, y: (x + y) % 2 == 0 and (x + y) < 8
285+
csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints)
286+
287+
csp.support_pruning()
288+
A_curr_domains = csp.curr_domains['A']
289+
C_curr_domains = csp.curr_domains['C']
290+
291+
var = 'B'
292+
value = 3
293+
assignment = {'A': 1, 'C': '3'}
294+
assert forward_checking(csp, var, value, assignment, None) == True
295+
assert csp.curr_domains['A'] == A_curr_domains
296+
assert csp.curr_domains['C'] == C_curr_domains
297+
298+
assignment = {'C': 3}
299+
300+
assert forward_checking(csp, var, value, assignment, None) == True
301+
assert csp.curr_domains['A'] == [1, 3]
302+
303+
csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints)
304+
csp.support_pruning()
305+
306+
assignment = {}
307+
assert forward_checking(csp, var, value, assignment, None) == True
308+
assert csp.curr_domains['A'] == [1, 3]
309+
assert csp.curr_domains['C'] == [1, 3]
310+
311+
csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints)
312+
domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 7], 'C': [0, 1, 2, 3, 4]}
313+
csp.support_pruning()
314+
315+
value = 7
316+
assignment = {}
317+
assert forward_checking(csp, var, value, assignment, None) == False
318+
assert (csp.curr_domains['A'] == [] or csp.curr_domains['C'] == [])
319+
320+
257321
def test_backtracking_search():
258322
assert backtracking_search(australia)
259323
assert backtracking_search(australia, select_unassigned_variable=mrv)

0 commit comments

Comments
 (0)