|
14 | 14 | # Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0
|
15 | 15 |
|
16 | 16 | class MinesweeperTest(unittest.TestCase):
|
17 |
| - # Tests in canonical data incompatible with board class |
| 17 | + |
18 | 18 | def test_no_rows(self):
|
19 |
| - with self.assertRaises(ValueError): |
20 |
| - board([]) |
| 19 | + self.assertEqual(board([]), []) |
21 | 20 |
|
22 | 21 | def test_no_columns(self):
|
23 |
| - with self.assertRaises(ValueError): |
24 |
| - board([""]) |
| 22 | + self.assertEqual(board([""]), [""]) |
25 | 23 |
|
26 | 24 | def test_no_mines(self):
|
27 |
| - inp = ["+---+", |
28 |
| - "| |", |
29 |
| - "| |", |
30 |
| - "| |", |
31 |
| - "+---+"] |
32 |
| - out = ["+---+", |
33 |
| - "| |", |
34 |
| - "| |", |
35 |
| - "| |", |
36 |
| - "+---+"] |
| 25 | + inp = [" ", |
| 26 | + " ", |
| 27 | + " "] |
| 28 | + out = [" ", |
| 29 | + " ", |
| 30 | + " "] |
37 | 31 | self.assertEqual(board(inp), out)
|
38 | 32 |
|
39 | 33 | def test_board_with_only_mines(self):
|
40 |
| - inp = ["+---+", |
41 |
| - "|***|", |
42 |
| - "|***|", |
43 |
| - "|***|", |
44 |
| - "+---+"] |
45 |
| - out = ["+---+", |
46 |
| - "|***|", |
47 |
| - "|***|", |
48 |
| - "|***|", |
49 |
| - "+---+"] |
| 34 | + inp = ["***", |
| 35 | + "***", |
| 36 | + "***"] |
| 37 | + out = ["***", |
| 38 | + "***", |
| 39 | + "***"] |
50 | 40 | self.assertEqual(board(inp), out)
|
51 | 41 |
|
52 | 42 | def test_mine_surrounded_by_spaces(self):
|
53 |
| - inp = ["+---+", |
54 |
| - "| |", |
55 |
| - "| * |", |
56 |
| - "| |", |
57 |
| - "+---+"] |
58 |
| - out = ["+---+", |
59 |
| - "|111|", |
60 |
| - "|1*1|", |
61 |
| - "|111|", |
62 |
| - "+---+"] |
| 43 | + inp = [" ", |
| 44 | + " * ", |
| 45 | + " "] |
| 46 | + out = ["111", |
| 47 | + "1*1", |
| 48 | + "111"] |
63 | 49 | self.assertEqual(board(inp), out)
|
64 | 50 |
|
65 | 51 | def test_space_surrounded_by_mines(self):
|
66 |
| - inp = ["+---+", |
67 |
| - "|***|", |
68 |
| - "|* *|", |
69 |
| - "|***|", |
70 |
| - "+---+"] |
71 |
| - out = ["+---+", |
72 |
| - "|***|", |
73 |
| - "|*8*|", |
74 |
| - "|***|", |
75 |
| - "+---+"] |
| 52 | + inp = ["***", |
| 53 | + "* *", |
| 54 | + "***"] |
| 55 | + out = ["***", |
| 56 | + "*8*", |
| 57 | + "***"] |
76 | 58 | self.assertEqual(board(inp), out)
|
77 | 59 |
|
78 | 60 | def test_horizontal_line(self):
|
79 |
| - inp = ["+-----+", |
80 |
| - "| * * |", |
81 |
| - "+-----+"] |
82 |
| - out = ["+-----+", |
83 |
| - "|1*2*1|", |
84 |
| - "+-----+"] |
| 61 | + inp = [" * * "] |
| 62 | + out = ["1*2*1"] |
85 | 63 | self.assertEqual(board(inp), out)
|
86 | 64 |
|
87 | 65 | def test_horizontal_line_mines_at_edges(self):
|
88 |
| - inp = ["+-----+", |
89 |
| - "|* *|", |
90 |
| - "+-----+"] |
91 |
| - out = ["+-----+", |
92 |
| - "|*1 1*|", |
93 |
| - "+-----+"] |
| 66 | + inp = ["* *"] |
| 67 | + out = ["*1 1*"] |
94 | 68 | self.assertEqual(board(inp), out)
|
95 | 69 |
|
96 | 70 | def test_vertical_line(self):
|
97 |
| - inp = ["+-+", |
98 |
| - "| |", |
99 |
| - "|*|", |
100 |
| - "| |", |
101 |
| - "|*|", |
102 |
| - "| |", |
103 |
| - "+-+"] |
104 |
| - out = ["+-+", |
105 |
| - "|1|", |
106 |
| - "|*|", |
107 |
| - "|2|", |
108 |
| - "|*|", |
109 |
| - "|1|", |
110 |
| - "+-+"] |
| 71 | + inp = [" ", |
| 72 | + "*", |
| 73 | + " ", |
| 74 | + "*", |
| 75 | + " "] |
| 76 | + out = ["1", |
| 77 | + "*", |
| 78 | + "2", |
| 79 | + "*", |
| 80 | + "1"] |
111 | 81 | self.assertEqual(board(inp), out)
|
112 | 82 |
|
113 | 83 | def test_vertical_line_mines_at_edges(self):
|
114 |
| - inp = ["+-+", |
115 |
| - "|*|", |
116 |
| - "| |", |
117 |
| - "| |", |
118 |
| - "| |", |
119 |
| - "|*|", |
120 |
| - "+-+"] |
121 |
| - out = ["+-+", |
122 |
| - "|*|", |
123 |
| - "|1|", |
124 |
| - "| |", |
125 |
| - "|1|", |
126 |
| - "|*|", |
127 |
| - "+-+"] |
| 84 | + inp = ["*", |
| 85 | + " ", |
| 86 | + " ", |
| 87 | + " ", |
| 88 | + "*"] |
| 89 | + out = ["*", |
| 90 | + "1", |
| 91 | + " ", |
| 92 | + "1", |
| 93 | + "*"] |
128 | 94 | self.assertEqual(board(inp), out)
|
129 | 95 |
|
130 | 96 | def test_cross(self):
|
131 |
| - inp = ["+-----+", |
132 |
| - "| * |", |
133 |
| - "| * |", |
134 |
| - "|*****|", |
135 |
| - "| * |", |
136 |
| - "| * |", |
137 |
| - "+-----+"] |
138 |
| - out = ["+-----+", |
139 |
| - "| 2*2 |", |
140 |
| - "|25*52|", |
141 |
| - "|*****|", |
142 |
| - "|25*52|", |
143 |
| - "| 2*2 |", |
144 |
| - "+-----+"] |
| 97 | + inp = [" * ", |
| 98 | + " * ", |
| 99 | + "*****", |
| 100 | + " * ", |
| 101 | + " * "] |
| 102 | + out = [" 2*2 ", |
| 103 | + "25*52", |
| 104 | + "*****", |
| 105 | + "25*52", |
| 106 | + " 2*2 "] |
145 | 107 | self.assertEqual(board(inp), out)
|
146 | 108 |
|
147 | 109 | def test_large_board(self):
|
148 |
| - inp = ["+------+", |
149 |
| - "| * * |", |
150 |
| - "| * |", |
151 |
| - "| * |", |
152 |
| - "| * *|", |
153 |
| - "| * * |", |
154 |
| - "| |", |
155 |
| - "+------+"] |
156 |
| - out = ["+------+", |
157 |
| - "|1*22*1|", |
158 |
| - "|12*322|", |
159 |
| - "| 123*2|", |
160 |
| - "|112*4*|", |
161 |
| - "|1*22*2|", |
162 |
| - "|111111|", |
163 |
| - "+------+"] |
| 110 | + inp = [" * * ", |
| 111 | + " * ", |
| 112 | + " * ", |
| 113 | + " * *", |
| 114 | + " * * ", |
| 115 | + " "] |
| 116 | + out = ["1*22*1", |
| 117 | + "12*322", |
| 118 | + " 123*2", |
| 119 | + "112*4*", |
| 120 | + "1*22*2", |
| 121 | + "111111"] |
164 | 122 | self.assertEqual(board(inp), out)
|
165 | 123 |
|
166 | 124 | # Additional test for this track
|
167 | 125 | def test_board9(self):
|
168 |
| - inp = ["+-----+", |
169 |
| - "| |", |
170 |
| - "| * |", |
171 |
| - "| |", |
172 |
| - "| |", |
173 |
| - "| * |", |
174 |
| - "+-----+"] |
175 |
| - out = ["+-----+", |
176 |
| - "| 111|", |
177 |
| - "| 1*1|", |
178 |
| - "| 111|", |
179 |
| - "|111 |", |
180 |
| - "|1*1 |", |
181 |
| - "+-----+"] |
| 126 | + inp = [" ", |
| 127 | + " * ", |
| 128 | + " ", |
| 129 | + " ", |
| 130 | + " * "] |
| 131 | + out = [" 111", |
| 132 | + " 1*1", |
| 133 | + " 111", |
| 134 | + "111 ", |
| 135 | + "1*1 "] |
182 | 136 | self.assertEqual(board(inp), out)
|
183 | 137 |
|
184 | 138 | def test_different_len(self):
|
185 |
| - inp = ["+-+", |
186 |
| - "| |", |
187 |
| - "|* |", |
188 |
| - "| |", |
189 |
| - "+-+"] |
190 |
| - with self.assertRaises(ValueError): |
191 |
| - board(inp) |
192 |
| - |
193 |
| - def test_faulty_border(self): |
194 |
| - inp = ["+-----+", |
195 |
| - "* * |", |
196 |
| - "+-- --+"] |
| 139 | + inp = [" ", |
| 140 | + "* ", |
| 141 | + " "] |
197 | 142 | with self.assertRaises(ValueError):
|
198 | 143 | board(inp)
|
199 | 144 |
|
200 | 145 | def test_invalid_char(self):
|
201 |
| - inp = ["+-----+", |
202 |
| - "|X * |", |
203 |
| - "+-----+"] |
| 146 | + inp = ["X * "] |
204 | 147 | with self.assertRaises(ValueError):
|
205 | 148 | board(inp)
|
206 | 149 |
|
|
0 commit comments