コード例 #1
0
def setup_table():
    table = Table()
    players = [Player("uuid%d"%i, 100, "hoge") for i in range(3)]
    table.seats.players = players
    table.add_community_card(Card.from_id(1))
    table.dealer_btn = 2
    table.set_blind_pos(2, 0)
    p1, p2, p3 = table.seats.players
    p3.add_action_history(Const.Action.RAISE, 10, 5)
    p1.add_action_history(Const.Action.FOLD)
    p2.add_action_history(Const.Action.RAISE, 20, 10)
    p3.add_action_history(Const.Action.CALL, 20)
    [p.save_street_action_histories(Const.Street.PREFLOP) for p in [p1, p2, p3]]
    p3.add_action_history(Const.Action.CALL, 5)
    p2.add_action_history(Const.Action.RAISE, 5, 5)
    return table
コード例 #2
0
def setup_table():
    table = Table()
    players = [Player("uuid%d" % i, 100, "hoge") for i in range(3)]
    table.seats.players = players
    table.add_community_card(Card.from_id(1))
    table.dealer_btn = 2
    table.set_blind_pos(2, 0)
    p1, p2, p3 = table.seats.players
    p3.add_action_history(Const.Action.RAISE, 10, 5)
    p1.add_action_history(Const.Action.FOLD)
    p2.add_action_history(Const.Action.RAISE, 20, 10)
    p3.add_action_history(Const.Action.CALL, 20)
    [
        p.save_street_action_histories(Const.Street.PREFLOP)
        for p in [p1, p2, p3]
    ]
    p3.add_action_history(Const.Action.CALL, 5)
    p2.add_action_history(Const.Action.RAISE, 5, 5)
    return table
コード例 #3
0
 def __setup_table(self):
   table = Table()
   table.set_blind_pos(0, 1)
   table.seats = self.__setup_seats()
   table.add_community_card(Card.from_id(1))
   return table
コード例 #4
0
class TableTest(BaseUnitTest):

    def setUp(self):
        self.__setup_table()
        self.__setup_player()
        self.table.seats.sitdown(self.player)

    def test_set_blind(self):
        self.assertIsNone(self.table._blind_pos)
        self.table.set_blind_pos(1, 2)
        self.assertIsNotNone(self.table._blind_pos)
        self.eq(1, self.table.sb_pos())
        self.eq(2, self.table.bb_pos())

    def test_set_blind_error(self):
        with self.assertRaises(Exception) as e1:
            self.table.sb_pos()
        with self.assertRaises(Exception) as e2:
            self.table.bb_pos()
        for e in [e1, e2]:
            self.eq('blind position is not yet set', str(e.exception))

    def test_reset_deck(self):
        self.table.reset()
        self.eq(52, self.table.deck.size())

    def test_reset_commynity_card(self):
        self.table.reset()
        for card in self.table.deck.draw_cards(5):
            self.table.add_community_card(card)

    def test_reset_player_status(self):
        self.table.reset()
        self.eq(0, len(self.player.hole_card))
        self.eq(0, len(self.player.action_histories))
        self.eq(PayInfo.PLAY_TILL_END, self.player.pay_info.status)

    @raises(ValueError)
    def test_community_card_exceed_size(self):
        self.table.add_community_card(Card.from_id(1))

    def test_shift_dealer_btn_skip(self):
        table = self.__setup_players_with_table()
        table.shift_dealer_btn()
        self.eq(2, table.dealer_btn)
        table.shift_dealer_btn()
        self.eq(0, table.dealer_btn)

    def test_next_ask_waiting_player_pos(self):
        table = self.__setup_players_with_table()
        self.eq(0, table.next_ask_waiting_player_pos(0))
        self.eq(0, table.next_ask_waiting_player_pos(1))
        self.eq(0, table.next_ask_waiting_player_pos(2))

    def test_next_ask_waitint_player_pos_when_no_one_waiting(self):
        table = self.__setup_players_with_table()
        table.seats.players[0].pay_info.update_to_allin()
        self.eq(table._player_not_found, table.next_ask_waiting_player_pos(0))
        self.eq(table._player_not_found, table.next_ask_waiting_player_pos(1))
        self.eq(table._player_not_found, table.next_ask_waiting_player_pos(2))

    def test_serialization(self):
        table = self.__setup_players_with_table()
        for card in table.deck.draw_cards(3):
            table.add_community_card(card)
        table.shift_dealer_btn()
        table.set_blind_pos(1, 2)
        serial = table.serialize()
        restored = Table.deserialize(serial)
        self.eq(table.dealer_btn, restored.dealer_btn)
        self.eq(Seats.serialize(table.seats), Seats.serialize(restored.seats))
        self.eq(Deck.serialize(table.deck), Deck.serialize(restored.deck))
        self.eq(table.get_community_card(), restored.get_community_card())
        self.eq(1, restored.sb_pos())
        self.eq(2, restored.bb_pos())

    def __setup_table(self):
        self.table = Table()
        for card in self.table.deck.draw_cards(5):
            self.table.add_community_card(card)

    def __setup_player(self):
        self.player = Player('uuid', 100)
        self.player.add_holecard([Card.from_id(cid + 1) for cid in range(2)])
        self.player.add_action_history(Const.Action.CALL, 10)
        self.player.pay_info.update_to_fold()

    def __setup_players_with_table(self):
        p1 = Player('uuid1', 100)
        p2 = Player('uuid2', 100)
        p3 = Player('uuid3', 100)
        p2.pay_info.update_to_fold()
        p3.pay_info.update_to_allin()
        table = Table()
        for player in [p1, p2, p3]:
            table.seats.sitdown(player)
        return table