38 lines
1.7 KiB
Python
38 lines
1.7 KiB
Python
import json
|
|
import unittest
|
|
from pathlib import Path
|
|
from xml.etree import ElementTree as ET
|
|
|
|
|
|
ROOT = Path(__file__).parents[1]
|
|
RESULT = ROOT / "tests" / "fixtures" / "rayforge-lightburn-mopa-import.json"
|
|
SOURCE = ROOT / "tests" / "fixtures" / "synthetic-mopa-import.lbrn2"
|
|
|
|
|
|
class RayforgeLightBurnImportSpikeTests(unittest.TestCase):
|
|
def test_public_fixture_is_small_and_synthetic(self):
|
|
root = ET.fromstring(SOURCE.read_bytes())
|
|
self.assertEqual("synthetic-public-fixture", root.get("AppVersion"))
|
|
self.assertEqual(1, len(root.findall("Shape")))
|
|
self.assertNotIn("serial", SOURCE.read_text(encoding="utf-8").lower())
|
|
|
|
def test_observed_values_survive_raw_import(self):
|
|
result = json.loads(RESULT.read_text(encoding="utf-8"))
|
|
self.assertIsNone(result["transport"])
|
|
self.assertEqual(40000, result["raw_cut_setting"]["frequency"])
|
|
self.assertEqual(0.5, result["mapped_layer_settings"]["power"])
|
|
self.assertEqual(15000, result["mapped_layer_settings"]["cut_speed"])
|
|
self.assertEqual([54.0, 54.0, 56.0, 56.0], result["geometry_bounds_mm"])
|
|
|
|
def test_incomplete_mopa_import_fails_the_encoding_gate(self):
|
|
result = json.loads(RESULT.read_text(encoding="utf-8"))
|
|
survival = result["mopa_survival"]
|
|
self.assertTrue(survival["frequency_preserved_in_source_metadata"])
|
|
self.assertFalse(survival["frequency_mapped_to_workflow"])
|
|
self.assertFalse(survival["pulse_width_source_field_observed"])
|
|
self.assertFalse(survival["pulse_width_mapped_to_workflow"])
|
|
self.assertFalse(survival["safe_for_jcz_encoding"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|