import unittest from texas_holdem.cards import Card from texas_holdem.evaluator import evaluate def cards(values: str) -> list[Card]: return [Card.parse(value) for value in values.split()] class EvaluatorTests(unittest.TestCase): def test_straight_flush_beats_four_of_a_kind(self) -> None: straight_flush = evaluate(cards("Ah Kh Qh Jh Th 2c 3d")) quads = evaluate(cards("As Ac Ad Ah Kc 2d 3s")) self.assertGreater(straight_flush, quads) self.assertEqual(straight_flush.name, "straight_flush") def test_wheel_straight_is_ranked_as_five_high(self) -> None: value = evaluate(cards("Ah 2c 3d 4s 5h Kc Qd")) self.assertEqual(value.name, "straight") self.assertEqual(value.ranks, (5,)) def test_two_pair_uses_kicker(self) -> None: ace_kicker = evaluate(cards("Ah Ac Kd Ks Qh 2c 3d")) jack_kicker = evaluate(cards("As Ad Kh Kc Jh 2d 3s")) self.assertGreater(ace_kicker, jack_kicker) if __name__ == "__main__": unittest.main()