#!/usr/bin/env python3
import json
import math
from pathlib import Path

project = Path('/home/alina/aNavigator')
data_path = project / 'src/realistic_roads_bologna.geojson'
data = json.loads(data_path.read_text(encoding='utf-8'))
features = data.get('features', [])
assert 5000 <= len(features) <= 15000, len(features)
assert data_path.stat().st_size < 5_000_000, data_path.stat().st_size

layers = {}
for feature in features:
    props = feature.get('properties') or {}
    layer = props.get('layer')
    layers[layer] = layers.get(layer, 0) + 1
    geometry = feature.get('geometry') or {}
    assert geometry.get('type') in {'Polygon', 'MultiPolygon'}, geometry.get('type')
    if layer == 'road_marking':
        assert props.get('confidence') in {
            'verified_marking', 'verified_lanes_standard_marking', 'verified_osm_control'
        }, props
        assert props.get('osm_way_ids'), props

for required in ('asphalt', 'intersection', 'road_marking', 'crosswalk'):
    assert layers.get(required, 0) > 0, (required, layers)

html = (project / 'src/map.html').read_text(encoding='utf-8')
for layer_id in ('osm2streets-asphalt', 'osm2streets-intersections',
                 'osm2streets-markings', 'osm2streets-crosswalks'):
    assert layer_id in html, layer_id

build = (project / 'build_ipa.sh').read_text(encoding='utf-8')
assert 'realistic_roads_bologna.geojson' in build
assert 'remaining = stableProgress.remaining' not in html

print(f'PASS features={len(features)} bytes={data_path.stat().st_size} layers={layers}')
