新增cdsl

This commit is contained in:
2026-08-24 14:52:08 +08:00
parent fd8c0c37ad
commit 9f8a55ff07
3892 changed files with 2872721 additions and 9169 deletions
+39 -1
View File
@@ -1,6 +1,8 @@
from __future__ import annotations
import sys
import json
import tempfile
import unittest
from copy import deepcopy
from pathlib import Path
@@ -9,7 +11,7 @@ from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT / "json_to_cdsl"))
from evidence_v2_to_cdsl import StepInspector, convert_evidence
from evidence_v2_to_cdsl import StepInspector, batch_convert, convert_evidence
def _identity(stable_id: str, *, kind: str = "feature", geometry: dict | None = None) -> dict:
@@ -59,6 +61,42 @@ FIXTURE = {
class EvidenceV2ToCdslTests(unittest.TestCase):
def test_batch_conversion_recurses_and_records_relative_source_path(self) -> None:
with tempfile.TemporaryDirectory() as temporary_directory:
root = Path(temporary_directory)
evidence_dir = root / "evidence"
source = evidence_dir / "category" / "part.solidworks_evidence_v2.json"
source.parent.mkdir(parents=True)
source.write_text(json.dumps(FIXTURE), encoding="utf-8")
output_dir = root / "output"
manifest = batch_convert(evidence_dir, output_dir)
self.assertEqual(manifest["input_count"], 1)
self.assertEqual(manifest["converted_count"], 1)
self.assertEqual(manifest["results"][0]["source"], "category/part.solidworks_evidence_v2.json")
diagnostic = json.loads((output_dir / "part.diagnostic.json").read_text(encoding="utf-8"))
self.assertEqual(diagnostic["source"], "category/part.solidworks_evidence_v2.json")
def test_batch_conversion_uses_full_filename_and_disambiguates_normalized_ids(self) -> None:
with tempfile.TemporaryDirectory() as temporary_directory:
root = Path(temporary_directory)
evidence_dir = root / "evidence"
sources = [
evidence_dir / "first" / "14.Rod Nut.solidworks_evidence_v2.json",
evidence_dir / "second" / "14 Rod Nut.solidworks_evidence_v2.json",
]
for source in sources:
source.parent.mkdir(parents=True, exist_ok=True)
source.write_text(json.dumps(FIXTURE), encoding="utf-8")
manifest = batch_convert(evidence_dir, root / "output")
self.assertEqual(manifest["converted_count"], 2)
part_ids = {item["part_id"] for item in manifest["results"]}
self.assertEqual(len(part_ids), 2)
self.assertTrue(all(part_id.startswith("14-Rod-Nut-") for part_id in part_ids))
def test_converts_fixed_evidence_v2_fixture_to_semantic_cdsl(self) -> None:
cdsl, diagnostic = convert_evidence(FIXTURE, source_name="fixture.solidworks_evidence_v2.json")
atoms = {feature["atomic_id"] for feature in cdsl["features"]}