Files
cpp-garmin-img-to-osm/tests/test_obf_pipeline.py
T

36 lines
1.8 KiB
Python
Raw Normal View History

2026-10-14 17:04:46 +00:00
#!/usr/bin/env python3
"""Offline contract tests: upstream XML augmentation and frequent/rare type retention."""
import importlib.util
from pathlib import Path
import tempfile
import unittest
import xml.etree.ElementTree as ET
S=Path(__file__).resolve().parents[1]/'scripts'/'build_bgmountains.py'
spec=importlib.util.spec_from_file_location('build_bgmountains',S)
mod=importlib.util.module_from_spec(spec);spec.loader.exec_module(mod)
class XmlPipelineTests(unittest.TestCase):
def test_full_default_preserved_and_all_codes_indexed(self):
with tempfile.TemporaryDirectory() as td:
td=Path(td)
pb=td/'upstream-poi.xml';rb=td/'upstream-render.xml'
pb.write_text('<poi_types><poi_category name="food"><poi_type name="restaurant" tag="amenity" value="restaurant"/></poi_category></poi_types>')
rb.write_text('<osmand_types><category name="roads"><type tag="highway" value="path" minzoom="11"/></category><category name="user_defined"/></osmand_types>')
cc=[dict(code='0x6414',count=32922,has_typ_icon='yes'),dict(code='0x123',count=1,has_typ_icon='no')]
a,b,s=mod.make_configs(pb,rb,cc,td,100)
p=ET.parse(a).getroot();r=ET.parse(b).getroot()
self.assertIsNotNone(p.find(".//poi_type[@name='restaurant']"))
self.assertEqual(len(p.findall(".//poi_category[@name='bgmountains_raw']/poi_type")),2)
self.assertIsNotNone(r.find(".//type[@tag='highway']"))
self.assertEqual(r.find(".//type[@value='type_0x6414']").get('minzoom'),'15')
self.assertEqual(r.find(".//type[@value='type_0x123']").get('minzoom'),'17')
self.assertEqual(s['types_at_or_above_threshold'],1)
def test_real_catalog(self):
d=mod.catalog_rows(S.parents[1]/'data'/'BGMountains-unique-poi-types.csv')
self.assertEqual(len(d),263)
self.assertEqual(sum(x['count'] for x in d),410563)
self.assertEqual(sum(x['count']>=100 for x in d),87)
if __name__=='__main__':unittest.main()