|
10 | 10 |
|
11 | 11 | from minesweeper import board
|
12 | 12 |
|
| 13 | +# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0 |
| 14 | + |
13 | 15 |
|
14 | 16 | class MinesweeperTest(unittest.TestCase):
|
15 |
| - def test_board1(self): |
16 |
| - inp = ["+------+", |
17 |
| - "| * * |", |
18 |
| - "| * |", |
19 |
| - "| * |", |
20 |
| - "| * *|", |
21 |
| - "| * * |", |
22 |
| - "| |", |
23 |
| - "+------+"] |
24 |
| - out = ["+------+", |
25 |
| - "|1*22*1|", |
26 |
| - "|12*322|", |
27 |
| - "| 123*2|", |
28 |
| - "|112*4*|", |
29 |
| - "|1*22*2|", |
30 |
| - "|111111|", |
31 |
| - "+------+"] |
| 17 | + # Tests in canonical data incompatible with board class |
| 18 | + # def test_no_rows(self): |
| 19 | + # self.assertEqual(board([]), []) |
| 20 | + |
| 21 | + # def test_no_columns(self): |
| 22 | + # self.assertEqual(board([""]), [""]) |
| 23 | + |
| 24 | + def test_no_mines(self): |
| 25 | + inp = ["+---+", |
| 26 | + "| |", |
| 27 | + "| |", |
| 28 | + "| |", |
| 29 | + "+---+"] |
| 30 | + out = ["+---+", |
| 31 | + "| |", |
| 32 | + "| |", |
| 33 | + "| |", |
| 34 | + "+---+"] |
| 35 | + self.assertEqual(board(inp), out) |
| 36 | + |
| 37 | + def test_board_with_only_mines(self): |
| 38 | + inp = ["+---+", |
| 39 | + "|***|", |
| 40 | + "|***|", |
| 41 | + "|***|", |
| 42 | + "+---+"] |
| 43 | + out = ["+---+", |
| 44 | + "|***|", |
| 45 | + "|***|", |
| 46 | + "|***|", |
| 47 | + "+---+"] |
| 48 | + self.assertEqual(board(inp), out) |
| 49 | + |
| 50 | + def test_mine_surrounded_by_spaces(self): |
| 51 | + inp = ["+---+", |
| 52 | + "| |", |
| 53 | + "| * |", |
| 54 | + "| |", |
| 55 | + "+---+"] |
| 56 | + out = ["+---+", |
| 57 | + "|111|", |
| 58 | + "|1*1|", |
| 59 | + "|111|", |
| 60 | + "+---+"] |
| 61 | + self.assertEqual(board(inp), out) |
| 62 | + |
| 63 | + def test_space_surrounded_by_mines(self): |
| 64 | + inp = ["+---+", |
| 65 | + "|***|", |
| 66 | + "|* *|", |
| 67 | + "|***|", |
| 68 | + "+---+"] |
| 69 | + out = ["+---+", |
| 70 | + "|***|", |
| 71 | + "|*8*|", |
| 72 | + "|***|", |
| 73 | + "+---+"] |
32 | 74 | self.assertEqual(board(inp), out)
|
33 | 75 |
|
34 |
| - def test_board2(self): |
| 76 | + def test_horizontal_line(self): |
35 | 77 | inp = ["+-----+",
|
36 |
| - "| * * |", |
37 |
| - "| |", |
38 |
| - "| * |", |
39 |
| - "| * *|", |
40 | 78 | "| * * |",
|
41 | 79 | "+-----+"]
|
42 | 80 | out = ["+-----+",
|
43 | 81 | "|1*2*1|",
|
44 |
| - "|11322|", |
45 |
| - "| 12*2|", |
46 |
| - "|12*4*|", |
47 |
| - "|1*3*2|", |
48 | 82 | "+-----+"]
|
49 | 83 | self.assertEqual(board(inp), out)
|
50 | 84 |
|
51 |
| - def test_board3(self): |
| 85 | + def test_horizontal_line_mines_at_edges(self): |
52 | 86 | inp = ["+-----+",
|
53 |
| - "| * * |", |
| 87 | + "|* *|", |
54 | 88 | "+-----+"]
|
55 | 89 | out = ["+-----+",
|
56 |
| - "|1*2*1|", |
| 90 | + "|*1 1*|", |
57 | 91 | "+-----+"]
|
58 | 92 | self.assertEqual(board(inp), out)
|
59 | 93 |
|
60 |
| - def test_board4(self): |
| 94 | + def test_vertical_line(self): |
61 | 95 | inp = ["+-+",
|
62 |
| - "|*|", |
63 | 96 | "| |",
|
64 | 97 | "|*|",
|
65 | 98 | "| |",
|
| 99 | + "|*|", |
66 | 100 | "| |",
|
67 | 101 | "+-+"]
|
68 | 102 | out = ["+-+",
|
| 103 | + "|1|", |
69 | 104 | "|*|",
|
70 | 105 | "|2|",
|
71 | 106 | "|*|",
|
72 | 107 | "|1|",
|
73 |
| - "| |", |
74 | 108 | "+-+"]
|
75 | 109 | self.assertEqual(board(inp), out)
|
76 | 110 |
|
77 |
| - def test_board5(self): |
| 111 | + def test_vertical_line_mines_at_edges(self): |
78 | 112 | inp = ["+-+",
|
| 113 | + "|*|", |
| 114 | + "| |", |
| 115 | + "| |", |
| 116 | + "| |", |
79 | 117 | "|*|",
|
80 | 118 | "+-+"]
|
81 | 119 | out = ["+-+",
|
| 120 | + "|*|", |
| 121 | + "|1|", |
| 122 | + "| |", |
| 123 | + "|1|", |
82 | 124 | "|*|",
|
83 | 125 | "+-+"]
|
84 | 126 | self.assertEqual(board(inp), out)
|
85 | 127 |
|
86 |
| - def test_board6(self): |
87 |
| - inp = ["+--+", |
88 |
| - "|**|", |
89 |
| - "|**|", |
90 |
| - "+--+"] |
91 |
| - out = ["+--+", |
92 |
| - "|**|", |
93 |
| - "|**|", |
94 |
| - "+--+"] |
95 |
| - self.assertEqual(board(inp), out) |
96 |
| - |
97 |
| - def test_board7(self): |
98 |
| - inp = ["+--+", |
99 |
| - "|**|", |
100 |
| - "|**|", |
101 |
| - "+--+"] |
102 |
| - out = ["+--+", |
103 |
| - "|**|", |
104 |
| - "|**|", |
105 |
| - "+--+"] |
| 128 | + def test_cross(self): |
| 129 | + inp = ["+-----+", |
| 130 | + "| * |", |
| 131 | + "| * |", |
| 132 | + "|*****|", |
| 133 | + "| * |", |
| 134 | + "| * |", |
| 135 | + "+-----+"] |
| 136 | + out = ["+-----+", |
| 137 | + "| 2*2 |", |
| 138 | + "|25*52|", |
| 139 | + "|*****|", |
| 140 | + "|25*52|", |
| 141 | + "| 2*2 |", |
| 142 | + "+-----+"] |
106 | 143 | self.assertEqual(board(inp), out)
|
107 | 144 |
|
108 |
| - def test_board8(self): |
109 |
| - inp = ["+---+", |
110 |
| - "|***|", |
111 |
| - "|* *|", |
112 |
| - "|***|", |
113 |
| - "+---+"] |
114 |
| - out = ["+---+", |
115 |
| - "|***|", |
116 |
| - "|*8*|", |
117 |
| - "|***|", |
118 |
| - "+---+"] |
| 145 | + def test_large_board(self): |
| 146 | + inp = ["+------+", |
| 147 | + "| * * |", |
| 148 | + "| * |", |
| 149 | + "| * |", |
| 150 | + "| * *|", |
| 151 | + "| * * |", |
| 152 | + "| |", |
| 153 | + "+------+"] |
| 154 | + out = ["+------+", |
| 155 | + "|1*22*1|", |
| 156 | + "|12*322|", |
| 157 | + "| 123*2|", |
| 158 | + "|112*4*|", |
| 159 | + "|1*22*2|", |
| 160 | + "|111111|", |
| 161 | + "+------+"] |
119 | 162 | self.assertEqual(board(inp), out)
|
120 | 163 |
|
| 164 | + # Additional test for this track |
121 | 165 | def test_board9(self):
|
122 | 166 | inp = ["+-----+",
|
123 | 167 | "| |",
|
|
0 commit comments