"""Independent set calculations on the public, CLDR-derived inventory.
No font file, glyph shapes or shaping engine is tested.
"""
import json
from pathlib import Path

root = Path(__file__).resolve().parent
data = json.loads((root / 'dataset.json').read_text())
results = json.loads((root / 'results.json').read_text())
ascii_points = set(range(0x20, 0x7f))
counts = dict(full=0, core=0, missing=0, not_assessed_shaping_required=0)
main_union, all_union = set(), set()
for language in data['languages']:
    main = language['mainCharacters']
    extra = language['auxiliaryCharacters']
    assert len(set(main)) == language['mainCount']
    assert len(set(extra)) == language['auxiliaryCount']
    assert len(set(main + extra)) == language['unionCount']
    if not language['checkedByCharacterChecker']:
        counts['not_assessed_shaping_required'] += 1
        continue
    missing = [c for c in main if ord(c) not in ascii_points]
    auxiliary = [c for c in extra if ord(c) not in ascii_points]
    assert missing == language['missingMainFromAscii']
    assert auxiliary == language['missingAuxiliaryFromAscii']
    status = 'missing' if missing else 'core' if auxiliary else 'full'
    assert language['asciiStatus'] == status
    counts[status] += 1
    main_union.update(main)
    all_union.update(main + extra)
assert counts == results['statusCounts']
assert len(main_union) == results['mainCodePointUnionCount'] == 611
assert len(all_union) == results['mainAndAuxiliaryCodePointUnionCount'] == 817
print(json.dumps({'languages': len(data['languages']), 'counts': counts,
                  'mainUnion': len(main_union), 'mainAndAuxiliaryUnion': len(all_union),
                  'actualFontFilesTested': 0}))
