-
Notifications
You must be signed in to change notification settings - Fork 0
/
NimTests.py
134 lines (116 loc) · 5.38 KB
/
NimTests.py
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from Nim import Nim
from NimBase import PlayCondition
import unittest
class TestNim(unittest.TestCase):
def test_incrementTupleWithCarry(self):
nim = Nim(4)
nim.rectangle = (None,2,2,2,2)
t = nim.incrementTupleWithCarry(nim.origen)
self.assertEqual(t, (None,1,0,0,0))
self.assertEqual(nim.inc_dim, 1)
t = nim.incrementTupleWithCarry((None,2,1,0,0))
self.assertEqual(t, (None,0,2,0,0))
self.assertEqual(nim.inc_dim, 2)
t = nim.incrementTupleWithCarry((None,2,2,0,0))
self.assertEqual(t, (None,0,0,1,0))
self.assertEqual(nim.inc_dim, 3)
def test_zeroTupleBelow(self):
nim = Nim()
t = (None,1,2,3,4)
self.assertEqual(nim.zeroTupleBelow(t,1), (None,1,2,3,4))
self.assertEqual(nim.zeroTupleBelow(t,2), (None,0,2,3,4))
self.assertEqual(nim.zeroTupleBelow(t,3), (None,0,0,3,4))
self.assertEqual(nim.zeroTupleBelow(t,4), (None,0,0,0,4))
def test_zeroTupleAbove(self):
nim = Nim()
t = (None,1,2,3,4)
self.assertEqual(nim.zeroTupleAbove(t,1), (None,1,0,0,0))
self.assertEqual(nim.zeroTupleAbove(t,2), (None,1,2,0,0))
self.assertEqual(nim.zeroTupleAbove(t,3), (None,1,2,3,0))
self.assertEqual(nim.zeroTupleAbove(t,4), (None,1,2,3,4))
def test_setMoves(self):
nim = Nim(2)
self.assertEqual(len(nim.moves), 3)
self.assertTrue((None,-1,0) in nim.moves)
self.assertTrue((None,1,-1) in nim.moves)
self.assertTrue((None,0,-1) in nim.moves)
nim = Nim(4, 0.3122, PlayCondition.Misere)
self.assertEqual(nim.rulecode, "0.3122")
self.assertEqual(len(nim.moves), 6)
self.assertTrue((None,-1,0,0,0) in nim.moves)
self.assertTrue((None,0,-1,0,0) in nim.moves)
self.assertTrue((None,1,-1,0,0) in nim.moves)
self.assertTrue((None,0,1,-1,0) in nim.moves)
self.assertTrue((None,1,0,0,-1) in nim.moves)
self.assertTrue((None,0,0,1,-1) in nim.moves)
nim = Nim(6, 0.3122, PlayCondition.Misere)
self.assertEqual(nim.rulecode, "0.312200")
self.assertEqual(len(nim.moves), 12)
self.assertTrue((None,-1,0,0,0,0,0) in nim.moves)
self.assertTrue((None,1,-1,0,0,0,0) in nim.moves)
self.assertTrue((None,0,1,-1,0,0,0) in nim.moves)
self.assertTrue((None,0,0,1,-1,0,0) in nim.moves)
self.assertTrue((None,0,0,0,1,-1,0) in nim.moves)
self.assertTrue((None,0,0,0,0,1,-1) in nim.moves)
self.assertTrue((None,0,-1,0,0,0,0) in nim.moves)
self.assertTrue((None,1,0,0,-1,0,0) in nim.moves)
self.assertTrue((None,0,1,0,0,-1,0) in nim.moves)
self.assertTrue((None,0,0,1,0,0,-1) in nim.moves)
self.assertTrue((None,1,0,0,0,-1,0) in nim.moves)
self.assertTrue((None,0,1,0,0,0,-1) in nim.moves)
def test_example1(self):
nim = Nim(1)
nim.run()
self.assertEqual(len(nim.p_positions()), 1)
self.assertEqual(nim.p_positions(), [(None,0)])
self.assertEqual(nim.rectangle, (None,2))
self.assertEqual(nim.preperiod, (None,0))
def test_example2(self):
nim = Nim(2)
nim.run()
self.assertEqual(len(nim.p_positions()), 1)
self.assertEqual(nim.p_positions(), [(None,0,0)])
self.assertEqual(nim.rectangle, (None,2,2))
self.assertEqual(nim.preperiod, (None,0,0))
def test_example3(self):
nim = Nim(2,None, PlayCondition.Misere)
nim.run()
self.assertEqual(len(nim.p_positions()), 2)
self.assertTrue((None,1,0) in nim.p_positions())
self.assertTrue((None,0,2) in nim.p_positions())
self.assertEqual(nim.rectangle, (None,2,3))
self.assertEqual(nim.preperiod, (None,0,1))
def test_example3_5(self):
nim = Nim(3, None, PlayCondition.Misere)
nim.run()
self.assertEqual(len(nim.p_positions()), 5)
self.assertTrue((None,1,0,0) in nim.p_positions())
self.assertTrue((None,0,2,0) in nim.p_positions())
self.assertTrue((None,1,1,1) in nim.p_positions())
self.assertTrue((None,0,0,2) in nim.p_positions())
self.assertTrue((None,0,2,2) in nim.p_positions())
self.assertEqual(nim.rectangle, (None,2,3,3))
self.assertEqual(nim.preperiod, (None,0,1,1))
self.assertEqual(nim.period(), (None,2,2,2))
def test_example4(self):
nim = Nim(4, 0.3122, PlayCondition.Misere)
nim.run()
self.assertEqual(len(nim.p_positions()), 8)
self.assertTrue((None,1,0,0,0) in nim.p_positions())
self.assertTrue((None,0,2,0,0) in nim.p_positions())
self.assertTrue((None,0,0,1,0) in nim.p_positions())
self.assertTrue((None,0,2,1,0) in nim.p_positions())
self.assertTrue((None,1,0,0,1) in nim.p_positions())
self.assertTrue((None,0,3,0,1) in nim.p_positions())
self.assertTrue((None,0,1,1,1) in nim.p_positions())
self.assertTrue((None,0,3,1,1) in nim.p_positions())
self.assertEqual(nim.rectangle, (None,2,4,2,2))
self.assertEqual(nim.preperiod, (None,0,2,1,0))
self.assertEqual(nim.period(), (None,2,2,1,2))
def test_example5(self):
nim = Nim(6, 0.3122, PlayCondition.Misere)
nim.run()
self.assertEqual(nim.rectangle, (None,2,5,2,4,4,4))
self.assertEqual(nim.preperiod, (None,0,3,1,2,2,2))
if __name__=='__main__':
unittest.main(exit=False)