class TestGameBoard(unittest.TestCase):
    def setUp(self):
        self.tester = PuzzleGame()
        self.test_settings = GameSettingsManager()
        self.test_settings.load_settings()
        self.test_settings.set(consts.BOARD_SIZE_STR,
                               SettingsType.TYPE_NUMERIC, 3)

    def test_initial_boards_game_won(self):
        self.tester.generate_new_puzzle(self.test_settings,
                                        fixed_board=get_completed_board(),
                                        fixed_empty_spot=BoardPosition(2, 2))
        assert self.tester.game_won()

        self.tester.generate_new_puzzle(
            self.test_settings,
            fixed_board=get_almost_complete_board(),
            fixed_empty_spot=BoardPosition(2, 1))
        assert not self.tester.game_won()

    def test_game_won_with_move(self):
        self.tester.generate_new_puzzle(
            self.test_settings,
            fixed_board=get_almost_complete_board(),
            fixed_empty_spot=BoardPosition(2, 1))
        assert not self.tester.game_won()
        self.tester.move(consts.LEFT)
        assert self.tester.game_won()
        self.tester.move(consts.RIGHT)
        assert not self.tester.game_won()
        self.tester.move(consts.RIGHT)
        assert not self.tester.game_won()
class TestGameBoard(unittest.TestCase):
    def setUp(self):
        self.tester = PuzzleGame()
        self.test_settings = GameSettingsManager()
        self.test_settings.load_settings()

    def test_game_move_in_all_directions(self):
        self.test_settings.set(consts.BOARD_SIZE_STR, SettingsType.TYPE_NUMERIC, 3)
        self.tester.generate_new_puzzle(self.test_settings)

        first_empty_spot = self.tester.game_board.empty_spot
        empty_spot_left_neighbour = first_empty_spot.get_left_neighbour()

        self.tester.move(consts.RIGHT)
        current_empty_spot = self.tester.game_board.empty_spot
        assert current_empty_spot == empty_spot_left_neighbour
        empty_spot_above_neighbour = current_empty_spot.get_above_neighbour()

        self.tester.move(consts.DOWN)
        current_empty_spot = self.tester.game_board.empty_spot
        assert current_empty_spot == empty_spot_above_neighbour
        empty_spot_right_neighbour = current_empty_spot.get_right_neighbour()

        self.tester.move(consts.LEFT)
        current_empty_spot = self.tester.game_board.empty_spot
        assert current_empty_spot == empty_spot_right_neighbour

    def test_game_ignore_impossible_moves(self):
        self.tester.generate_new_puzzle(self.test_settings)

        first_empty_spot = self.tester.game_board.empty_spot
        empty_spot_right_neighbour = first_empty_spot.get_right_neighbour()

        #since the default empty spot is also the right most bottom corener, a "left move" won't affect it
        self.tester.move(consts.LEFT)
        current_empty_spot = self.tester.game_board.empty_spot
        assert current_empty_spot == first_empty_spot
        assert current_empty_spot != empty_spot_right_neighbour
Exemple #3
0
class TestGameBoard(unittest.TestCase):
    def setUp(self):
        self.tester = PuzzleGame()
        self.test_settings = GameSettingsManager()
        self.test_settings.load_settings()

    def test_game_board_size(self):
        self.test_settings.set(consts.BOARD_SIZE_STR,
                               SettingsType.TYPE_NUMERIC, 4)
        self.tester.generate_new_puzzle(self.test_settings)
        board = self.tester.game_board.board
        assert len(board) == 4

        self.test_settings.set(consts.BOARD_SIZE_STR,
                               SettingsType.TYPE_NUMERIC, 3)
        self.tester.generate_new_puzzle(self.test_settings)
        board = self.tester.game_board.board
        assert len(board) == 3

        self.test_settings.set(consts.BOARD_SIZE_STR,
                               SettingsType.TYPE_NUMERIC, 4)
        self.tester.generate_new_puzzle(self.test_settings)
        board = self.tester.game_board.board
        assert len(board) == 4