-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsquare_test.py
61 lines (51 loc) · 2.66 KB
/
square_test.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
import tour
import unittest
class SquareTest(unittest.TestCase):
def setUp(self):
self.board = MockBoard()
self.square12 = tour.Square(board = self.board, x = 1, y = 2)
self.square24 = tour.Square(board = self.board, x = 2, y = 4)
self.square13 = tour.Square(board = self.board, x = 1, y = 3)
self.square32 = tour.Square(board = self.board, x = 3, y = 2)
self.board.map = {self.square12 : [],
self.square24 : [{"direction":1, "square":self.square13}],
self.square13 : [{"direction":5, "square":self.square24}],
self.square32 : [{"direction":2, "square":self.square13}, {"direction":4, "square":self.square24}]}
def testSerialise(self):
self.assertEquals("(1,2)", str(self.square12))
self.assertEquals("(2,4)", str(self.square24))
def testEquals(self):
self.assertTrue( self.square12.equals(self.square12))
self.assertFalse(self.square12.equals(self.square24))
self.assertFalse(self.square12.equals(self.square13))
self.assertFalse(self.square12.equals(self.square32))
self.assertFalse(self.square12.equals(None))
def testIsUnvisitedByDefault(self):
self.assertFalse(self.square12.visited)
def testReportsDegree(self):
self.assertEquals(0, self.square12.degree())
self.assertEquals(1, self.square24.degree())
self.assertEquals(1, self.square13.degree())
self.assertEquals(2, self.square32.degree())
def testReportsNoNeighbours(self):
self.assertTrue( self.square12.has_no_neighbours())
self.assertFalse(self.square24.has_no_neighbours())
self.assertFalse(self.square13.has_no_neighbours())
self.assertFalse(self.square32.has_no_neighbours())
def testPicksNeighbourWithoutTiebreak(self):
choice = self.square32.pick_neighbour(lambda x : x["direction"], None)
self.assertEquals([self.square13, False], choice)
choice = self.square32.pick_neighbour(lambda x : -x["direction"], None)
self.assertEquals([self.square24, False], choice)
def testPicksNeighbourWithTiebreak(self):
choice = self.square32.pick_neighbour(lambda x : x["square"].degree(), lambda x : x["direction"])
self.assertEquals([self.square13, True], choice)
choice = self.square32.pick_neighbour(lambda x : x["square"].degree(), lambda x : -x["direction"])
self.assertEquals([self.square24, True], choice)
class MockBoard:
def __init__(self):
pass
def get_unvisited_neighbours(self, square):
return self.map[square]
if __name__ == '__main__':
unittest.main()