"""Tests for the hub zone.""" import pathlib from mudlib.portal import Portal from mudlib.zones import load_zone def test_load_hub_zone(): """Load the hub zone from TOML file.""" project_root = pathlib.Path(__file__).resolve().parents[1] hub_path = project_root / "content" / "zones" / "hub.toml" zone = load_zone(hub_path) assert zone.name == "hub" assert zone.width == 15 assert zone.height == 15 assert zone.toroidal is False assert zone.spawn_x == 7 assert zone.spawn_y == 7 def test_hub_zone_has_portals(): """Hub zone has portals to overworld, tavern, and treehouse.""" project_root = pathlib.Path(__file__).resolve().parents[1] hub_path = project_root / "content" / "zones" / "hub.toml" zone = load_zone(hub_path) # Find portals in zone contents portals = [obj for obj in zone._contents if isinstance(obj, Portal)] assert len(portals) == 3 # Check that we have portals to each target zone target_zones = {p.target_zone for p in portals} assert target_zones == {"overworld", "tavern", "treehouse"} def test_hub_zone_portals_at_correct_positions(): """Portals are at expected coordinates on the map.""" project_root = pathlib.Path(__file__).resolve().parents[1] hub_path = project_root / "content" / "zones" / "hub.toml" zone = load_zone(hub_path) portals = [obj for obj in zone._contents if isinstance(obj, Portal)] # North portal to overworld at (7, 0) overworld_portal = [p for p in portals if p.target_zone == "overworld"][0] assert overworld_portal.x == 7 assert overworld_portal.y == 0 assert overworld_portal.target_x == 500 assert overworld_portal.target_y == 500 # East portal to tavern at (14, 7) tavern_portal = [p for p in portals if p.target_zone == "tavern"][0] assert tavern_portal.x == 14 assert tavern_portal.y == 7 assert tavern_portal.target_x == 4 assert tavern_portal.target_y == 5 # South portal to treehouse at (7, 14) treehouse_portal = [p for p in portals if p.target_zone == "treehouse"][0] assert treehouse_portal.x == 7 assert treehouse_portal.y == 14 assert treehouse_portal.target_x == 0 assert treehouse_portal.target_y == 7