def testAddCell(self): board = Board(4, 3) board.add(Cell(4), 1, 2) cell = board[1][2] self.assertEqual(4, cell.pips)
def testAddDomino(self): board = Board(4, 3) board.add(Domino(5, 6), 1, 2) pips = board[1][2].pips self.assertEqual(5, pips)
def testFillWithBacktrack(self, mock_choose): """ Force a backtrack. This scenario will get to the following grid and then be forced to backtrack, because the gaps are size 1 and 3: odd. x 3 x x - 0 0 x 2 - - 0 0|1 0 """ mock_choose.side_effect = [[Domino(0, 0)], [Domino(0, 1)], [Domino(0, 2)], [Domino(0, 3)], [Domino(0, 3)], [Domino(0, 3)], [Domino(0, 3)], [Domino(0, 4)], [Domino(0, 5)]] dummy_random = DummyRandom(randints={(0, 3): [1, 0, 1, 1]}) # directions board = Board(4, 3, max_pips=6) expected_display = """\ 0|4 0|5 0 0|3 2 - - 0 0|1 0 """ board.fill(dummy_random) display = board.display() self.assertMultiLineEqual(expected_display, display)
def testRemove(self): board = Board(3, 4) domino1 = Domino(1, 5) board.add(domino1, 0, 0) board.remove(domino1) self.assertEqual([], board.dominoes)
def testRemoveAndRotate(self): board = Board(3, 4) domino1 = Domino(1, 5) board.add(domino1, 0, 0) board.remove(domino1) domino1.rotate(270) self.assertEqual(270, domino1.degrees)
def testFlip(self): board = Board(3, 2, max_pips=6) domino1 = Domino(1, 5) expected_display = """\ x x x 5|1 x """ board.add(domino1, 0, 0) domino1.flip() self.assertMultiLineEqual(expected_display, board.display())
def testDisplay(self): board = Board(4, 3) board.add(Domino(5, 6), 1, 2) expected_display = """\ x 5|6 x x x x x x x x x """ display = board.display() self.assertMultiLineEqual(expected_display, display)
def testFillWithRandomDomino(self, mock_choose): mock_choose.side_effect = [[Domino(0, 5)], [Domino(0, 2)]] dummy_random = DummyRandom(randints={(0, 3): [1, 1]}) # directions board = Board(2, 2, max_pips=6) expected_display = """\ 5 2 - - 0 0 """ board.fill(dummy_random) display = board.display() self.assertMultiLineEqual(expected_display, display)
def testFillWithNoMatchesNext(self, mock_choose): mock_choose.side_effect = [[Domino(0, 5)], [Domino(0, 0), Domino(0, 1)]] dummy_random = DummyRandom(randints={(0, 3): [1, 1]}) # directions board = Board(2, 2, max_pips=6) expected_display = """\ 5 0 - - 0 1 """ board.fill(dummy_random, matches_allowed=False) display = board.display() self.assertMultiLineEqual(expected_display, display)
def testRotateAndAdd(self): board = Board(4, 3) domino1 = Domino(5, 6) domino1.rotate(-90) board.add(domino1, 1, 2) expected_display = """\ x 5 x x - x 6 x x x x x x """ display = board.display() self.assertMultiLineEqual(expected_display, display)
def testMoveLeft(self): board = Board(4, 3) domino1 = Domino(5, 6) board.add(domino1, 1, 2) domino1.move(-1, 0) expected_display = """\ 5|6 x x x x x x x x x x """ display = board.display() self.assertMultiLineEqual(expected_display, display)
def testRepr(self): board = Board(4, 3) s = repr(board) self.assertEqual("Board(4, 3)", s)
def testOffBoard(self): board = Board(4, 3) with self.assertRaisesRegex(BoardError, 'Position 4, 0 is off the board.'): board.add(Domino(1, 2), 3, 0)
def testOccupied(self): board = Board(4, 3) board.add(Domino(2, 3), 1, 0) with self.assertRaisesRegex(BoardError, 'Position 1, 0 is occupied.'): board.add(Domino(1, 2), 0, 0)