def test_get_state(self):
        game = Game(GameConfig(3, 3, 3))
        board = self.flip([[False, False, True], [False, False, False],
                           [True, False, True]])
        self.reinit_game(game, board)

        game.select(0, 0)
        expected = self.flip([[0, 1, None], [1, 3, None], [None, None, None]])

        state = game.get_state()
        for x in [0, 1, 2]:
            for y in [0, 1, 2]:
                self.assertEqual(expected[x][y], state[x][y])
    def test_select(self):
        game = Game(GameConfig(3, 3, 2))
        board = self.flip([[False, True, False], [False, False, False],
                           [False, False, True]])
        self.reinit_game(game, board)

        #expose only same square
        result = game.select(1, 1)
        self.assertFalse(result.explosion)
        self.assertEqual(1, len(result.new_squares))
        self.assertEqual(result.new_squares[0], Position(1, 1, 2))

        #expose neighbors
        result = game.select(0, 2)
        self.assertFalse(result.explosion)
        self.assertEqual(3, len(result.new_squares))
        self.assertTrue(Position(0, 2, 0) in result.new_squares)
        self.assertTrue(Position(0, 1, 1) in result.new_squares)
        self.assertTrue(Position(1, 2, 1) in result.new_squares)

        #select square already selected or exposed
        self.assertIsNone(game.select(0, 2))
        self.assertIsNone(game.select(1, 2))

        #select outside the board
        with self.assertRaises(ValueError):
            game.select(2, 3)

        #boom
        result = game.select(1, 0)
        self.assertTrue(result.explosion)

        #select after game over
        with self.assertRaises(ValueError):
            game.select(2, 0)
示例#3
0
    def test_get_state(self):
        game = Game(GameConfig(3, 3, 3))
        board = self.flip([
            [False, False, True],
            [False, False, False],
            [True,  False, True]
        ])
        self.reinit_game(game, board)

        game.select(0, 0)
        expected = self.flip([
          [0,    1,    None],
          [1,    3,    None],
          [None, None, None]
        ])

        state = game.get_state()
        for x in [0, 1, 2]:
            for y in [0, 1, 2]:
                self.assertEqual(expected[x][y], state[x][y])
    def test_is_game_over(self):
        game = Game(GameConfig(3, 3, 1))
        board = self.flip([[False, False, True], [False, False, False],
                           [False, False, False]])
        self.reinit_game(game, board)

        #not over before we start
        self.assertFalse(game.is_game_over())

        #over after explosion
        result = game.select(2, 0)
        self.assertTrue(result.explosion)
        self.assertTrue(game.is_game_over())

        #over when all the squares have been revealed
        self.reinit_game(game, board)
        result = game.select(0, 0)
        self.assertFalse(result.explosion)
        self.assertEqual(8, len(result.new_squares))
        self.assertTrue(game.is_game_over())
示例#5
0
    def test_is_game_over(self):
        game = Game(GameConfig(3, 3, 1))
        board = self.flip([
            [False, False, True],
            [False, False, False],
            [False, False, False]
        ])
        self.reinit_game(game, board)

        #not over before we start
        self.assertFalse(game.is_game_over())

        #over after explosion
        result = game.select(2, 0)
        self.assertTrue(result.explosion)
        self.assertTrue(game.is_game_over())

        #over when all the squares have been revealed
        self.reinit_game(game, board)
        result = game.select(0, 0)
        self.assertFalse(result.explosion)
        self.assertEqual(8, len(result.new_squares))
        self.assertTrue(game.is_game_over())
示例#6
0
    def test_select(self):
        game = Game(GameConfig(3, 3, 2))
        board = self.flip([
            [False, True,  False],
            [False, False, False],
            [False, False, True]
        ])
        self.reinit_game(game, board)

        #expose only same square
        result = game.select(1, 1)
        self.assertFalse(result.explosion)
        self.assertEqual(1, len(result.new_squares))
        self.assertEqual(result.new_squares[0], Position(1, 1, 2))

        #expose neighbors
        result = game.select(0, 2)
        self.assertFalse(result.explosion)
        self.assertEqual(3, len(result.new_squares))
        self.assertTrue(Position(0, 2, 0) in result.new_squares)
        self.assertTrue(Position(0, 1, 1) in result.new_squares)
        self.assertTrue(Position(1, 2, 1) in result.new_squares)

        #select square already selected or exposed
        self.assertIsNone(game.select(0, 2))
        self.assertIsNone(game.select(1, 2))

        #select outside the board
        with self.assertRaises(ValueError):
            game.select(2, 3)

        #boom
        result = game.select(1, 0)
        self.assertTrue(result.explosion)

        #select after game over
        with self.assertRaises(ValueError):
            game.select(2, 0)