# tests — Test Suite

## Purpose

230+ teste: unit pe fiecare modul + 8 scenarii de regresie FSM pe imagini reale +
env loader. Rulează headless pe Linux/WSL (de aceea FSM & config nu importă cv2).

## Ownership

Tot `tests/`. Fiecare `test_<modul>.py` oglindește un modul din `src/atm/`.

## Local Contracts

- Un modul nou în `src/atm/` ⇒ un `test_<modul>.py` corespondent.
- **`test_scenarios_regression.py`** rulează FSM-ul peste secvențele din
  `calibration/scenarios.json` pe frame-uri reale. Schimbi FSM ⇒ adaugă/actualizează
  scenariu acolo (vezi `calibration/AGENTS.md`).
- **`test_env_loader.py`** monkeypatchează env-ul; păstrează regula „shell wins"
  din `config._ensure_env_loaded`.
- Testele nu trebuie să atingă rețeaua reală (Telegram/Discord) — mock-uiește.

## Work Guidance

- Rulează suita completă înainte de orice commit care atinge `src/atm/`.
- Dacă un test cere Pillow/OpenCV pe checkout-ul Windows, folosește venv-ul repo
  (vezi `scripts/AGENTS.md`).

## Verification

```bash
pytest -q                                       # toată suita
pytest tests/test_scenarios_regression.py -v    # FSM pe imagini reale
```

## Child DOX Index

(none — leaf)
