tilemapper/test/test_mapper.py

81 lines
2.1 KiB
Python
Raw Normal View History

2025-08-08 15:40:41 -07:00
from io import StringIO
from textwrap import dedent
import pytest
from tilemapper import battlemap, tileset
from tilemapper.grid import X_COORDS
2025-08-08 15:40:41 -07:00
@pytest.fixture
def manager():
2025-08-11 17:05:22 -07:00
return tileset.TileSetManager()
2025-08-08 15:40:41 -07:00
@pytest.fixture
def sample_map():
return dedent(
"""
# ........ 1
# ........ ........ 2
# ........ ........
# .......L...D... D
# ........ .... ...
# ........ ...d ...
# .
# .........S. 3
# 5 . .
# ....S... ...d.... 4
# ........ ........
# ........ ........
[map]
name = "sample map"
description = "sample dungeon"
[1]
name = "room 1"
[2]
name = "room 2"
[3]
name = "room 3"
[4]
name = "room 4"
[5]
name = "room 5"
2025-08-08 15:40:41 -07:00
"""
)
def test_tileset_loader(manager):
2025-08-11 17:05:22 -07:00
assert "colorized" in manager.available
assert "ascii" in manager.available
2025-08-08 15:40:41 -07:00
def test_renderer(manager, sample_map):
test_map = battlemap.BattleMap(source=StringIO(sample_map), tileset=manager.load("ascii"))
2025-08-08 15:40:41 -07:00
test_map.load()
assert test_map.width == 21
assert test_map.height == 12
srclines = sample_map.splitlines()[1:]
strlines = str(test_map).splitlines()
for i in range(len(strlines)):
assert strlines[i] == srclines[i].lstrip(' #').ljust(21, " ")
def test_grid_coordiates(manager):
coord_length = len(X_COORDS)
map_size = 2 * coord_length + 1
bigmap = StringIO((' # ' + ("." * map_size) + "\n") * map_size)
test_map = battlemap.BattleMap(source=bigmap, tileset=manager.load("ascii"))
test_map.load()
assert test_map.grid.data[-1][-1].coordinates == (f"{map_size - 1}", X_COORDS[0] * 3)
lines = test_map.top_coordinates.splitlines()
assert len(lines) == 3
assert lines[0] == (" " * (map_size - 1)) + X_COORDS[0]
assert lines[1][: (coord_length + 1)] == (" " * coord_length) + X_COORDS[0]
assert lines[2] == "".join(X_COORDS) + ((coord_length + 1) * X_COORDS[0])