lift_indicator_suite/tests/host/uart_host
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_uart_host.c # 5 2026-03-17 13:18:59 +03:00

uart_host_mock_example

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

Не сам bsp/uart_host/src/uart_host.c (он верифицируется отдельными HIL-тестами через pyserial на реальном железе), а корректность вызова его публичного API (bsp/uart_host/include/bsp/uart_host.h) кодом верхнего уровня — через готовый мок bsp/uart_host/mocks/uart_host_mock.c.

Категория

B — зависит от API bsp_uart_host, подменяемого через fff.

Моки

Полный fff-мок API bsp_uart_host, поставляемый модулем bsp/uart_host/mocks/uart_host_mock.{c,h}: bsp_uart_host_init, bsp_uart_host_deinit, bsp_uart_host_write, bsp_uart_host_write_str, bsp_uart_host_read, bsp_uart_host_read_byte, bsp_uart_host_rx_available, bsp_uart_host_rx_flush. Сброс всех фейков — макросом UART_HOST_MOCK_RESET_ALL() в setUp().

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

  • init — baud rate передаётся без искажений, ошибка инициализации (BSP_ERR_INIT) пробрасывается наверх.
  • write / write_str — корректные буфер/длина или строка передаются в API, ошибка при неинициализированном UART пробрасывается.
  • read_byte — успешное значение, таймаут (-1), конвертация BSP_UART_HOST_WAIT_FOREVERUINT32_MAX.
  • read — корректные буфер/размер/таймаут передаются, частичное чтение (меньше запрошенного) не трактуется как ошибка.
  • rx helpersrx_available возвращает счётчик, rx_flush вызывается.
  • Сброс мокаUART_HOST_MOCK_RESET_ALL() обнуляет счётчики вызовов и return_val между тестами.

Гарантии

  • Код верхнего уровня передаёт в bsp_uart_host_* ровно те аргументы, которые получил сам (baud rate, буфер, длина, таймаут).
  • Коды ошибок и специальные значения (таймаут -1, BSP_UART_HOST_WAIT_FOREVER) не теряются и не искажаются на пути через API.
  • Частичное чтение — штатный случай, а не ошибка.
  • Между тестами мок гарантированно возвращается в чистое состояние.

Запуск

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