34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
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()
|