def from_dict(d): """Create a new instance of the class with attributes initialized to match those in the given dictionary.""" dimensions = d['dimensions'] bombs = [] game = lab.HyperMinesGame(dimensions, bombs) for i in ('board', 'state', 'mask'): setattr(game, i, d[i]) return game
def test_newlarge4dgame(self): """ Testing new_game on a large 4-D board """ with open("test_outputs/test_newlarge4dgame.json") as f: expected = json.load(f) with open("test_inputs/test_newlarge4dgame.json") as f: inputs = json.load(f) result = lab.HyperMinesGame(inputs["dimensions"], inputs["bombs"]) for i in ('dimensions', 'board', 'mask', 'state'): self.assertEqual(getattr(result, i), expected[i])
def test3d(self): game = lab.HyperMinesGame([3, 3, 3], [[0, 0, 1]]) game.dig([0, 0, 0]) game.dig([2, 2, 2]) game.dig([0, 0, 2]) expected = [[['1', '_', '1'], ['1', '1', '1'], [' ', ' ', ' ']], [['1', '1', '1'], ['1', '1', '1'], [' ', ' ', ' ']], [[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]] self.assertEqual(game.render(), expected)
def test_3_dim(self): dims = [4, 5, 2] bombs = [[2, 3, 0], [1, 0, 1], [3, 4, 0]] digs = [[0, 0, 1], [3, 4, 0]] expected = [1, 1] g = lab.HyperMinesGame(dims, bombs) for i in range(2): res = g.dig(digs[i]) self.assertEqual(res, expected[i])
def test_1_dim(self): dims = [10] bombs = [[2], [5]] digs = [[1], [9]] expected = [1, 4] g = lab.HyperMinesGame(dims, bombs) for i in range(2): res = g.dig(digs[i]) self.assertEqual(res, expected[i])
def test_3D(self): game = lab.HyperMinesGame([3, 3, 2], [[1, 2, 0]]) dig_result = game.dig([2, 1, 0]) dig_expected = 1 dig_result2 = game.dig([0, 0, 0]) dig_expected2 = 11 self.assertEqual(dig_result, dig_expected) self.assertEqual(dig_result2, dig_expected2)
def test_2D(self): game = lab.HyperMinesGame([3, 3], [[0, 2], [0, 0]]) dig_result = game.dig([0, 1]) dig_expected = 1 dig_result2 = game.dig([2, 0]) dig_expected2 = 6 self.assertEqual(dig_result, dig_expected) self.assertEqual(dig_result2, dig_expected2)
def _test_integration(self, n): with open("test_outputs/test_integration%s.json" % n) as f: expected = json.load(f) with open("test_inputs/test_integration%s.json" % n) as f: inputs = json.load(f) g = lab.HyperMinesGame(inputs['dimensions'], inputs['bombs']) for location, results in zip(inputs['digs'], expected): squares_revealed, game, rendered, rendered_xray = results res = g.dig(location) self.assertEqual(res, squares_revealed) for i in ('dimensions', 'board', 'mask', 'state'): self.assertEqual(getattr(g, i), game[i]) self.assertEqual(g.render(), rendered) self.assertEqual(g.render(True), rendered_xray)
def test2d(self): game = lab.HyperMinesGame([5, 6], [[3, 3], [4, 3], [3, 4]]) game.dig([4, 5]) game.dig([0, 0]) expected = [[' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '1', '2', '2', '1'], [' ', ' ', '2', '_', '_', '_'], [' ', ' ', '2', '_', '_', '1']] expected_xray = [[' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '1', '2', '2', '1'], [' ', ' ', '2', '.', '.', '1'], [' ', ' ', '2', '.', '3', '1']] self.assertEqual(game.render(), expected) self.assertEqual(game.render(True), expected_xray)
def test_1D(self): game = lab.HyperMinesGame([5], [[0], [3]]) dig_result = game.dig([2]) dig_expected = 1 state_result = game.state expected_state = "ongoing" dig_result2 = game.dig([0]) dig_expected2 = 1 state_result2 = game.state expected_state2 = "defeat" self.assertEqual(dig_result, dig_expected) self.assertEqual(dig_result2, dig_expected2) self.assertEqual(state_result, expected_state) self.assertEqual(state_result2, expected_state2)
def ui_new_game(d): global current_game current_game = lab.HyperMinesGame(d["dimensions"], d["bombs"]) return
def test1d(self): game = lab.HyperMinesGame([10], [[4], [6]]) game.dig([1]) game.dig([6]) expected = [' ', ' ', ' ', '1', '_', '_', '.', '_', '_', '_'] self.assertEqual(game.render(), expected)