from __future__ import annotations import tempfile import unittest from pathlib import Path from cadfs_to_cdsl.dataset import Sample from cadfs_to_cdsl.reports import read_json from cadfs_to_cdsl.selector_candidate_demo import _search_candidate_records, run_geometry_probe, strip_provenance_intents def _contains_selector_intent(value: object) -> bool: if isinstance(value, dict): return "selector_intent" in value or any(_contains_selector_intent(child) for child in value.values()) if isinstance(value, list): return any(_contains_selector_intent(child) for child in value) return False class SelectorCandidateDemoTests(unittest.TestCase): def test_search_candidates_excludes_records_below_normal_resolution_threshold(self) -> None: resolution = type("Resolution", (), { "candidates": ( {"record_id": "low", "score": 0.5}, {"record_id": "high-b", "score": 1.0}, {"record_id": "high-a", "score": 1.0}, {"record_id": "zero", "score": 0.0}, ), })() candidates, count = _search_candidate_records(resolution, maximum=8) self.assertEqual(count, 2) self.assertEqual([item["record_id"] for item in candidates], ["high-a", "high-b"]) def test_strip_provenance_intents_removes_nested_selector_metadata(self) -> None: value = { "selector_intent": {"version": "1.0"}, "params": {"reference": {"selector_intent_version": "1.0"}}, } self.assertEqual(strip_provenance_intents(value), 2) self.assertEqual(value, {"params": {"reference": {}}}) def test_geometry_probe_keeps_heuristic_success_separate_from_provenance(self) -> None: root = Path(__file__).parents[2] / "data/cadfs-sample/CADFS_test" feature = root / "featurescript_rp/0000/00002243.txt" step = root / "step_abc/0000/00002243.step" if not feature.exists() or not step.exists(): self.skipTest("CADFS sample is not installed") sample = Sample("00002243", {"featurescript": str(feature), "step": str(step)}) with tempfile.TemporaryDirectory() as temporary: output = Path(temporary) report = run_geometry_probe(sample, output) record = read_json(output / "samples" / sample.sample_id / "selector-record.json") compiled = read_json(output / "samples" / sample.sample_id / "selector_record.compiled.cdsl.json") self.assertEqual(report["provenance"]["rebuild_status"], "rebuild_failed") self.assertEqual(report["geometry_probe"]["rebuild_status"], "rebuilt") self.assertEqual(report["geometry_probe"]["comparison"], { "decision": "strict_pass", "strict_passed": True, "rp_passed": True, }) self.assertEqual(report["strategy"]["classification"], "heuristic_only") self.assertEqual(report["selector_record"]["status"], "strict_replayed") self.assertEqual(report["selector_record"]["record_count"], 2) self.assertEqual(record["verification"], { "geometry_probe_strict": True, "compiled_cdsl_strict": True, "compiled_cdsl": report["selector_record"]["compiled_cdsl"], }) self.assertEqual([entry["mapping"] for entry in record["records"]], ["one_to_one", "one_to_one"]) self.assertTrue(all(entry["source_selector"]["selector_intent"]["query_family"] == "CAP_EDGE" for entry in record["records"])) self.assertFalse(_contains_selector_intent(compiled))