MACS tests are plain Python classes that talk to the running system. Each test reads and writes real signals — from simulated models, real hardware, or a mix of both — and checks the system's response step by step.
What a test looks like
class ChargeResponseTest(MACSTestCase):
def setup(self):
with self.step("Initialize"):
self.set_signal(vcan0.ControlSignal, 0)
self.stabilize(1.0, "Wait for system to settle")
def execute(self):
with self.step("Apply test condition"):
self.set_signal(vcan0.ControlSignal, 1)
with self.step("Verify response"):
self.verify_signal_above(vcan0.ResponseSignal, 500, timeout=5.0)
self.verify_signal_in_range(vcan0.ResponseSignal, 450, 550)
Every step is logged, so a failure tells you exactly which condition wasn't met, and when.
Run and report
The Test Manager runs selected tests, the whole suite, or only the tests that failed last time, with live pass/fail status and timing. Results are stored per project and can be exported as HTML reports for people, or JUnit XML for your CI system.
Requirements traceability
The Requirements Manager organizes requirements by subsystem, with type (functional, safety, performance, usability, compliance, interface), priority, and status from draft to verified. Link each requirement to the tests that verify it, and MACS calculates coverage from the latest results. Requirements can reference signals directly, be imported from CSV, and be exported to PDF for reviews.




