| """Tests for the canonical record schema and label mapping.""" |
|
|
| from __future__ import annotations |
|
|
| from pathlib import Path |
|
|
| from ccdp.data.schema import CANONICAL_PARTS, Record, map_to_canonical_part |
|
|
|
|
| def test_canonical_parts_match_seed_catalog(): |
| from ccdp.costing import build_seed_catalog |
| cat = build_seed_catalog() |
| |
| missing = [p for p in CANONICAL_PARTS if p not in cat.parts] |
| assert not missing, f"Catalog missing canonical parts: {missing}" |
|
|
|
|
| def test_label_mapping_known_cases(): |
| assert map_to_canonical_part("Front Bumper") == "front_bumper" |
| assert map_to_canonical_part("rear-bumper") == "rear_bumper" |
| assert map_to_canonical_part("hood") == "hood" |
| assert map_to_canonical_part("bonnet") == "hood" |
| assert map_to_canonical_part("Head Light") == "headlight" |
| assert map_to_canonical_part("WindScreen") == "windshield" |
| assert map_to_canonical_part("Boot") == "trunk" |
| assert map_to_canonical_part("rim") == "wheel" |
|
|
|
|
| def test_label_mapping_unknown_returns_none(): |
| assert map_to_canonical_part("flux capacitor") is None |
| assert map_to_canonical_part("") is None |
|
|
|
|
| def test_record_image_id_stable(): |
| r = Record(image_path=Path("/tmp/foo/img_001.jpg"), dataset="iaai") |
| assert r.image_id == "iaai/img_001.jpg" |
| assert r.is_identified is False |
| r.make, r.model = "honda", "civic" |
| assert r.is_identified is True |
|
|