lift_indicator_suite/tests/host/button/README.md

3.3 KiB
Raw Permalink Blame History

test_bsp_button

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

bsp/button/src/button.c (bsp/button/include/bsp/button.h)

Категория

B — BSP-модуль, зависит от fsl_gpio.h. Unity + fff.

Моки

  • GPIO_ReadPinInput — единственная SDK-функция, вызываемая button.c, fff value-фейк. Управляется напрямую (return_val) для одной кнопки или через SET_RETURN_SEQ для чередования значений нескольких кнопок в одном bsp_button_poll().
  • GPIO_PinInit не мокируется — bsp_button_init() не трогает GPIO напрямую.

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

  • Инициализацияbsp_button_init() возвращает BSP_OK; повторный вызов сбрасывает накопленное состояние (состояние нажатия и события).
  • Сырое чтение (bsp_button_read) — LOW = нажата, HIGH = не нажата, невалидный индекс безопасно возвращает false.
  • Debounce на нажатие — событие не срабатывает до порога в 4 стабильных сэмпла, срабатывает на 4-м, состояние остаётся стабильным при удержании, повторных событий на удержании нет.
  • Потребление события — флаг события сбрасывается после первого чтения (get_event_pressed/get_event_released).
  • Debounce на отпускание — аналогичная логика для перехода в «отпущено».
  • Сброс счётчика при глитче — единичный сэмпл противоположного уровня посреди серии сбрасывает накопленный счётчик debounce.
  • Независимость кнопокBSP_BUTTON_1 и BSP_BUTTON_2 не влияют друг на друга при чередующихся значениях GPIO.
  • Граничные индексы — некорректный bsp_button_t не приводит к падению ни в одной публичной функции.

Гарантии

  • Debounce требует ровно 4 подряд идущих одинаковых сэмпла для регистрации перехода состояния.
  • Любой единичный «дребезг» (глитч) сбрасывает накопленный счётчик — не засчитывается частично.
  • События нажатия/отпускания одноразовые: второй подряд вызов get_event_* без нового перехода возвращает false.
  • Кнопки полностью независимы друг от друга.
  • Невалидный индекс кнопки не вызывает падения — все геттеры возвращают безопасное значение по умолчанию.

Запуск

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