#!/usr/bin/env python3 import importlib.util import json import tempfile import unittest from pathlib import Path MODULE = Path(__file__).resolve().parents[1] / "scripts" / "build-tiles.py" SPEC = importlib.util.spec_from_file_location("build_tiles", MODULE) build_tiles = importlib.util.module_from_spec(SPEC) assert SPEC.loader is not None SPEC.loader.exec_module(build_tiles) class BuildTilesTests(unittest.TestCase): def test_rotation_changes_extent_and_keeps_area(self): plain = {"north": 40.1, "south": 39.7, "east": 25.5, "west": 25.0, "rotation": 0.0} rotated = {**plain, "rotation": 10.0} plain_corners = build_tiles.rotated_corners(plain) rotated_corners = build_tiles.rotated_corners(rotated) self.assertNotEqual(plain_corners, rotated_corners) self.assertAlmostEqual(build_tiles.polygon_area(plain_corners), build_tiles.polygon_area(rotated_corners), places=2) def test_source_override_precedes_global(self): config = {"global": {"minzoom": 7, "maxzoom": 12}, "sources": {"Altis.kmz": {"minzoom": 9, "maxzoom": 14}}} self.assertEqual(build_tiles.effective_zooms(11, "Altis.kmz", config), (9, 14, True)) def test_config_normalizes_source_key(self): with tempfile.TemporaryDirectory() as directory: path = Path(directory) / "maps.json" path.write_text(json.dumps({"global": {}, "sources": {"nested\\map.kmz": {"minzoom": 8}}})) self.assertIn("nested/map.kmz", build_tiles.read_config(path)["sources"]) if __name__ == "__main__": unittest.main()