ThePirateRay/tests/test_rayforge_graphical_workflow_spike.py

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()