mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 15:37:51 -08:00
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import io
|
|
from _pytest.capture import CaptureFixture
|
|
from _pytest.monkeypatch import MonkeyPatch
|
|
|
|
from bagels import build_result_string, main, pick_number
|
|
|
|
|
|
def test_build_result_string() -> None:
|
|
build_result_string(["a", "b", "c"], "abc")
|
|
|
|
|
|
def test_pick_number() -> None:
|
|
picked = pick_number()
|
|
assert len(picked) == 3
|
|
for el in picked:
|
|
assert el in "0123456789"
|
|
|
|
|
|
def test_main(monkeypatch: MonkeyPatch, capsys: CaptureFixture) -> None:
|
|
# Succeed
|
|
round_1 = "Y\n4444\nabc\n444\n456\n145\n321\n123"
|
|
|
|
# Fail after 20 guesses
|
|
round_2 = (
|
|
"666\n132\n321\n312\n132\n213\n678\n678\n678\n678\n678\n"
|
|
"678\n678\n678\n678\n678\n678\n678\n678\n678\n678\nNo"
|
|
)
|
|
monkeypatch.setattr("sys.stdin", io.StringIO(f"{round_1}\nYES\n{round_2}"))
|
|
monkeypatch.setattr("bagels.pick_number", lambda: ["1", "2", "3"])
|
|
main()
|
|
captured = capsys.readouterr()
|
|
assert "Would you like the rules" in captured.out
|
|
assert "I have a number in mind" in captured.out
|
|
assert "My number was" in captured.out
|
|
assert "Hope you had fun." in captured.out
|