feat: add spindle direction selection contract
This commit is contained in:
33
tests/test_spindle_direction_contract.py
Normal file
33
tests/test_spindle_direction_contract.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from polisher_control.contracts import SpindleDirection, normalize_spindle_direction
|
||||
from polisher_control.telemetry_channels import RECOMMENDED_CHANNELS
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def test_spindle_direction_enum_uses_stable_wire_values():
|
||||
assert SpindleDirection.CLOCKWISE.value == "cw"
|
||||
assert SpindleDirection.COUNTER_CLOCKWISE.value == "ccw"
|
||||
assert SpindleDirection.allowed_values() == ["cw", "ccw"]
|
||||
|
||||
|
||||
def test_normalize_spindle_direction_accepts_operator_aliases():
|
||||
assert normalize_spindle_direction("cw") == SpindleDirection.CLOCKWISE
|
||||
assert normalize_spindle_direction("clockwise") == SpindleDirection.CLOCKWISE
|
||||
assert normalize_spindle_direction("ccw") == SpindleDirection.COUNTER_CLOCKWISE
|
||||
assert normalize_spindle_direction("counter-clockwise") == SpindleDirection.COUNTER_CLOCKWISE
|
||||
|
||||
|
||||
def test_spindle_direction_is_in_controller_job_segment_schema():
|
||||
schema = json.loads((ROOT / "shared/schemas/controller-job.schema.json").read_text())
|
||||
segment = schema["$defs"]["segment"]
|
||||
|
||||
assert "commanded_spindle_direction" in segment["required"]
|
||||
assert segment["properties"]["commanded_spindle_direction"]["enum"] == ["cw", "ccw"]
|
||||
|
||||
|
||||
def test_spindle_direction_is_logged_as_telemetry_context():
|
||||
assert "spindle_direction_setpoint" in RECOMMENDED_CHANNELS
|
||||
assert "spindle_direction_actual" in RECOMMENDED_CHANNELS
|
||||
Reference in New Issue
Block a user