initial commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
from wordle_solver.game import Clue
|
||||
from wordle_solver.wager import Wager
|
||||
|
||||
G = Clue.GREEN
|
||||
Y = Clue.YELLOW
|
||||
B = Clue.GREY
|
||||
|
||||
|
||||
class TestWagerCost:
|
||||
def test_all_correct_costs_one_each(self):
|
||||
w = Wager()
|
||||
assert w.cost_of((G, G, G, G, G)) == 5
|
||||
|
||||
def test_all_present_costs_two_each(self):
|
||||
w = Wager()
|
||||
assert w.cost_of((Y, Y, Y, Y, Y)) == 10
|
||||
|
||||
def test_all_absent_costs_three_each(self):
|
||||
w = Wager()
|
||||
assert w.cost_of((B, B, B, B, B)) == 15
|
||||
|
||||
def test_mixed_cost(self):
|
||||
w = Wager()
|
||||
assert w.cost_of((G, Y, B, G, B)) == 1 + 2 + 3 + 1 + 3
|
||||
|
||||
|
||||
class TestWagerAccumulation:
|
||||
def test_add_accumulates_round_and_session(self):
|
||||
w = Wager()
|
||||
w.add((G, G, G, G, G)) # cost 5
|
||||
w.add((B, B, B, B, B)) # cost 15
|
||||
assert w.round_total == 20
|
||||
assert w.session_total == 20
|
||||
|
||||
def test_new_round_resets_round_total_only(self):
|
||||
w = Wager()
|
||||
w.add((G, G, G, G, G)) # cost 5
|
||||
w.new_round()
|
||||
w.add((B, B, B, B, B)) # cost 15 in new round
|
||||
assert w.round_total == 15
|
||||
assert w.session_total == 20 # unchanged across rounds
|
||||
|
||||
def test_add_returns_cost_of_that_guess(self):
|
||||
w = Wager()
|
||||
cost = w.add((G, Y, B, G, B))
|
||||
assert cost == 1 + 2 + 3 + 1 + 3
|
||||
|
||||
def test_fresh_wager_starts_at_zero(self):
|
||||
w = Wager()
|
||||
assert w.round_total == 0
|
||||
assert w.session_total == 0
|
||||
|
||||
|
||||
class TestWagerPrices:
|
||||
def test_set_prices_changes_cost(self):
|
||||
w = Wager()
|
||||
w.set_prices(10, 20, 30)
|
||||
assert w.cost_of((G, Y, B)) == 60
|
||||
|
||||
def test_reset_via_set_prices_default(self):
|
||||
w = Wager()
|
||||
w.set_prices(10, 20, 30)
|
||||
w.set_prices(1, 2, 3)
|
||||
assert w.cost_of((G, Y, B)) == 6
|
||||
|
||||
def test_prices_str_contains_values(self):
|
||||
w = Wager()
|
||||
s = w.prices_str()
|
||||
assert "$1" in s
|
||||
assert "$2" in s
|
||||
assert "$3" in s
|
||||
|
||||
def test_prices_str_after_custom_prices(self):
|
||||
w = Wager()
|
||||
w.set_prices(5, 10, 15)
|
||||
s = w.prices_str()
|
||||
assert "$5" in s
|
||||
assert "$10" in s
|
||||
assert "$15" in s
|
||||
Reference in New Issue
Block a user