def test_set(self, data): board = core.Board.empty() (square, piece), = data.draw(pieces(board=board, minimum=1, maximum=1)) self.assertEqual( board.set(square, piece), core.Board(pieces=pmap([(square, piece)])), )
def test_iter(self): board = core.Board() self.assertEqual( set(board), {pvector(each) for each in itertools.product(range(8), repeat=2)}, )
def test_update(self, data): board = core.Board.empty() contents = data.draw(pieces(board=board)) self.assertEqual( board.update(*contents.iteritems()), core.Board(pieces=contents), )
def test_movable_from(self): square = v(0, 3) reachable = {v(0, 0), v(0, 7)} capturable = {v(0, 0), v(7, 7)} piece = Piece(reachable=reachable, capturable=capturable) board = core.Board(pieces=pmap({square: core.WHITE.piece(piece)})) self.assertEqual( sorted(board.movable_from(square=square)), [v(0, 0), v(0, 7), v(7, 7)], )
def test_movable_from_occupied(self): start, end = v(0, 0), v(0, 3) reachable = {end, v(0, 7)} capturable = {end, v(7, 7)} piece = Piece(reachable=reachable, capturable=capturable) board = core.Board(pieces=pmap( { start: core.WHITE.piece(piece), end: core.WHITE.piece(Piece()), }, ), ) self.assertEqual( sorted(board.movable_from(square=start)), [v(0, 7), v(7, 7)], )
def test_it_is_the_next_players_turn_after_moving(self, data): board = core.Board() self.assertEqual(board.turn_of, core.WHITE) moved = data.draw(moved_board(board=board)) self.assertEqual(moved.turn_of, core.BLACK)
def test_dimensions(self): self.assertEqual(core.Board(width=3, height=5).dimensions, v(3, 5))
def test_getitem_out_of_bounds(self): board = core.Board() with self.assertRaises(core.NoSuchSquare): board[board.width, board.height]
def test_not_contains_too_high(self): board = core.Board() self.assertNotIn(core.sq("H9"), board)
def test_not_contains_too_right(self): board = core.Board() self.assertNotIn(core.sq("I1"), board)
def test_contains(self): board = core.Board() self.assertIn(core.sq("A8"), board)
def test_it_is_a_piece(self): verify.verifyObject( interfaces._OnBoard, core.Board(pieces=pmap())[0, 0], )
def test_movable_from_outside_bounds(self): square = v(0, 3) piece = Piece(reachable=[v(100, 100)], capturable=[v(101, 101)]) board = core.Board(pieces=pmap({square: core.WHITE.piece(piece)})) self.assertEqual(sorted(board.movable_from(square=square)), [])
def board(empty=core.Board(pieces=pmap()), pieces=pieces): return strategies.builds(core.Board, pieces=pieces(board=empty))