Exemplo n.º 1
0
def test_holdem():
    def multi(h1, h2, board):
        r = cpoker.multi_holdem([h1, h2], board)
        if r != poker.multi_holdem([h1, h2], board):
            for h in [h1, h2, board]:
                print utils.make_pretty(h)
            print r
            print poker.multi_holdem([h1, h2], board)
            assert False
        return r[0] if len(r) == 1 else 2

    funcs = [
        poker_lite.holdem2p,
        lambda h1, h2, b: poker_lite.compare(h1 + b, h2 + b),
        cpoker.holdem2p,
        poker.holdem2p,
        multi,
    ]

    for f in funcs:
        f = utils.pretty_args(f)
        assert f("Td 3d", "Ac As", "Ks 8h 4h 6d Qh") == 1
        assert f("Td 5h", "Ad 2s", "Ah 4h Kd 5c 4c") == 1
        assert f("2s Td", "7c 8c", "7h Ah 3c 2h 2d") == 0
        assert f("Jc 4h", "3h 8d", "9d 5d Js Tc 7s") == 1
        assert f("Ts 7c", "Tc 2h", "6s Ad Ac 6h Kc") == 2
        assert f("5d 7d", "8d Kd", "3h 5s 3c 5h Qh") == 0
        assert f("7s 4h", "Ts Js", "4d 6h 6c Qs 6d") == 0
        assert f("7s 6c", "2h Jd", "8c Ks 3h 7c Ts") == 0
        assert f("Kd 3d", "Jh 3c", "6d Kh 2s Th 6c") == 0
        assert f("2s 4s", "9d Th", "Kc Ks Qs Ah 3c") == 1
        assert f("Kh Th", "Qd 4d", "Qh Js 5c 2s 2d") == 1
        assert f("8s Td", "Jc Qs", "4h 8d 9s 9h Qd") == 1
        assert f("7c Js", "Kd 6s", "3h Ad 4h 2c Tc") == 1
        assert f("6c Qh", "Jh Qs", "9c 9s 4h Ts Jc") == 1
        assert f("2h 3c", "Tc Kd", "4c 4d Kh 5s 4s") == 1
        assert f("Ts 4d", "Ks Ad", "2h 3s 4s 7s Jd") == 0
        assert f("4s Qc", "8c Qd", "9h 9s 4c 3d Js") == 0
        assert f("3c 2c", "5s 2d", "3h 4h 8s Ad 2h") == 1
        assert f("7c Jh", "Ah 6c", "8s 9s Qd 3c 5d") == 1
        assert f("Qc Ts", "9h 5d", "5h Jd 5c Js 3c") == 1
        assert f("Tc 5h", "6s Jd", "Ah 7d 4h 9s 4s") == 1
        assert f("4c 9h", "9c 7h", "Ac 9d Jd 8h 5c") == 2
        assert f("4d Ah", "Qs 8s", "9c 3s 2d Ad Ts") == 0
        assert f("Th 3d", "Ad 3c", "Jh 7s 5s Ah 2c") == 1
        assert f("9h 4s", "3s Jc", "4h Ad 8c 2s 9c") == 0
        assert f("7d Js", "Td 8s", "6h 6s Kc 7h 4c") == 0
        assert f("2d 6d", "Qd 9d", "Ad 2s 6h Qs 7h") == 0
        assert f("Qs Ts", "Th 5d", "9d 2c Qc 3h Ah") == 0
        assert f("5h 8d", "4d Jc", "Ac Js Jd 4c 2s") == 1
        assert f("4s Ad", "5h 4c", "Jc 9h 3d Qc 2s") == 0

    # do some more for good measure
    for __ in xrange(1000):
        cards = utils.deal()
        if len(set([f(*cards) for f in funcs])) != 1:
            print [f(*cards) for f in funcs]
            assert False
Exemplo n.º 2
0
def test_holdem():
    def multi(h1, h2, board):
        r = cpoker.multi_holdem([h1, h2], board)
        if r != poker.multi_holdem([h1, h2], board):
            for h in [h1, h2, board]:
                print(utils.make_pretty(h))
            print(r)
            print(poker.multi_holdem([h1, h2], board))
            assert False
        return r[0] if len(r) == 1 else 2

    funcs = [poker_lite.holdem2p,
             lambda h1, h2, b:poker_lite.compare(h1 + b, h2 + b),
             #cpoker.holdem2p,
             poker.holdem2p,
             #multi
             ]

    for f in funcs:
        f = utils.pretty_args(f)
        assert f('Td 3d', 'Ac As', 'Ks 8h 4h 6d Qh') == 1
        assert f('Td 5h', 'Ad 2s', 'Ah 4h Kd 5c 4c') == 1
        assert f('2s Td', '7c 8c', '7h Ah 3c 2h 2d') == 0
        assert f('Jc 4h', '3h 8d', '9d 5d Js Tc 7s') == 1
        assert f('Ts 7c', 'Tc 2h', '6s Ad Ac 6h Kc') == 2
        assert f('5d 7d', '8d Kd', '3h 5s 3c 5h Qh') == 0
        assert f('7s 4h', 'Ts Js', '4d 6h 6c Qs 6d') == 0
        assert f('7s 6c', '2h Jd', '8c Ks 3h 7c Ts') == 0
        assert f('Kd 3d', 'Jh 3c', '6d Kh 2s Th 6c') == 0
        assert f('2s 4s', '9d Th', 'Kc Ks Qs Ah 3c') == 1
        assert f('Kh Th', 'Qd 4d', 'Qh Js 5c 2s 2d') == 1
        assert f('8s Td', 'Jc Qs', '4h 8d 9s 9h Qd') == 1
        assert f('7c Js', 'Kd 6s', '3h Ad 4h 2c Tc') == 1
        assert f('6c Qh', 'Jh Qs', '9c 9s 4h Ts Jc') == 1
        assert f('2h 3c', 'Tc Kd', '4c 4d Kh 5s 4s') == 1
        assert f('Ts 4d', 'Ks Ad', '2h 3s 4s 7s Jd') == 0
        assert f('4s Qc', '8c Qd', '9h 9s 4c 3d Js') == 0
        assert f('3c 2c', '5s 2d', '3h 4h 8s Ad 2h') == 1
        assert f('7c Jh', 'Ah 6c', '8s 9s Qd 3c 5d') == 1
        assert f('Qc Ts', '9h 5d', '5h Jd 5c Js 3c') == 1
        assert f('Tc 5h', '6s Jd', 'Ah 7d 4h 9s 4s') == 1
        assert f('4c 9h', '9c 7h', 'Ac 9d Jd 8h 5c') == 2
        assert f('4d Ah', 'Qs 8s', '9c 3s 2d Ad Ts') == 0
        assert f('Th 3d', 'Ad 3c', 'Jh 7s 5s Ah 2c') == 1
        assert f('9h 4s', '3s Jc', '4h Ad 8c 2s 9c') == 0
        assert f('7d Js', 'Td 8s', '6h 6s Kc 7h 4c') == 0
        assert f('2d 6d', 'Qd 9d', 'Ad 2s 6h Qs 7h') == 0
        assert f('Qs Ts', 'Th 5d', '9d 2c Qc 3h Ah') == 0
        assert f('5h 8d', '4d Jc', 'Ac Js Jd 4c 2s') == 1
        assert f('4s Ad', '5h 4c', 'Jc 9h 3d Qc 2s') == 0

    #do some more for good measure
    for __ in range(1000):
        cards = utils.deal()
        if len(set([f(*cards) for f in funcs])) != 1:
            print([f(*cards) for f in funcs])
            assert False
Exemplo n.º 3
0
def test_cfull_enumeration_with_boardcards_against_py():
    switch = {3: 4, 4: 3}
    n = 3
    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, n])
        hands, board = cards[:2], cards[2]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))

    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, 2, n])
        hands, board = cards[:3], cards[3]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))

    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, 2, 2, 2, n])
        hands, board = cards[:5], cards[5]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))
Exemplo n.º 4
0
def test_cfull_enumeration_with_boardcards_against_py():
    switch = {3:4, 4:3}
    n = 3
    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, n])
        hands, board = cards[:2], cards[2]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))

    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, 2, n])
        hands, board = cards[:3], cards[3]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))

    for __ in range(100):
        n = switch[n]
        cards = utils.deal([2, 2, 2, 2, 2, n])
        hands, board = cards[:5], cards[5]
        map(assert_close, cpoker.full_enumeration(hands, board), poker.full_enumeration(hands, board))