Esempio n. 1
0
 def test_move_prioritization(self):
     """
     Ensure we don't return:
         board[2] = (0,15)
         board[4] = (15,0)
     as a next board because you must use the max number of rolls possible.
     """
     board = get_blank_board()
     board[1] = (0, 1)
     board[2] = (0, 14)
     board[4] = (15, 0)
     self.assertTrue(is_valid_board(board))
     roll = [2, 1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 2)
     board1 = get_blank_board()
     board1[2] = (0, 13)
     board1[3] = (0, 2)
     board1[4] = (15, 0)
     self.assertIn(board1, next_boards)
     board2 = get_blank_board()
     board2[1] = (0, 1)
     board2[2] = (0, 13)
     board2[4] = (15, 0)
     board2[5] = (0, 1)
     self.assertIn(board2, next_boards)
Esempio n. 2
0
 def test_white_bear_off(self):
     board = get_blank_board()
     board[10] = (15, 0)
     board[15] = (0, 0)
     board[23] = (0, 15)
     self.assertTrue(is_valid_board(board))
     roll = [1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][23], (0, 14))
     self.assertEqual(next_boards[0][WHITE_OFF_INDEX], (0, 1))
     roll = [2]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][23], (0, 14))
     self.assertEqual(next_boards[0][WHITE_OFF_INDEX], (0, 1))
     board = get_blank_board()
     board[10] = (15, 0)
     board[22] = (0, 15)
     roll = [3, 1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][23], (0, 1))
     self.assertEqual(next_boards[0][22], (0, 13))
     self.assertEqual(next_boards[0][WHITE_OFF_INDEX], (0, 1))
Esempio n. 3
0
 def test_get_blank_board(self):
     board = get_blank_board()
     board[0] = (15, 0)
     board[1] = (0, 15)
     self.assertTrue(is_valid_board(board))
     board = get_blank_board()
     board[0] = (15, 15)
     self.assertFalse(is_valid_board(board))
Esempio n. 4
0
 def test_white_wins(self):
     self.assertFalse(white_wins(get_initial_board()))
     board = get_blank_board()
     board[WHITE_OFF_INDEX] = (0, 15)
     board[1] = (15, 0)
     self.assertTrue(white_wins(board))
     self.assertFalse(black_wins(board))
Esempio n. 5
0
 def test_position_is_outer(self):
     board = get_blank_board()
     board[10] = (15, 0)
     board[15] = (0, 13)
     board[16] = (0, 2)
     self.assertTrue(is_valid_board(board))
     self.assertFalse(position_is_outer(board, 16))
     self.assertTrue(position_is_outer(board, 15))
Esempio n. 6
0
 def test_can_bear_off(self):
     board = get_blank_board()
     board[10] = (15, 0)
     board[15] = (0, 15)
     self.assertTrue(is_valid_board(board))
     self.assertFalse(can_bear_off(board))
     board[15] = (0, 0)
     board[23] = (0, 15)
     self.assertTrue(can_bear_off(board))
Esempio n. 7
0
 def test_no_move(self):
     board = get_blank_board()
     board[1] = (0, 15)
     board[2] = (15, 0)
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][1], (0, 15))
     self.assertEqual(next_boards[0][2], (15, 0))
Esempio n. 8
0
 def test_black_hit(self):
     board = get_blank_board()
     board[1] = (0, 1)
     board[2] = (15, 0)
     board[3] = (0, 14)
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 4)
     for next_board in next_boards:
         self.assertEqual(next_board[WHITE_BAR_INDEX], (0, 1))
Esempio n. 9
0
 def test_white_hit(self):
     board = get_blank_board()
     board[23] = (1, 0)
     board[22] = (0, 15)
     board[3] = (14, 0)
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 3)
     for next_board in next_boards:
         self.assertEqual(next_board[BLACK_BAR_INDEX], (1, 0))
Esempio n. 10
0
 def test_hit_from_bear_on_black(self):
     board = get_blank_board()
     board[BLACK_BAR_INDEX] = (15, 0)
     board[23] = (0, 1)
     board[0] = (0, 14)
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, True, roll)
     board[BLACK_BAR_INDEX] = (11, 0)
     board[23] = (4, 0)
     board[WHITE_BAR_INDEX] = (0, 1)
     self.assertIn(board, next_boards)
Esempio n. 11
0
 def test_hit_from_bear_on_white(self):
     board = get_blank_board()
     board[WHITE_BAR_INDEX] = (0, 15)
     board[1] = (1, 0)
     board[3] = (14, 0)
     roll = [2, 2, 2, 2]
     next_boards = generate_next_boards(board, False, roll)
     board[WHITE_BAR_INDEX] = (0, 11)
     board[1] = (0, 4)
     board[BLACK_BAR_INDEX] = (1, 0)
     self.assertIn(board, next_boards)
Esempio n. 12
0
 def test_black_bear_off(self):
     board = get_blank_board()
     board[1] = (0, 15)
     board[0] = (15, 0)
     self.assertTrue(is_valid_board(board))
     roll = [1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][0], (14, 0))
     self.assertEqual(next_boards[0][BLACK_OFF_INDEX], (1, 0))
     roll = [2]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][0], (14, 0))
     self.assertEqual(next_boards[0][BLACK_OFF_INDEX], (1, 0))
     board = get_blank_board()
     board[10] = (0, 15)
     board[1] = (15, 0)
     roll = [3, 1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][0], (1, 0))
     self.assertEqual(next_boards[0][1], (13, 0))
     self.assertEqual(next_boards[0][BLACK_OFF_INDEX], (1, 0))
Esempio n. 13
0
 def test_black_enter_from_bar(self):
     board = get_blank_board()
     board[BLACK_BAR_INDEX] = (15, 0)
     board[23] = (0, 15)
     self.assertTrue(is_valid_board(board))
     roll = [2, 1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][BLACK_BAR_INDEX], (14, 0))
     self.assertEqual(next_boards[0][23], (0, 15))
     self.assertEqual(next_boards[0][22], (1, 0))
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, True, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][BLACK_BAR_INDEX], (15, 0))
     self.assertEqual(next_boards[0][23], (0, 15))
Esempio n. 14
0
 def test_white_enter_from_bar(self):
     board = get_blank_board()
     board[WHITE_BAR_INDEX] = (0, 15)
     board[0] = (15, 0)
     self.assertTrue(is_valid_board(board))
     roll = [2, 1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][WHITE_BAR_INDEX], (0, 14))
     self.assertEqual(next_boards[0][0], (15, 0))
     self.assertEqual(next_boards[0][1], (0, 1))
     roll = [1, 1, 1, 1]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     self.assertEqual(next_boards[0][WHITE_BAR_INDEX], (0, 15))
     self.assertEqual(next_boards[0][0], (15, 0))
Esempio n. 15
0
 def test_use_larger(self):
     board = get_blank_board()
     board[11] = (2, 0)
     board[10] = (2, 0)
     board[9] = (2, 0)
     board[8] = (2, 0)
     board[7] = (2, 0)
     board[6] = (3, 0)
     board[5] = (0, 14)
     board[4] = (1, 0)
     board[3] = (1, 0)
     board[1] = (0, 1)
     roll = [2, 3]
     next_boards = generate_next_boards(board, False, roll)
     self.assertEqual(len(next_boards), 1)
     board[1] = (0, 0)
     board[4] = (0, 1)
     board[BLACK_BAR_INDEX] = (1, 0)
     self.assertIn(board, next_boards)