Files
auto_el/analyze/tests/test_bars.py
T

71 lines
1.8 KiB
Python

import shutil
from pathlib import Path
import pytest
import analyze
ALL_IMAGES = (
sorted(Path("tests/images/harvesting").glob("*.png"))
+ sorted(Path("tests/images/not_harvesting").glob("*.png"))
)
assert len(ALL_IMAGES) > 0, "no images found under tests/images"
# Inventory capacity was observed to change as the player collects items.
# Frames not listed here are expected to read 106.
INVENTORY_EXPECTED = {
"frame_00000.png": 110,
"frame_00001.png": 110,
"frame_00002.png": 108,
"frame_00003.png": 108,
}
OCR_AVAILABLE = analyze.pytesseract is not None and shutil.which("tesseract") is not None
pytestmark = pytest.mark.skipif(
not OCR_AVAILABLE,
reason="pytesseract or tesseract-ocr not installed",
)
@pytest.fixture(scope="session")
def bar_values():
values = {}
for path in ALL_IMAGES:
image = analyze.load_image(path)
assert image is not None, f"cannot load {path}"
values[path.name] = analyze.read_bar_values(image)
return values
def test_mana_is_32(bar_values):
for name, values in bar_values.items():
assert values["mana"] == 32, name
def test_food_is_39(bar_values):
for name, values in bar_values.items():
assert values["food"] == 39, name
def test_health_is_40(bar_values):
for name, values in bar_values.items():
assert values["health"] == 40, name
def test_action_points_are_140(bar_values):
for name, values in bar_values.items():
assert values["action_points"] == 140, name
def test_inventory_matches_expected(bar_values):
for name, values in bar_values.items():
expected = INVENTORY_EXPECTED.get(name, 106)
assert values["inventory"] == expected, name
def test_every_bar_has_a_value(bar_values):
for name, values in bar_values.items():
assert all(v is not None for v in values.values()), name