MapToPoster / test_logic.py
isaachwf's picture
Sync from GitHub via hub-sync
008947a verified
Raw History Blame Contribute Delete
3.15 kB
"""Compatibility pytest module for the original data helpers.
The detailed product tests live under ``tests/``; these checks stay at the
historical path so existing contributors can still run ``uv run pytest``.
"""
from __future__ import annotations
import os
import tempfile
from cities_data import get_china_adcode, get_cities, get_districts, get_manual_coordinates, get_provinces
from maptoposter.layers import keys_to_labels, selected_labels_to_keys, selected_layer_flags
from maptoposter.rendering import create_bbox, generate_output_filename
from maptoposter.themes import list_themes, load_theme
def test_china_hierarchy() -> None:
provinces = get_provinces("中国", lang="cn")
assert len(provinces) > 30
assert any(province[1] == "广东省" for province in provinces)
cities = get_cities("中国", "广东省", lang="cn")
assert len(cities) > 10
assert cities[0] == ("整个省", "广东省_WHOLE")
assert any(city[1] == "广州市" for city in cities)
districts = get_districts("中国", "广东省", "广州市", lang="cn")
assert len(districts) > 5
assert districts[0][0] == "整个城市"
assert any(district[1] == "天河区" for district in districts)
assert get_cities("中国", "上海市", lang="cn") == [("上海市", "上海市")]
shanghai_districts = get_districts("中国", "上海市", "上海市", lang="cn")
assert len(shanghai_districts) > 10
assert any(district[1] == "浦东新区" for district in shanghai_districts)
def test_manual_coordinates() -> None:
guangdong = get_china_adcode("广东省")
guangzhou = get_china_adcode("广州市", guangdong)
assert get_manual_coordinates("广州市", guangdong) is not None
assert get_manual_coordinates("天河区", guangzhou) is not None
shanghai = get_china_adcode("上海市")
assert get_manual_coordinates("浦东新区", shanghai) is not None
def test_theme_helpers() -> None:
themes = list_themes()
assert "feature_based" in themes
assert load_theme("feature_based", verbose=False)["name"] == "Feature-Based Shading"
assert load_theme("__missing_theme__", verbose=False)["name"] == "Feature-Based Shading"
def test_layer_helpers() -> None:
keys = selected_labels_to_keys(["Motorway", "主干道", "Water"])
assert keys == ["motorway", "primary", "water"]
assert keys_to_labels(keys, "cn") == ["高速公路", "主干道", "水域"]
assert selected_layer_flags(["Motorway", "水域"]) == {
"show_motorway": True,
"show_primary": False,
"show_secondary": False,
"show_water": True,
"show_parks": False,
}
def test_rendering_helpers() -> None:
west, south, east, north = create_bbox((30.0, 120.0), 10_000, 12, 16)
assert west < east and south < north
assert (east - west) < (north - south)
with tempfile.TemporaryDirectory() as temp_dir:
filename = generate_output_filename("New York", "noir", "png", directory=temp_dir)
assert filename.startswith(temp_dir)
assert filename.endswith(".png")
assert "new-york-noir-" in os.path.basename(filename)