| .. | ||
| README.md | ||
| test_prio_queue.c | ||
test_prio_queue
Модуль под тестом
utils/prio_queue/prio_queue.c (utils/prio_queue/prio_queue.h) — очередь
с приоритетами на отсортированном массиве фиксированной ёмкости, с
вытеснением наименее приоритетного элемента при переполнении.
Категория
A — платформонезависимый модуль. Только Unity.
Моки
Нет.
Что проверяется
- init — размер 0,
peek/atна пустой очереди возвращаютNULL. - insert_order — сортировка по приоритету не зависит от порядка вставки (по возрастанию, по убыванию, вперемешку).
- fifo — при равных приоритетах порядок вставки сохраняется (стабильная сортировка), включая перемешанные группы разных приоритетов.
- full_eviction — вставка в заполненную очередь: более приоритетный
элемент вытесняет худший (
PQ_EVICTED), менее или равно приоритетный отклоняется (PQ_FULL); размер очереди не меняется ни в одном из случаев. - evict_correct — вытесняется именно наименее приоритетный элемент,
верхушка (
peek) остаётся корректной после вытеснения. - peek — не удаляет элемент при повторных вызовах, указывает на элемент во внутреннем хранилище очереди.
- remove_at — удаление первого/среднего/последнего элемента со сдвигом остальных, no-op при индексе вне диапазона или на пустой очереди.
- at — доступ по индексу,
NULLдля индекса вне диапазона. - size — инкремент при вставке, декремент при удалении, не меняется
при
PQ_FULL. - stress — полный цикл вставки всех элементов и последовательного извлечения с проверкой сохранения порядка; чередование вставок с одинаковыми и разными приоритетами.
Гарантии
peek()/at(0)всегда возвращает элемент с наивысшим приоритетом (наименьшим значением согласно переданнойcmp-функции).- При равных приоритетах порядок извлечения строго FIFO.
- При переполнении: более приоритетная вставка вытесняет наименее
приоритетный существующий элемент (
PQ_EVICTED), иначе отклоняется (PQ_FULL) без изменения состояния очереди. remove_at()на некорректном индексе или пустой очереди — безопасный no-op, не приводит к падению или порче данных.
Запуск
ctest --preset host-debug-test -R test_prio_queue -V