Files
basic-computer-games/15_Boxing/python/test_boxing.py
2022-03-23 21:32:36 +01:00

62 lines
1.6 KiB
Python

import io
from _pytest.capture import CaptureFixture
from _pytest.monkeypatch import MonkeyPatch
from boxing import play
def test_boxing_bad_opponent(
monkeypatch: MonkeyPatch, capsys: CaptureFixture[str]
) -> None:
monkeypatch.setattr("boxing.Player.get_punch_choice", lambda self: 1)
monkeypatch.setattr("boxing.get_opponent_stats", lambda: (2, 1))
monkeypatch.setattr("boxing.is_opponents_turn", lambda: False)
opponent = "Anna"
my_man = "Bob"
strength = "1"
weakness = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(f"{opponent}\n{my_man}\n{strength}\n{weakness}\n1\n1\n1"),
)
play()
actual = capsys.readouterr().out
expected = """BOXING
CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
BOXING OLYMPIC STYLE (3 ROUNDS -- 2 OUT OF 3 WINS)
WHAT IS YOUR OPPONENT'S NAME? WHAT IS YOUR MAN'S NAME? DIFFERENT PUNCHES ARE 1 FULL SWING 2 HOOK 3 UPPERCUT 4 JAB
WHAT IS YOUR MAN'S BEST? WHAT IS HIS VULNERABILITY? Anna'S ADVANTAGE is 1 AND VULNERABILITY IS SECRET.
ROUND 1 BEGINS...
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob WINS ROUND 1
ROUND 2 BEGINS...
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob SWINGS AND HE CONNECTS!
Bob WINS ROUND 2
ROUND 3 BEGINS...
Bob AMAZINGLY WINS
AND NOW GOODBYE FROM THE OLYMPIC ARENA.
"""
assert actual.split("\n") == expected.split("\n")