lift_indicator_suite/tests/host/protocol
2026-07-09 09:57:54 +03:00
..
README.md # bootloader: phase 2 + host test docs 2026-07-09 09:57:54 +03:00
test_protocol.c # test_display: bsp_display + test_template 2026-05-08 10:50:58 +03:00

test_protocol

Модуль под тестом

firmware/test/src/protocol.c — сериализация JSON-событий протокола (session_start, test_begin, test_result, summary, confirm_request, pong, error).

Категория

B — зависит от cli_send() и bsp_tick_get_ms(), подменяемых через fff.

Моки

  • cli_send — fff void-фейк; итоговая строка захватывается через custom_fake (capture_cli_send) в статический буфер, т.к. аргумент — указатель на стековый буфер protocol_send_*(), живой только до возврата.
  • bsp_tick_get_ms — fff value-фейк, управляет значением uptime_ms в session_start.
  • bsp_delay — fff void-фейк-заглушка (не используется в проверках).

Что проверяется

Точный JSON-текст, передаваемый в cli_send(), для каждого типа сообщения: session_start (нулевой и ненулевой uptime, версия прошивки), test_begin (critical: true/false), test_result (pass, fail с деталями, skip), summary (общий результат pass/fail), confirm_request (кастомный таймаут и подстановка таймаута по умолчанию при timeout_ms == 0), pong, error (разные коды ошибок).

Гарантии

  • Формат JSON точно соответствует протоколу — сравнивается побайтово с эталонной строкой, а не только наличием отдельных полей.
  • Каждый protocol_send_*() вызывает cli_send() ровно один раз.
  • confirm_request с timeout_ms == 0 всегда получает PROTOCOL_CONFIRM_TIMEOUT_MS вместо нуля.

Запуск

ctest --preset host-debug-test -R test_protocol -V