#!/usr/bin/env python3
"""Verify the generated primary CJK subset policy without rasterizing fonts."""
from __future__ import annotations

import importlib.util
from pathlib import Path


REPO_DIR = Path(__file__).resolve().parents[2]
GENERATOR = REPO_DIR / "scripts" / "generate-cjk-subset.py"
spec = importlib.util.spec_from_file_location("generate_cjk_subset", GENERATOR)
assert spec and spec.loader
generator = importlib.util.module_from_spec(spec)
spec.loader.exec_module(generator)

level1 = generator.gb2312_level1_han()
assert len(level1) == 3755, f"unexpected GB2312 Level 1 size: {len(level1)}"
assert len(level1) == len(set(level1)), "GB2312 Level 1 contains duplicate Unicode characters"

subset = set(generator.characters(generator.DEFAULT_GLYPH_COUNT))
missing = [character for character in level1 if character not in subset]
assert not missing, (
    f"{len(missing)} GB2312 Level 1 glyphs missing from "
    f"{generator.DEFAULT_GLYPH_COUNT}-glyph subset: {''.join(missing[:20])}"
)

# These regression probes must be covered by the ordered GB2312 source, not by
# special-casing the two reported characters in REQUIRED.
assert "中" not in generator.REQUIRED and "这" not in generator.REQUIRED
assert {"中", "这"} <= subset
print(
    "CJK subset generator coverage PASS "
    f"(GB2312 Level 1 {len(level1)}/{len(level1)}, "
    f"glyphs={generator.DEFAULT_GLYPH_COUNT}, 中/这 covered)"
)
