Files
basic-computer-games/06_Banner/python/test_banner.py
2022-03-22 11:58:30 +01:00

110 lines
3.2 KiB
Python

import io
from _pytest.monkeypatch import MonkeyPatch
from _pytest.capture import CaptureFixture
from banner import print_banner
def test_print_banner(monkeypatch: MonkeyPatch) -> None:
horizontal = "1"
vertical = "1"
centered = "1"
char = "*"
statement = "O" # only capital letters
set_page = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(
f"{horizontal}\n{vertical}\n{centered}\n{char}\n{statement}\n{set_page}"
),
)
print_banner()
def test_print_banner_horizontal_0(
monkeypatch: MonkeyPatch, capsys: CaptureFixture
) -> None:
horizontal = "1"
vertical = "1"
centered = "1"
char = "*"
statement = "O" # only capital letters
set_page = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(
f"0\n{horizontal}\n{vertical}\n{centered}\n{char}\n{statement}\n{set_page}"
),
)
print_banner()
captured = capsys.readouterr()
assert "Please enter a number greater than zero" in captured.out
def test_print_banner_vertical_0(
monkeypatch: MonkeyPatch, capsys: CaptureFixture
) -> None:
horizontal = "1"
vertical = "1"
centered = "1"
char = "*"
statement = "O" # only capital letters
set_page = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(
f"{horizontal}\n0\n{vertical}\n{centered}\n{char}\n{statement}\n{set_page}"
),
)
print_banner()
captured = capsys.readouterr()
assert "Please enter a number greater than zero" in captured.out
def test_print_banner_centered(
monkeypatch: MonkeyPatch, capsys: CaptureFixture
) -> None:
horizontal = "1"
vertical = "1"
centered = "Y"
char = "*"
statement = "O" # only capital letters
set_page = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(
f"{horizontal}\n{vertical}\n{centered}\n{char}\n{statement}\n{set_page}"
),
)
print_banner()
captured = capsys.readouterr()
expected = (
"Horizontal Vertical Centered Character "
"(type 'ALL' if you want character being printed) Statement Set page "
" *****\n"
" * *\n"
" * *\n"
" * *\n"
" * *\n"
" * *\n"
" *****\n\n\n"
)
assert captured.out.split("\n") == expected.split("\n")
def test_print_banner_all_statement(
monkeypatch: MonkeyPatch, capsys: CaptureFixture
) -> None:
horizontal = "1"
vertical = "1"
centered = "1"
char = "UNIT TESTING"
statement = "ALL" # only capital letters
set_page = "2"
monkeypatch.setattr(
"sys.stdin",
io.StringIO(
f"{horizontal}\n{vertical}\n{centered}\n{char}\n{statement}\n{set_page}"
),
)
print_banner()