/* libhw_cr/tests/test_alarmclock.c - Tests for host_alarmclock.c * * Copyright (C) 2025 Luke T. Shumaker * SPDX-License-Identifier: AGPL-3.0-or-later */ #define IMPLEMENTATION_FOR_LIBHW_GENERIC_ALARMCLOCK_H YES #include #define IMPLEMENTATION_FOR_LIBHW_HOST_ALARMCLOCK_H YES #include #include "test.h" static void intrhandler(void *) {} int main() { struct hostclock alarmclock = { .clock_id = CLOCK_MONOTONIC, }; int arg1 = 42; int arg2 = 67; struct alarmclock_trigger trig1 = {}; struct alarmclock_trigger trig2 = {}; uint64_t now = hostclock_get_time_ns(&alarmclock); hostclock_add_trigger(&alarmclock, &trig1, now+(20*NS_PER_S), intrhandler, &arg1); test_assert(alarmclock.queue.front == &trig1); test_assert(trig1.front == NULL); test_assert(trig1.rear == NULL); test_assert(alarmclock.queue.rear == &trig1); hostclock_add_trigger(&alarmclock, &trig2, now+(30*NS_PER_S), intrhandler, &arg2); test_assert(alarmclock.queue.front == &trig1); test_assert(trig1.front == NULL); test_assert(trig1.rear == &trig2); test_assert(trig2.front == &trig1); test_assert(trig2.rear == NULL); test_assert(alarmclock.queue.rear == &trig2); hostclock_del_trigger(&alarmclock, &trig2); test_assert(alarmclock.queue.front == &trig1); test_assert(trig1.front == NULL); test_assert(trig1.rear == NULL); test_assert(alarmclock.queue.rear == &trig1); hostclock_del_trigger(&alarmclock, &trig1); test_assert(alarmclock.queue.front == NULL); test_assert(alarmclock.queue.rear == NULL); return 0; }