This commit is contained in:
2025-09-23 11:11:47 +08:00
parent 674a7b16b7
commit 45f86ba95e
11 changed files with 121 additions and 377 deletions

View File

@@ -15,7 +15,7 @@ class TestMainProgram:
def test_example_input(self):
"""Test the example input from the requirements"""
cards_str = "AsKs AhAdAc6s7s"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == "Quad(A)"
@@ -35,19 +35,18 @@ class TestMainProgram:
]
for cards_str, expected_result in test_cases:
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == expected_result, f"Failed for {cards_str}"
def test_wheel_straight(self):
"""Test A-2-3-4-5 straight (wheel)"""
"""Test A-2-3-4-5 straight"""
cards_str = "As2h3d4c5h7s8s"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == "Straight(5 high)"
def test_different_card_formats(self):
"""Test different ways of writing the same cards"""
# These should all represent the same hand
formats = [
"AsKsAhAdAc6s7s",
"As Ks Ah Ad Ac 6s 7s",
@@ -57,30 +56,29 @@ class TestMainProgram:
expected_result = "Quad(A)"
for cards_str in formats:
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == expected_result
def test_case_insensitive_suits(self):
"""Test that suits are case insensitive"""
cards_str = "AsKsAhAdAc6s7s"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == "Quad(A)"
def test_edge_cases(self):
"""Test edge cases and boundary conditions"""
# All same rank except one
cards_str = "2s2h2d2c3s4h5d"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == "Quad(2)"
# Minimum straight
cards_str = "As2h3d4c5h6s7s"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
# Should pick 3-4-5-6-7 over A-2-3-4-5
assert "Straight(7 high)" in str(ranking)
# Maximum straight
cards_str = "9sTsJhQdKhAsAd"
ranking = HandEvaluator.evaluate_from_input(cards_str)
ranking = HandEvaluator.evaluateFromInput(cards_str)
assert str(ranking) == "Straight(A high)"