45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
import json
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).parents[1]
|
|
RESULT = ROOT / "tests" / "fixtures" / "rayforge-graphical-workflow.json"
|
|
|
|
|
|
class RayforgeGraphicalWorkflowSpikeTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.result = json.loads(RESULT.read_text(encoding="utf-8"))
|
|
|
|
def test_workflow_is_transport_free(self):
|
|
self.assertIsNone(self.result["transport"])
|
|
self.assertFalse(self.result["controller_backend_reachable"])
|
|
|
|
def test_mopa_controls_have_explicit_units(self):
|
|
controls = self.result["workflow_controls"]
|
|
self.assertEqual("Hz", controls["frequency"]["unit_contract"])
|
|
self.assertEqual("ns", controls["pulse_width"]["unit_contract"])
|
|
self.assertTrue(self.result["ui_contract"]["varset_generated_rows"])
|
|
self.assertTrue(
|
|
self.result["ui_contract"]["machine_section_is_capability_gated"]
|
|
)
|
|
|
|
def test_step_round_trip_preserves_process_values(self):
|
|
self.assertTrue(all(self.result["round_trip_preserved"].values()))
|
|
step = self.result["serialized_step"]
|
|
self.assertEqual(40000, step["frequency"])
|
|
self.assertEqual(100, step["pulse_width"])
|
|
|
|
def test_preview_exists_without_machine_code(self):
|
|
preview = self.result["preview"]
|
|
self.assertTrue(preview["available"])
|
|
self.assertGreater(preview["operation_count"], 0)
|
|
self.assertIsNone(preview["machine_code"])
|
|
|
|
def test_manual_gtk_evidence_is_not_claimed(self):
|
|
self.assertGreater(len(self.result["remaining_manual_evidence"]), 0)
|
|
self.assertIn("headless", self.result["assessment_scope"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|