def test_3(self): bstr = "...o......,....x.....,.....x....,..o...o..." b = Board() b.set_board(bstr) self.assertCountEqual([(3, 0, Checker(BLACK)), (2, 3, Checker(BLACK)), (6, 3, Checker(BLACK)), (4, 1, Checker(WHITE)), (5, 2, Checker(WHITE))], b.get_checkers())
def test_jump_crowning(self): b = Board() b.set_board("...,...o,....x") b.push(b.legal_moves()[0]) self.assertEqual("..X.......,,,,,,,,,", b.get_board()) self.assertEqual(Checker(WHITE, True), b.checker_at(2, 0)) b.pop() self.assertEqual(",...o......,....x.....,,,,,,,", b.get_board()) self.assertEqual(Checker(WHITE, False), b.checker_at(4, 2))
def update_point(self, color): if color == "BLACK": self.point['BLACK'] += 1 self.piece_position.append( Checker(display_width+82, self.past_x_black+60, color)) self.past_x_black += 60 else: self.point['WHITE'] += 1 self.piece_position.append( Checker(display_width+82, self.past_x_white+60, color)) self.past_x_white += 60
def test_promotion_pop(self): b = Board() b.set_board(",x") b.push(b.legal_moves()[0]) chk = Checker(WHITE, True) self.assertTrue(b.move_stack[-1][-1].is_promotion) self.assertEqual(b.checker_at(1, 0), chk) b.push([Move(chk, (1, 0), (5, 4))]) self.assertEqual(b.checker_at(5, 4), chk) b.pop() self.assertEqual(b.checker_at(1, 0), Checker(WHITE, True)) b.pop() self.assertEqual(b.checker_at(0, 1), Checker(WHITE, False))
def test_1(self): bstr = "x" b = Board() b.set_board(bstr) # https://docs.python.org/3.2/library/unittest.html#unittest.TestCase.assertCountEqual # tests if list have same elements self.assertCountEqual([(0, 0, Checker(WHITE))], b.get_checkers())
def test_border_twice(self): b = Board() b.set_board("...X") cx = Checker(WHITE, True) b.push([Move(cx, (3, 0), (5, 2))]) self.assertTrue(True, cx.crowned) b.push([Move(cx, (5, 2), (7, 0))]) self.assertTrue(True, cx.crowned) b.pop() self.assertTrue(True, cx.crowned) b.pop() self.assertTrue(True, cx.crowned)
def test_move_king_black_corner(self): b = Board() b.set_board(",,,,,,,,,.........O") b.color = BLACK bc = Checker(BLACK, True) self.assertCountEqual([ [Move(bc, (9, 9), (8, 8))], [Move(bc, (9, 9), (7, 7))], [Move(bc, (9, 9), (6, 6))], [Move(bc, (9, 9), (5, 5))], [Move(bc, (9, 9), (4, 4))], [Move(bc, (9, 9), (3, 3))], [Move(bc, (9, 9), (2, 2))], [Move(bc, (9, 9), (1, 1))], [Move(bc, (9, 9), (0, 0))], ], b.legal_moves())
def run(): # 添加项目目录到环境变量 sys.path.append(settings.BASE_DIR) # 连接redis,实例化spider, parse, checker redis_cli = redis.Redis(**settings.REDIS_PARAM) spider = Spider() parser = Parser(spider.queue, redis_cli) checher = Checker(redis_cli) # 创建并启动线程 thread_list = [ Thread(target=spider.run), Thread(target=parser.run), Thread(target=checher.run) ] for thread in thread_list: thread.start()
def test_move_two_kings_white(self): b = Board() b.set_board(".......X.X") wc = Checker(WHITE, True) # white, crowned checker (X) self.assertCountEqual([ [Move(wc, (7, 0), (6, 1))], [Move(wc, (7, 0), (5, 2))], [Move(wc, (7, 0), (4, 3))], [Move(wc, (7, 0), (3, 4))], [Move(wc, (7, 0), (2, 5))], [Move(wc, (7, 0), (1, 6))], [Move(wc, (7, 0), (0, 7))], [Move(wc, (7, 0), (8, 1))], [Move(wc, (7, 0), (9, 2))], [Move(wc, (9, 0), (8, 1))], [Move(wc, (9, 0), (7, 2))], [Move(wc, (9, 0), (6, 3))], [Move(wc, (9, 0), (5, 4))], [Move(wc, (9, 0), (4, 5))], [Move(wc, (9, 0), (3, 6))], [Move(wc, (9, 0), (2, 7))], [Move(wc, (9, 0), (1, 8))], [Move(wc, (9, 0), (0, 9))], ], b.legal_moves())
def test_2(self): bstr = ".....o" b = Board() b.set_board(bstr) self.assertCountEqual([(5, 0, Checker(BLACK))], b.get_checkers())
def create_piece(self): for i in self.all_piec_cord[:12]: self.pieces.append(Checker(i[0], i[1], "WHITE")) for i in self.all_piec_cord[::-1][:12]: self.pieces.append(Checker(i[0], i[1], "BLACK"))