-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpuzzle1_test.py
More file actions
56 lines (45 loc) · 1.99 KB
/
Copy pathpuzzle1_test.py
File metadata and controls
56 lines (45 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from puzzle1 import *
# XOR = exclusive or
# Only a Knight or a Knave, not both or neither
# InitialKnowledge = And(
# Or(AKnight, AKnave), # must be one of these
# Not(And(AKnight, AKnave)), # but not both
# )
def test_a_initial_knowledge():
# Cant have both a Knight and a Knave
model1 = {'A is a Knight': True, 'A is a Knave': True}
assert InitialKnowledge.evaluate(model1) == False
# Must have at least a knight or a knave
model2 = {'A is a Knight': False, 'A is a Knave': False}
assert InitialKnowledge.evaluate(model2) == False
# Only a Knight and not a Knave
model3 = {'A is a Knight': True, 'A is a Knave': False}
assert InitialKnowledge.evaluate(model3) == True
# Only a Knave and not a Knight
model4 = {'A is a Knight': False, 'A is a Knave': True}
assert InitialKnowledge.evaluate(model4) == True
# InitialStatement = And(AKnight, AKnave)
def test_a_initial_statement():
# And(True, True)
model1 = {'A is a Knight': True, 'A is a Knave': True}
assert InitialStatment.evaluate(model1) == True
# And(False, False)
model2 = {'A is a Knight': False, 'A is a Knave': False}
assert InitialStatment.evaluate(model2) == False
# And(True, False)
model3 = {'A is a Knight': True, 'A is a Knave': False}
assert InitialStatment.evaluate(model3) == False
# And(False, True)
model4 = {'A is a Knight': False, 'A is a Knave': True}
assert InitialStatment.evaluate(model4) == False
def test_knowledge_():
# should fail because not only a knave
model1 = {'A is a Knight': True, 'A is a Knave': True}
assert knowledge.evaluate(model1) == False
model2 = {'A is a Knight': False, 'A is a Knave': False}
assert knowledge.evaluate(model2) == False
model3 = {'A is a Knight': True, 'A is a Knave': False}
assert knowledge.evaluate(model3) == False
# should be the only one to pass as its only a knave
model4 = {'A is a Knight': False, 'A is a Knave': True}
assert knowledge.evaluate(model4) == True