mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 23:26:40 -08:00
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
import io
|
|
|
|
from _pytest.monkeypatch import MonkeyPatch
|
|
from _pytest.capture import CaptureFixture
|
|
|
|
from bounce import main
|
|
|
|
|
|
def test_bounce(monkeypatch: MonkeyPatch, capsys: CaptureFixture[str]) -> None:
|
|
time_increment = 0.1
|
|
velocity = 30
|
|
coefficient = 1
|
|
monkeypatch.setattr(
|
|
"sys.stdin",
|
|
io.StringIO(f"{time_increment:0.1f}\n{velocity}\n{coefficient}\n"),
|
|
)
|
|
main()
|
|
actual = capsys.readouterr().out
|
|
expected = """ BOUNCE
|
|
CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
|
|
|
|
|
|
|
|
THIS SIMULATION LETS YOU SPECIFY THE INITIAL VELOCITY
|
|
OF A BALL THROWN STRAIGHT UP, AND THE COEFFICIENT OF
|
|
ELASTICITY OF THE BALL. PLEASE USE A DECIMAL FRACTION
|
|
COEFFICIENCY (LESS THAN 1).
|
|
|
|
YOU ALSO SPECIFY THE TIME INCREMENT TO BE USED IN
|
|
'STROBING' THE BALL'S FLIGHT (TRY .1 INITIALLY).
|
|
|
|
TIME INCREMENT (SEC)?
|
|
VELOCITY (FPS)?
|
|
COEFFICIENT?
|
|
FEET
|
|
|
|
14 000 000 000
|
|
0 0 0
|
|
13 0 0 0 0 0 0
|
|
|
|
12 0 0 0 0 0 0
|
|
|
|
11 0 0 0
|
|
0 0 0
|
|
10
|
|
0 0 0
|
|
9 0 0 0
|
|
|
|
8
|
|
0 0 0
|
|
7 0 0 0
|
|
|
|
6
|
|
0 0 0
|
|
5 0 0 0
|
|
|
|
4
|
|
|
|
3 0 0 0
|
|
|
|
2 0 0 0
|
|
|
|
1
|
|
|
|
00 0 0
|
|
...................................................................
|
|
0 1 2 3 4 5 6
|
|
|
|
SECONDS
|
|
|
|
""" # noqa: W291
|
|
assert actual.split("\n") == expected.split("\n")
|