def test_can_place_worker_twice(self): """Base case for placing a worker at the start of a game.""" board = Board() self.assertTrue( rulechecker.can_place_worker(board, self.workers[0], (0, 0))) board.place_worker(self.workers[0], (0, 0)) self.assertFalse( rulechecker.can_place_worker(board, self.workers[0], (0, 0))) self.assertFalse( rulechecker.can_place_worker(board, self.workers[0], (4, 4)))
def _valid_placement(self, placement, board): """Checks whether a given placement is valid :param Placement placement: placement to validate :param Board board: the board to validate against :raises PlayerInvalidPlacement: if placement is not valid """ worker, position = placement if not rulechecker.can_place_worker(board, worker, position): raise PlayerInvalidPlacement("")
def test_can_place_worker_on_worker(self): """Case for placing a worker onto another worker.""" board = Board( workers={ self.workers[0]: (0, 0), self.workers[1]: (0, 1), self.workers[2]: (0, 2) }) self.assertFalse( rulechecker.can_place_worker(board, Worker("player2", 2), (0, 1)))
def test_can_place_five_workers(self): """Case for placing more than 4 workers.""" board = Board( [[0, 1, 2, 3, 4, 0]], { self.workers[0]: (0, 0), self.workers[1]: (0, 1), self.workers[2]: (0, 2), self.workers[3]: (0, 3) }) self.assertFalse( rulechecker.can_place_worker(board, Worker("player3", 2), (0, 5)))
def test_can_place_worker_off_board(self): """Case for placing a worker outside of the board boundaries.""" board = Board() self.assertFalse( rulechecker.can_place_worker(board, self.workers[0], (-1, -1)))