Beispiel #1
0
    def test_flags(self):
        def check_state(state, flags, unmarked, cells=()):
            self.assertEqual(flags, state.flags())
            self.assertEqual(unmarked, state.unmarked_cells())
            for cell in cells:
                self.assertEqual(cell[1], state.get_state(cell[0]))

        state = GameState(Field((5, 4), {(1, 0), (1, 2), (3, 2)}))
        check_state(state, 0, 20, [((2, 2), CellState.UNKNOWN)])

        self.assertFalse(state.unset_flag((2, 2)))
        check_state(state, 0, 20, [((2, 2), CellState.UNKNOWN)])

        self.assertTrue(state.set_flag((2, 2)))
        check_state(state, 1, 19, [((2, 2), CellState.FLAG)])
        self.assertFalse(state.set_flag((2, 2)))
        check_state(state, 1, 19, [((2, 2), CellState.FLAG)])

        self.assertTrue(state.unset_flag((2, 2)))
        check_state(state, 0, 20, [((2, 2), CellState.UNKNOWN)])

        self.assertFalse(state.set_flag((10, 10)))
        check_state(state, 0, 20)

        self.assertFalse(state.unset_flag((10, 10)))
        check_state(state, 0, 20)

        state.open_cell((4, 0))
        check_state(state, 0, 14)
        self.assertFalse(state.set_flag((4, 1)))
        check_state(state, 0, 14)
Beispiel #2
0
    def test_handler_flag(self):
        state = GameState(Field.generate((5, 5), 8))
        callargs = []
        state.add_cell_handler(lambda *args: callargs.append(args))

        state.set_flag((2, 4))
        self.assertEqual(1, len(callargs))
        self.assertEqual(((2, 4), CellState.FLAG), callargs[-1])

        state.set_flag((2, 4))
        self.assertEqual(1, len(callargs))

        state.unset_flag((2, 4))
        self.assertEqual(2, len(callargs))
        self.assertEqual(((2, 4), CellState.UNKNOWN), callargs[-1])
Beispiel #3
0
    def test_win(self):
        state = GameState(Field((4, 3), {(0, 0), (2, 0)}))
        self.assertFalse(state.check_win())

        state.set_flag((0, 0))
        state.set_flag((2, 0))
        self.assertFalse(state.check_win())
        state.unset_flag((0, 0))
        state.unset_flag((2, 0))

        state.open_cell((2, 2))
        self.assertFalse(state.check_win())

        state.set_flag((0, 0))
        state.open_cell((1, 0))
        state.open_cell((3, 0))
        self.assertFalse(state.check_win())

        state.set_flag((2, 0))
        self.assertTrue(state.check_win())
Beispiel #4
0
    def test_eq_operator(self):
        field = Field((3, 3), {(0, 1), (1, 0), (1, 1)})
        state0 = GameState(field)
        state1 = GameState(field)
        self.assertEqual(state0, state1)

        state0.set_flag((1, 1))
        self.assertNotEqual(state0, state1)
        state0.unset_flag((1, 1))
        self.assertEqual(state0, state1)

        state2 = GameState(field)
        state2.open_cell((0, 0))
        self.assertNotEqual(state1, state2)

        state3 = GameState(field)
        state3.open_cell((2, 2))
        self.assertNotEqual(state1, state3)

        self.assertNotEqual(state0, [])
        self.assertNotEqual(GameState(Field.generate((2, 2), 1)),
                            GameState(Field.generate((2, 2), 2)))