feat:新增登录功能

This commit is contained in:
2026-08-28 18:17:38 +08:00
parent 0a50d9098e
commit dee5e7557a
+38
View File
@@ -174,6 +174,44 @@ class EvidenceV2ToCdslTests(unittest.TestCase):
self.assertTrue(comparison["numeric_geometry_match"])
self.assertTrue(comparison["topology_counts_match"])
def _chamfer_only_fixture(self, dimensions: list[float], props: dict | None = None) -> dict:
return {
"schema": "solidworks.cad_evidence.v2",
"status": "complete_with_blockers",
"self_validation": {"feature_contracts": []},
"features": [{
"sequence": 1, "name": "Chamfer", "effective_type": "Chamfer", "stable_id": "chamfer",
"definition_properties": {"values": props or {}},
"definition_methods": {"values": {}}, "parents": [], "selections": [],
"dimensions": [{"system_value": value} for value in dimensions],
}],
}
def test_chamfer_exports_radian_angle_instead_of_silent_equidistant_distance(self) -> None:
# Distance-Angle 倒角:dimensions=[0.001m, 0.785398],无 EdgeChamferAngle 属性,
# 走 raw 兜底路径。角度 system value 为弧度,distance_mm 按米→毫米换算。
fixture = self._chamfer_only_fixture([0.001, 0.785398])
cdsl, _ = convert_evidence(fixture, source_name="chamfer-angle.solidworks_evidence_v2.json")
params = next(item for item in cdsl["features"] if item["atomic_id"] == "chamfer")["params"]
self.assertAlmostEqual(params["distance_mm"], 1.0, places=9)
self.assertNotIn("distance_2_mm", params)
self.assertAlmostEqual(params["angle_rad"], 0.785398, places=5)
def test_chamfer_prefers_edge_chamfer_angle_property(self) -> None:
fixture = self._chamfer_only_fixture([0.001, 0.785398], props={"EdgeChamferAngle": 1.047197551})
cdsl, _ = convert_evidence(fixture, source_name="chamfer-prop.solidworks_evidence_v2.json")
params = next(item for item in cdsl["features"] if item["atomic_id"] == "chamfer")["params"]
self.assertAlmostEqual(params["distance_mm"], 1.0, places=9)
self.assertAlmostEqual(params["angle_rad"], 1.047197551, places=6)
def test_chamfer_keeps_equidistant_form_when_angle_is_missing(self) -> None:
fixture = self._chamfer_only_fixture([0.001])
cdsl, _ = convert_evidence(fixture, source_name="chamfer-eq.solidworks_evidence_v2.json")
params = next(item for item in cdsl["features"] if item["atomic_id"] == "chamfer")["params"]
self.assertAlmostEqual(params["distance_mm"], 1.0, places=9)
self.assertNotIn("angle_rad", params)
self.assertNotIn("distance_2_mm", params)
if __name__ == "__main__":
unittest.main()