Exemplo n.º 1
0
 def test_rainbow(self):
     self.assertTrue(rainbow(()))
     self.assertTrue(rainbow(parse_cards('Ac')))
     self.assertTrue(rainbow(parse_cards('AhJsQc')))
     self.assertTrue(rainbow(parse_cards('AhAsJdQc')))
     self.assertFalse(rainbow(parse_cards('AhAsJsQhAh')))
     self.assertFalse(rainbow(parse_cards('AhAsJsQh')))
Exemplo n.º 2
0
 def test_suited(self):
     self.assertTrue(suited(()))
     self.assertTrue(suited((parse_card('Ah'), )))
     self.assertTrue(suited(parse_cards('AhKhQhJhTh')))
     self.assertFalse(suited(parse_cards('AhKhQhJhTs')))
     self.assertFalse(suited(parse_cards('AsKc')))
     self.assertFalse(suited(parse_cards('AsKcQdJhTs')))
Exemplo n.º 3
0
    def test_lowballA5_hand(self):
        self.assertRaises(ValueError, LowballA5Hand,
                          parse_cards('9sTsJsQsKsAs'))
        self.assertRaises(ValueError, LowballA5Hand,
                          parse_cards('4c5dThJsAcKh2h'))
        self.assertRaises(ValueError, LowballA5Hand, parse_cards('AcAdAhAsAc'))

        hands = tuple(
            map(
                LowballA5Hand,
                map(parse_cards, (
                    'Ac2c3c4c5c',
                    '6c4d3h2sAc',
                    '6c5d3h2sAc',
                    '6c5c4c2cAc',
                    '6c5d4h3sAc',
                    '6c5d4h3s2c',
                    '7c4d3h2sAc',
                    '7c5d3h2sAc',
                    '7c6d5h4s3c',
                    '8c5d4h3sAc',
                    '8c5d4h3s2c',
                    '9c7d6h4s3c',
                    'KcJd8h6s4c',
                    'AcAd9h5s3c',
                    '2c2d5h4s3c',
                    '3c3d6h4s2c',
                    '3c3d6h5sAc',
                    '2s2c3s3cAh',
                    'AcAdAsKhQs',
                    'KhKsKcAcAd',
                    'KhKsKcKdAc',
                ))))

        self.assertSequenceEqual(hands, sorted(hands, reverse=True))
Exemplo n.º 4
0
    def test_lowball27_hand(self):
        self.assertRaises(ValueError, Lowball27Hand,
                          parse_cards('9sTsJsQsKsAs'))
        self.assertRaises(ValueError, Lowball27Hand,
                          parse_cards('4c5dThJsAcKh2h'))
        self.assertRaises(ValueError, Lowball27Hand, parse_cards('AcAdAhAsAc'))

        hands = tuple(
            map(
                Lowball27Hand,
                map(parse_cards, (
                    '7c5d4h3s2c',
                    '7c6d4h3s2c',
                    '7c6d5h3s2c',
                    '7c6d5h4s2c',
                    '8c5d4h3s2c',
                    '8c6d4h3s2c',
                    '8c6d5h3s2c',
                    '8c6d5h4s2c',
                    '8c6d5h4s3c',
                    '8c7d4h3s2c',
                    '8c7d5h3s2c',
                    '8c7d5h4s2c',
                    '8c7d5h4s3c',
                    '8c7d6h3s2c',
                    '8c7d6h4s2c',
                    '8c7d6h4s3c',
                    '8c7d6h5s2c',
                    '8c7d6h5s3c',
                    '9c5d4h3s2c',
                    'KsKcAhQsJs',
                    'AhAc2c3c4c',
                    'AhAc2c3c5c',
                    '2c2d3s3c4s',
                    'AcAdKsKcTs',
                    'AcAdKsKcJs',
                    'QcQsQhAhKh',
                    'AcAsAd2s4s',
                    'AcAsAd3s4s',
                    'Ac2s3d4s5s',
                    '2c3s4d5s6s',
                    'TcJsQdKsAs',
                    '9c5c4c3c2c',
                    'Kc5c4c3c2c',
                    'KhKsKdAhAc',
                    'AcAdAsKhKs',
                    '2c2d2h2sQs',
                    '2c2d2h2sKs',
                    'AcAdAhAsKs',
                    '2c3c4c5c6c',
                    '3d4d5d6d7d',
                    '9sTsJsQsKs',
                    'TsJsQsKsAs',
                ))))

        self.assertSequenceEqual(hands, sorted(hands, reverse=True))
Exemplo n.º 5
0
    def test_draw(self):
        deck = StandardDeck()

        self.assertEqual(len(deck), 52)
        self.assertIn(parse_card('4h'), deck)
        self.assertEqual(deck.draw(parse_cards('4h4c4s')), tuple(parse_cards(
            '4h4c4s'
        )))
        self.assertEqual(len(deck), 49)
        self.assertNotIn(parse_card('4h'), deck)
        self.assertEqual(len(deck.draw(1)), 1)
        self.assertEqual(len(deck), 48)
        self.assertRaises(ValueError, deck.draw, 49)
Exemplo n.º 6
0
    def test_total_ordering(self):
        quad = StandardHand(parse_cards('AcAdAhAsKs'))
        straight_flush = StandardHand(parse_cards('TsJsQsKsAs'))
        wheel = Lowball27Hand(parse_cards('2c3d4h5s7c'))

        self.assertLess(quad, straight_flush)
        self.assertLessEqual(quad, straight_flush)
        self.assertGreater(straight_flush, quad)
        self.assertGreaterEqual(straight_flush, quad)
        self.assertEqual(quad, quad)
        self.assertEqual(straight_flush, straight_flush)
        self.assertNotEqual(quad, straight_flush)
        self.assertNotEqual(straight_flush, wheel)

        self.assertRaises(TypeError, le, quad, wheel)
Exemplo n.º 7
0
 def test_parse_cards(self):
     self.assertCountEqual(
         parse_cards('AcAdAhAs'),
         map(partial(Card, Rank.ACE), Suit),
     )
     self.assertCountEqual(parse_cards('Kh???sJhA?????2c'), (
         Card(Rank.KING, Suit.HEART),
         Card(None, None),
         Card(None, Suit.SPADE),
         Card(Rank.JACK, Suit.HEART),
         Card(Rank.ACE, None),
         Card(None, None),
         Card(None, None),
         Card(Rank.TWO, Suit.CLUB),
     ))
Exemplo n.º 8
0
 def test_standard_deck(self):
     self.assertCountEqual(StandardDeck(), parse_cards(
         '2c3c4c5c6c7c8c9cTcJcQcKcAc'
         '2d3d4d5d6d7d8d9dTdJdQdKdAd'
         '2h3h4h5h6h7h8h9hThJhQhKhAh'
         '2s3s4s5s6s7s8s9sTsJsQsKsAs'
     ))
Exemplo n.º 9
0
 def test_short_deck(self):
     self.assertCountEqual(ShortDeck(), parse_cards(
         '6c7c8c9cTcJcQcKcAc'
         '6d7d8d9dTdJdQdKdAd'
         '6h7h8h9hThJhQhKhAh'
         '6s7s8s9sTsJsQsKsAs'
     ))
Exemplo n.º 10
0
 def test_greek_evaluator_evaluate_hand(self):
     self.assertEqual(
         GreekEvaluator.evaluate_hand(
             parse_cards('Ac2d'),
             parse_cards('QdJdTh2sKs'),
         ), StandardHand(parse_cards('2s2dAcKsQd')))
     self.assertEqual(
         GreekEvaluator.evaluate_hand(
             parse_cards('AsKs'),
             parse_cards('QdJdTh2s2d'),
         ), StandardHand(parse_cards('AsKsQdJdTh')))
     self.assertEqual(
         GreekEvaluator.evaluate_hand(
             parse_cards('Ac9c'),
             parse_cards('AhKhQhJhTh'),
         ), StandardHand(parse_cards('AcAhKhQh9c')))
Exemplo n.º 11
0
 def test_rank_evaluator_evaluate_hand(self):
     self.assertEqual(
         RankEvaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsKcJsTs'),
         ), LowIndexedHand(Rank.ACE.index))
     self.assertEqual(
         RankEvaluator.evaluate_hand(
             parse_cards('9c6c'),
             parse_cards('9h9sKcJcTc'),
         ), LowIndexedHand(Rank.KING.index))
     self.assertEqual(
         RankEvaluator.evaluate_hand(
             parse_cards('Tc2d'),
             (),
         ), LowIndexedHand(Rank.TEN.index))
     self.assertEqual(RankEvaluator.evaluate_hand(
         parse_cards('3c'),
         (),
     ), LowIndexedHand(Rank.THREE.index))
Exemplo n.º 12
0
 def test_omaha_evaluator_evaluate_hand(self):
     self.assertEqual(
         OmahaEvaluator.evaluate_hand(
             parse_cards('6c7c8c9c'),
             parse_cards('8s9sTc'),
         ), StandardHand(parse_cards('6c7c8s9sTc')))
     self.assertEqual(
         OmahaEvaluator.evaluate_hand(
             parse_cards('6c7c8s9s'),
             parse_cards('8c9cTc'),
         ), StandardHand(parse_cards('6c7c8c9cTc')))
     self.assertEqual(
         OmahaEvaluator.evaluate_hand(
             parse_cards('6c7c8c9c'),
             parse_cards('8s9sTc9hKs'),
         ), StandardHand(parse_cards('8c8s9c9s9h')))
     self.assertEqual(
         OmahaEvaluator.evaluate_hand(
             parse_cards('6c7c8sAh'),
             parse_cards('As9cTc2sKs'),
         ), StandardHand(parse_cards('AhAsKsTc8s')))
     self.assertEqual(
         OmahaEvaluator.evaluate_hand(
             parse_cards('Ac9cKs9s'),
             parse_cards('AhKhQhJhTh'),
         ), StandardHand(parse_cards('AcKsQhJhTh')))
Exemplo n.º 13
0
 def test_standard_evaluator_evaluate_hand(self):
     self.assertRaises(ValueError, StandardEvaluator.evaluate_hand, (), ())
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AcAd'),
             parse_cards('AhAsKcQdQh'),
         ), StandardHand(parse_cards('AcAdAhAsKc')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQsJsTs'),
         ), StandardHand(parse_cards('AsKsQsJsTs')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AcAd'),
             parse_cards('AhAsKcQd'),
         ), StandardHand(parse_cards('AcAdAhAsKc')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQsJs'),
         ), StandardHand(parse_cards('AcAhAsKsQs')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQs'),
         ), StandardHand(parse_cards('AcAhAsKsQs')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('Ac2d'),
             parse_cards('QdJdTh2sKs'),
         ), StandardHand(parse_cards('AcKsQdJdTh')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('AsKs'),
             parse_cards('QsJdTs2c2s'),
         ), StandardHand(parse_cards('AsKsQsTs2s')))
     self.assertEqual(
         StandardEvaluator.evaluate_hand(
             parse_cards('Ac9c'),
             parse_cards('AhKhQhJhTh'),
         ), StandardHand(parse_cards('AhKhQhJhTh')))
Exemplo n.º 14
0
 def test_badugi_evaluator_evaluate_hand(self):
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('2s4c5d6h'),
             (),
         ), BadugiHand(parse_cards('2s4c5d6h')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('As2d3d7h'),
             (),
         ), BadugiHand(parse_cards('As2d7h')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('4s4c4dKh'),
             (),
         ), BadugiHand(parse_cards('4sKh')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('2s3s4d7h'),
             (),
         ), BadugiHand(parse_cards('2s4d7h')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('As2d3s4h'),
             (),
         ), BadugiHand(parse_cards('As2d4h')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('KcKdKhKs'),
             (),
         ), BadugiHand(parse_cards('Ks')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('2s2c4d4h'),
             (),
         ), BadugiHand(parse_cards('2s4d')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('4s5s6dKh'),
             (),
         ), BadugiHand(parse_cards('4s6dKh')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('As2c3d3s'),
             (),
         ), BadugiHand(parse_cards('As2c3d')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('Ad2hKc3c'),
             (),
         ), BadugiHand(parse_cards('Ad2h3c')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('5d7cKcKh'),
             (),
         ), BadugiHand(parse_cards('5d7cKh')))
     self.assertEqual(
         BadugiEvaluator.evaluate_hand(
             parse_cards('2s3dKsKd'),
             (),
         ), BadugiHand(parse_cards('2s3d')))
Exemplo n.º 15
0
 def test_short_deck_evaluator_evaluate_hand(self):
     self.assertRaises(
         ValueError,
         ShortDeckEvaluator.evaluate_hand,
         parse_cards('AcKs'),
         parse_cards('4hAsKcJsTs'),
     )
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsKcJsTs'),
         ), ShortDeckHand(parse_cards('AcAhAsKcKs')))
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('Ac6s'),
             parse_cards('AhAsKcJcTc'),
         ), ShortDeckHand(parse_cards('AcAhAsKcJc')))
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('Ac6c'),
             parse_cards('AhAsKcJcTc'),
         ), ShortDeckHand(parse_cards('AcKcJcTc6c')))
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('AcAd'),
             parse_cards('6s7cKcKd'),
         ), ShortDeckHand(parse_cards('AcAdKcKd7c')))
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('Ac9d'),
             parse_cards('6s7s8c'),
         ), ShortDeckHand(parse_cards('Ac9d8c7s6s')))
     self.assertEqual(
         ShortDeckEvaluator.evaluate_hand(
             parse_cards('Ac9c'),
             parse_cards('AhKhQhJhTh'),
         ), ShortDeckHand(parse_cards('AhKhQhJhTh')))
Exemplo n.º 16
0
 def test_lowballA5_evaluator_evaluate_hand(self):
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AcAd'),
             parse_cards('AhAsKcQdQh'),
         ), LowballA5Hand(parse_cards('AcAsQdQhKc')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQsJsTs'),
         ), LowballA5Hand(parse_cards('KsAsQsJsTs')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AcAd'),
             parse_cards('AhAsKcQd'),
         ), LowballA5Hand(parse_cards('AdAhAsKcQd')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQsJs'),
         ), LowballA5Hand(parse_cards('AhAsKsQsJs')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AcKs'),
             parse_cards('AhAsQs'),
         ), LowballA5Hand(parse_cards('AcAhAsKsQs')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('Ac2d'),
             parse_cards('QdJdTh2sKs'),
         ), LowballA5Hand(parse_cards('AcQdJdTh2d')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('AsKs'),
             parse_cards('QsJsTs2c2s'),
         ), LowballA5Hand(parse_cards('AsQsJsTs2s')))
     self.assertEqual(
         LowballA5Evaluator.evaluate_hand(
             parse_cards('Ac9c'),
             parse_cards('AhKhQhJhTh'),
         ), LowballA5Hand(parse_cards('AhQhJhTh9c')))
Exemplo n.º 17
0
    def test_draw_muck(self):
        game = PotLimitTripleDrawLowball27(
            Stakes(0, (1, 2)),
            (100, ) * 4,
        ).act(
            'dh AcKcQcJcTc',
            'dh AdKdQdJdTd',
            'dh AhKhQhJhTh',
            'dh AsKsQsJsTs',
            'cc',
            'cc',
            'cc',
            'cc',
            'dd AcKcQcJcTc 9c8c7c6c5c',
            'dd AdKdQdJdTd 9d8d7d6d5d',
            'dd AhKhQhJhTh 9h8h7h6h5h',
            'dd AsKsQsJsTs 9s8s7s6s5s',
            'cc',
            'cc',
            'cc',
            'cc',
            'dd 9c8c7c6c5c 4c4d4h4s2c',
        )

        self.assertTrue(game.actor.can_discard_draw())
        self.assertTrue(game.actor.can_discard_draw(()))
        self.assertTrue(game.actor.can_discard_draw((), ()))

        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9d'),
                parse_cards('3c'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9d8d7d'),
                parse_cards('3c3d3h'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9d8d7d6d5d'),
                parse_cards('3c3d3h3s2d'),
            ))

        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9d'),
                parse_cards('9c'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9d8d7d'),
                parse_cards('9c8c7c'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9d8d7d6d5d'),
                parse_cards('9c8c7c6c5c'),
            ))

        game.actor.discard_draw(
            parse_cards('9d8d7d6d5d'),
            parse_cards('3c3d3h3s2d'),
        )

        self.assertTrue(game.actor.can_discard_draw())
        self.assertTrue(game.actor.can_discard_draw(()))
        self.assertTrue(game.actor.can_discard_draw((), ()))

        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h'),
                parse_cards('2s'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h8h'),
                parse_cards('2s2h'),
            ))

        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h'),
                parse_cards('Ac'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h'),
                parse_cards('AcKc'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h'),
                parse_cards('AcKcQc'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h6h5h'),
                parse_cards('AcKcQcJcTc'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h'),
                parse_cards('2s2hQc'),
            ))
        self.assertTrue(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h6h5h'),
                parse_cards('2s2hQcJcTc'),
            ))

        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h'),
                parse_cards('Ah'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h'),
                parse_cards('AhKh'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h'),
                parse_cards('AhKhQh'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h6h5h'),
                parse_cards('AhKhQhJhTh'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h'),
                parse_cards('2s2hQh'),
            ))
        self.assertFalse(
            game.actor.can_discard_draw(
                parse_cards('9h8h7h6h5h'),
                parse_cards('2s2hQhJhTh'),
            ))

        game.actor.discard_draw(
            parse_cards('9h8h7h6h5h'),
            parse_cards('AcKcQcJcTc'),
        )
Exemplo n.º 18
0
    def test_short_deck_hand(self):
        self.assertRaises(ValueError, ShortDeckHand,
                          parse_cards('9sTsJsQsKsAs'))
        self.assertRaises(ValueError, ShortDeckHand,
                          parse_cards('6c7dThJsAcKh8h'))
        self.assertRaises(ValueError, ShortDeckHand, parse_cards('AcAdAhAsAc'))
        self.assertRaises(ValueError, ShortDeckHand, parse_cards('Ac2c3c4c5c'))

        hands = tuple(
            map(
                ShortDeckHand,
                map(parse_cards, (
                    '6c7d8h9sJc',
                    '6c7d8h9sQc',
                    '6c7d8h9sKc',
                    '6c7d8hTsAc',
                    '6c7d9hTsAc',
                    '6c8d9hTsAc',
                    '9cJdQhKsAc',
                    '6c6dThJsQc',
                    '7c7dThJsQc',
                    '7c7dThJsKc',
                    '7c7dJhQsKc',
                    '7c7d6hKsAc',
                    'AcAd6hJsQc',
                    'AcAdKhQsJc',
                    '6c6dThTsQc',
                    '7c7dThTsQc',
                    '7c7dThTsKc',
                    '7c7dQhQsKc',
                    '6c6dKhKsAc',
                    'AcAd6h6sQc',
                    'AcAdKhKsQc',
                    '6c6d6hTsJc',
                    '7c7d7hTsQc',
                    '7c7d7hTsKc',
                    '7c7d7hQsKc',
                    'KcKdKh6sAc',
                    'AcAdAh6sQc',
                    'AcAdAhKsQc',
                    'Ac6d7h8s9c',
                    '6c7d8h9sTc',
                    '7c8d9hTsJc',
                    '8c9dThJsQc',
                    '9cTdJhQsKc',
                    'TcJdQhKsAc',
                    '6c6d6hTsTc',
                    '7c7d7hTsTc',
                    '7c7d7hKsKc',
                    '7c7d7hAsAc',
                    'KcKdKhAsAc',
                    'AcAdAhQsQc',
                    'AcAdAhKsKc',
                    '6c7c8c9cJc',
                    '6d7d9dJdKd',
                    '6h7hThJhKh',
                    '6s7sTsJsAs',
                    '6c8cTcJcAc',
                    '9dTdJdQdAd',
                    '9sTsJsKsAs',
                    '6c6d6h6s7c',
                    '6c6d6h6sTc',
                    '7c7d7h7sKc',
                    '7c7d7h7sAc',
                    'KcKdKhKsAc',
                    'AcAdAhAsQc',
                    'AcAdAhAsKc',
                    'Ac6c7c8c9c',
                    '6d7d8d9dTd',
                    '7h8h9hThJh',
                    '8s9sTsJsQs',
                    '9cTcJcQcKc',
                    'TdJdQdKdAd',
                ))))

        self.assertSequenceEqual(hands, sorted(hands))
Exemplo n.º 19
0
    def test_badugi_hand(self):
        self.assertRaises(ValueError, BadugiHand, parse_cards('Ac2d3c4s5c'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('AcAc'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('Ac2d3c'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('As2s'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('Ad2d3d4d'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('Ad2d3c4h'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('AcAd'))
        self.assertRaises(ValueError, BadugiHand, parse_cards('AcAd3h4s'))

        hands = tuple(
            map(
                BadugiHand,
                map(parse_cards, (
                    'Ac2d3h4s',
                    'Ac2d3h5s',
                    'Ac2d4h5s',
                    'Ac3d4h5s',
                    'Ac3d6h9s',
                    'Ac3d6hTs',
                    '7c8d9hTs',
                    '7c8d9hJs',
                    'TcJdQhKs',
                    'Ac2d3h',
                    'As2c4d',
                    'Ah3s4c',
                    '2d3h4s',
                    '4c5d6h',
                    '4s5c8d',
                    '4h5sTc',
                    '4d8hTs',
                    '4c8dKh',
                    'JsQcKd',
                    'Ac2d',
                    'Ah3s',
                    '2c3d',
                    '2h4s',
                    '2c5d',
                    '2h8s',
                    '7c8d',
                    '2hJs',
                    '3cJd',
                    'ThJs',
                    'TcKd',
                    'JhKs',
                    'QhKs',
                    'Ac',
                    '2d',
                    '3h',
                    '4s',
                    '5c',
                    '6d',
                    '7h',
                    '8s',
                    '9c',
                    'Td',
                    'Jh',
                    'Qs',
                    'Kc',
                ))))

        self.assertSequenceEqual(hands, sorted(hands, reverse=True))
Exemplo n.º 20
0
    def test_standard_hand(self):
        self.assertRaises(ValueError, StandardHand,
                          parse_cards('9sTsJsQsKsAs'))
        self.assertRaises(ValueError, StandardHand,
                          parse_cards('4c5dThJsAcKh2h'))
        self.assertRaises(ValueError, StandardHand, parse_cards('AcAdAhAsAc'))

        hands = tuple(
            map(
                StandardHand,
                map(parse_cards, (
                    '6c7d8h9sJc',
                    '4c5d9hJsKc',
                    '4c5dThJsKc',
                    '4c5dThJsAc',
                    '4c6dThJsAc',
                    '9cTdJhQsAc',
                    '9cTdJhKsAc',
                    '2c2dThJsQc',
                    '3c3dThJsQc',
                    '3c3dThJsKc',
                    '3c3dJhQsKc',
                    '3c3d2hKsAc',
                    'AcAd2hJsQc',
                    'AcAdKhQsJc',
                    '2c2dThTsQc',
                    '3c3dThTsQc',
                    '3c3dThTsKc',
                    '3c3dQhQsKc',
                    '2c2dKhKsAc',
                    'AcAd2h2sQc',
                    'AcAdKhKsQc',
                    '2c2d2hTsJc',
                    '3c3d3hTsQc',
                    '3c3d3hTsKc',
                    '3c3d3hQsKc',
                    'KcKdKh2sAc',
                    'AcAdAh2sQc',
                    'AcAdAhKsQc',
                    'Ac2d3h4s5c',
                    '2c3d4h5s6c',
                    '3c4d5h6s7c',
                    '4c5d6h7s8c',
                    '5c6d7h8s9c',
                    '9cTdJhQsKc',
                    'TcJdQhKsAc',
                    '6c7c8c9cJc',
                    '4d5d9dJdKd',
                    '4h5hThJhKh',
                    '4s5sTsJsAs',
                    '4c6cTcJcAc',
                    '9dTdJdQdAd',
                    '9sTsJsKsAs',
                    '2c2d2hTsTc',
                    '3c3d3hTsTc',
                    '3c3d3hKsKc',
                    '3c3d3hAsAc',
                    'KcKdKhAsAc',
                    'AcAdAhQsQc',
                    'AcAdAhKsKc',
                    '2c2d2h2s3c',
                    '2c2d2h2sTc',
                    '3c3d3h3sKc',
                    '3c3d3h3sAc',
                    'KcKdKhKsAc',
                    'AcAdAhAsQc',
                    'AcAdAhAsKc',
                    'Ac2c3c4c5c',
                    '2d3d4d5d6d',
                    '3h4h5h6h7h',
                    '4s5s6s7s8s',
                    '5c6c7c8c9c',
                    '9dTdJdQdKd',
                    'TsJsQsKsAs',
                ))))

        self.assertSequenceEqual(hands, sorted(hands))
Exemplo n.º 21
0
 def test_parse(self):
     self.assertSetEqual(
         Range('QJs'),
         set(
             map(frozenset, (
                 parse_cards('QcJc'),
                 parse_cards('QdJd'),
                 parse_cards('QhJh'),
                 parse_cards('QsJs'),
             ))))
     self.assertSetEqual(Range('2s3s'),
                         set(map(frozenset, (parse_cards('2s3s'), ))))
     self.assertSetEqual(
         Range('4s5h', '2s3s'),
         set(map(frozenset, (
             parse_cards('4s5h'),
             parse_cards('2s3s'),
         ))))
     self.assertSetEqual(
         Range(parse_cards('7s8s'), '27', 'AK', 'ATs+'),
         set(
             map(frozenset, (
                 parse_cards('7s8s'),
                 parse_cards('2c7d'),
                 parse_cards('2c7h'),
                 parse_cards('2c7s'),
                 parse_cards('2d7c'),
                 parse_cards('2d7h'),
                 parse_cards('2d7s'),
                 parse_cards('2h7c'),
                 parse_cards('2h7d'),
                 parse_cards('2h7s'),
                 parse_cards('2s7c'),
                 parse_cards('2s7d'),
                 parse_cards('2s7h'),
                 parse_cards('2c7c'),
                 parse_cards('2d7d'),
                 parse_cards('2h7h'),
                 parse_cards('2s7s'),
                 parse_cards('AcKd'),
                 parse_cards('AcKh'),
                 parse_cards('AcKs'),
                 parse_cards('AdKc'),
                 parse_cards('AdKh'),
                 parse_cards('AdKs'),
                 parse_cards('AhKc'),
                 parse_cards('AhKd'),
                 parse_cards('AhKs'),
                 parse_cards('AsKc'),
                 parse_cards('AsKd'),
                 parse_cards('AsKh'),
                 parse_cards('AcKc'),
                 parse_cards('AdKd'),
                 parse_cards('AhKh'),
                 parse_cards('AsKs'),
                 parse_cards('AcQc'),
                 parse_cards('AdQd'),
                 parse_cards('AhQh'),
                 parse_cards('AsQs'),
                 parse_cards('AcJc'),
                 parse_cards('AdJd'),
                 parse_cards('AhJh'),
                 parse_cards('AsJs'),
                 parse_cards('AcTc'),
                 parse_cards('AdTd'),
                 parse_cards('AhTh'),
                 parse_cards('AsTs'),
             ))),
     )
     self.assertSetEqual(
         Range('99+', (parse_card('2h'), parse_card('7s'))),
         set(
             map(frozenset, (
                 parse_cards('9c9d'),
                 parse_cards('9c9h'),
                 parse_cards('9c9s'),
                 parse_cards('9d9h'),
                 parse_cards('9d9s'),
                 parse_cards('9h9s'),
                 parse_cards('TcTd'),
                 parse_cards('TcTh'),
                 parse_cards('TcTs'),
                 parse_cards('TdTh'),
                 parse_cards('TdTs'),
                 parse_cards('ThTs'),
                 parse_cards('JcJd'),
                 parse_cards('JcJh'),
                 parse_cards('JcJs'),
                 parse_cards('JdJh'),
                 parse_cards('JdJs'),
                 parse_cards('JhJs'),
                 parse_cards('QcQd'),
                 parse_cards('QcQh'),
                 parse_cards('QcQs'),
                 parse_cards('QdQh'),
                 parse_cards('QdQs'),
                 parse_cards('QhQs'),
                 parse_cards('KcKd'),
                 parse_cards('KcKh'),
                 parse_cards('KcKs'),
                 parse_cards('KdKh'),
                 parse_cards('KdKs'),
                 parse_cards('KhKs'),
                 parse_cards('AcAd'),
                 parse_cards('AcAh'),
                 parse_cards('AcAs'),
                 parse_cards('AdAh'),
                 parse_cards('AdAs'),
                 parse_cards('AhAs'),
                 parse_cards('2h7s'),
             ))),
     )
     self.assertSetEqual(
         Range('QTs'),
         set(
             map(frozenset, (
                 parse_cards('QcTc'),
                 parse_cards('QdTd'),
                 parse_cards('QhTh'),
                 parse_cards('QsTs'),
             ))))
     self.assertSetEqual(
         Range('AKo'),
         set(
             map(frozenset, (
                 parse_cards('AcKd'),
                 parse_cards('AcKh'),
                 parse_cards('AcKs'),
                 parse_cards('AdKc'),
                 parse_cards('AdKh'),
                 parse_cards('AdKs'),
                 parse_cards('AhKc'),
                 parse_cards('AhKd'),
                 parse_cards('AhKs'),
                 parse_cards('AsKc'),
                 parse_cards('AsKd'),
                 parse_cards('AsKh'),
             ))))
     self.assertSetEqual(
         Range('AK'),
         set(
             map(frozenset, (
                 parse_cards('AcKd'),
                 parse_cards('AcKh'),
                 parse_cards('AcKs'),
                 parse_cards('AdKc'),
                 parse_cards('AdKh'),
                 parse_cards('AdKs'),
                 parse_cards('AhKc'),
                 parse_cards('AhKd'),
                 parse_cards('AhKs'),
                 parse_cards('AsKc'),
                 parse_cards('AsKd'),
                 parse_cards('AsKh'),
                 parse_cards('AcKc'),
                 parse_cards('AdKd'),
                 parse_cards('AhKh'),
                 parse_cards('AsKs'),
             ))))
     self.assertSetEqual(
         Range('JJ'),
         set(
             map(frozenset, (
                 parse_cards('JcJd'),
                 parse_cards('JcJh'),
                 parse_cards('JcJs'),
                 parse_cards('JdJh'),
                 parse_cards('JdJs'),
                 parse_cards('JhJs'),
             ))))
     self.assertSetEqual(Range('AsKh'), {frozenset(parse_cards('AsKh'))})
     self.assertSetEqual(
         Range('JJ+'),
         set(
             map(frozenset, (
                 parse_cards('JcJd'),
                 parse_cards('JcJh'),
                 parse_cards('JcJs'),
                 parse_cards('JdJh'),
                 parse_cards('JdJs'),
                 parse_cards('JhJs'),
                 parse_cards('QcQd'),
                 parse_cards('QcQh'),
                 parse_cards('QcQs'),
                 parse_cards('QdQh'),
                 parse_cards('QdQs'),
                 parse_cards('QhQs'),
                 parse_cards('KcKd'),
                 parse_cards('KcKh'),
                 parse_cards('KcKs'),
                 parse_cards('KdKh'),
                 parse_cards('KdKs'),
                 parse_cards('KhKs'),
                 parse_cards('AcAd'),
                 parse_cards('AcAh'),
                 parse_cards('AcAs'),
                 parse_cards('AdAh'),
                 parse_cards('AdAs'),
                 parse_cards('AhAs'),
             ))))
     self.assertSetEqual(
         Range('JTo+'),
         set(
             map(frozenset, (
                 parse_cards('JcTd'),
                 parse_cards('JcTh'),
                 parse_cards('JcTs'),
                 parse_cards('JdTc'),
                 parse_cards('JdTh'),
                 parse_cards('JdTs'),
                 parse_cards('JhTc'),
                 parse_cards('JhTd'),
                 parse_cards('JhTs'),
                 parse_cards('JsTc'),
                 parse_cards('JsTd'),
                 parse_cards('JsTh'),
             ))))
     self.assertSetEqual(
         Range('QT+'),
         set(
             map(frozenset, (
                 parse_cards('QcTd'),
                 parse_cards('QcTh'),
                 parse_cards('QcTs'),
                 parse_cards('QdTc'),
                 parse_cards('QdTh'),
                 parse_cards('QdTs'),
                 parse_cards('QhTc'),
                 parse_cards('QhTd'),
                 parse_cards('QhTs'),
                 parse_cards('QsTc'),
                 parse_cards('QsTd'),
                 parse_cards('QsTh'),
                 parse_cards('QcTc'),
                 parse_cards('QdTd'),
                 parse_cards('QhTh'),
                 parse_cards('QsTs'),
                 parse_cards('QcJd'),
                 parse_cards('QcJh'),
                 parse_cards('QcJs'),
                 parse_cards('QdJc'),
                 parse_cards('QdJh'),
                 parse_cards('QdJs'),
                 parse_cards('QhJc'),
                 parse_cards('QhJd'),
                 parse_cards('QhJs'),
                 parse_cards('QsJc'),
                 parse_cards('QsJd'),
                 parse_cards('QsJh'),
                 parse_cards('QcJc'),
                 parse_cards('QdJd'),
                 parse_cards('QhJh'),
                 parse_cards('QsJs'),
             ))))
     self.assertSetEqual(Range('9T+'), set())
     self.assertSetEqual(
         Range('AsKsQsJsT?'),
         set(
             map(frozenset, (
                 parse_cards('AsKsQsJsTc'),
                 parse_cards('AsKsQsJsTd'),
                 parse_cards('AsKsQsJsTh'),
                 parse_cards('AsKsQsJsTs'),
             ))))
     self.assertSetEqual(Range('9?T?'), Range('9T'))
     self.assertSetEqual(Range('A???'), Range('A2+') | Range('AA'))