38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
#!/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()
|