| # | Test | Status |
| 1 | init -> both actuators STOP, 0 mA | ok |
| 2 | apply: invalid ID -> EINVAL | ok |
| 3 | apply: PWM > 100% -> EINVAL | ok |
| 4 | apply normal -> direction=APPLY, pwm=80 | ok |
| 5 | release normal -> direction=RELEASE | ok |
| 6 | ISR sample sets current_ma and peak | ok |
| 7 | Overcurrent > 8 A for 100 ms -> STOP + overcurrent flag | ok |
| 8 | Overcurrent < 100 ms does not trip yet | ok |
| 9 | after overcurrent: subsequent apply -> EOVERCURRENT | ok |
| 10 | Clamping force estimation from peak current (SWE-015) | ok |
| 11 | stop -> direction=STOP, pwm=0 | ok |
| # | Test | Status |
| 1 | init -> RELEASED | ok |
| 2 | step_50ms(NULL) -> last_error=EINVAL | ok |
| 3 | Apply request at standstill -> APPLYING | ok |
| 4 | Apply request without standstill is ignored | ok |
| 5 | APPLYING -> APPLIED when both clamping forces >= target | ok |
| 6 | APPLYING timeout (>30 steps) -> ERROR | ok |
| 7 | APPLIED maintains clamping force (SWE-001) | ok |
| 8 | Release without engine is rejected | ok |
| 9 | Release with all preconditions -> RELEASING -> RELEASED | ok |
| 10 | Safety Manager apply request (Hill-Hold/Auto-Apply) | ok |
| 11 | Step counter increases monotonically (SWE-002 watchdog alive) | ok |
| 12 | ERROR -> RELEASED on neutral switch | ok |
| # | Test | Status |
| 1 | init -> IDLE, no apply request | ok |
| 2 | NULL input is a no-op | ok |
| 3 | SWE-007: engine off + standstill -> AUTO_APPLY_ARMED | ok |
| 4 | SWE-008: after ~2s -> TRIGGERED + apply request | ok |
| 5 | Auto-Apply aborts when engine comes back on | ok |
| 6 | AUTO_APPLY_TRIGGERED -> IDLE when Apply Controller is done | ok |
| 7 | SWE-009: grade >5% + standstill + brake -> HILL_HOLD_ARMED | ok |
| 8 | Hill-hold also on negative grade (downhill) | ok |
| 9 | Grade < 5% -> no hill-hold | ok |
| 10 | SWE-010: brake released -> HILL_HOLD_ACTIVE + apply request | ok |
| 11 | HILL_HOLD_ACTIVE ends when vehicle rolls (v > 2 km/h) | ok |
| 12 | HILL_HOLD_ARMED -> IDLE when grade < 5% | ok |
| 13 | SWE-011 + SWE-012: intent + safety -> DRIVE_AWAY + release request | ok |
| 14 | SWE-012: door open blocks drive-away | ok |
| 15 | SWE-012: seatbelt not fastened blocks drive-away | ok |
| 16 | SWE-011: throttle < 10% does not trigger drive-away | ok |
| 17 | DRIVE_AWAY -> IDLE when Apply Controller has released | ok |
| 18 | Already applied: no auto-apply arming | ok |