Beispiel #1
0
    def test_handler_remove(self):
        state = GameState(Field.generate((2, 2), 2))

        callargs = []
        handler = lambda *args: callargs.append(args)

        state.add_cell_handler(handler)
        state.set_flag((0, 0))
        self.assertEqual(1, len(callargs))

        state.remove_cell_handler(handler)
        state.set_flag((1, 1))
        self.assertEqual(1, len(callargs))
Beispiel #2
0
    def test_handler_open(self):
        state = GameState(Field((3, 3), {(1, 0)}))
        callargs = []
        state.add_cell_handler(lambda *args: callargs.append(args))

        state.open_cell((0, 0))
        self.assertEqual(1, len(callargs))
        self.assertEqual(((0, 0), CellState.OPENED), callargs[-1])

        state.open_cell((2, 2))
        self.assertEqual(7, len(callargs))
        self.assertSetEqual(
            {((x, y), CellState.OPENED) for x in (0, 1, 2) for y in (1, 2)},
            set(callargs[1:]))
Beispiel #3
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 #4
0
    def test_clone(self):
        calls = 0

        def handler(*args):
            nonlocal calls
            calls += 1

        state = GameState(Field.generate((10, 15), 21))
        state.add_cell_handler(handler)

        state2 = copy.copy(state)
        self.assertEqual(state, state2)
        state2.set_flag((0, 0))
        self.assertNotEqual(state, state2)
        self.assertEqual(1, calls)
        state2.remove_cell_handler(handler)
        state2.set_flag((1, 0))
        self.assertEqual(1, calls)
        state.set_flag((5, 0))
        self.assertEqual(2, calls)
Beispiel #5
0
 def test_handler_bad(self):
     state = GameState(Field.generate((2, 2), 1))
     with self.assertRaises(TypeError):
         state.add_cell_handler([])