3.3 KiB
3.3 KiB
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