#include "test.h" #include "../src/reluctant.h" static void test_reluctant (void) { reluctant dummy_reluctant, *reluctant = &dummy_reluctant; memset (reluctant, 0, sizeof *reluctant); #define LD_PERIOD (tissat_big ? 10 : 7) #define LD_LIMIT (LD_PERIOD + 6) #define LD_TICKS (LD_LIMIT + 6) #define PERIOD (1u<<LD_PERIOD) #define LIMIT (1u<<LD_LIMIT) #define TICKS (1u<<LD_TICKS) printf ("period 2^%u = %u, limit 2^%u = %u, ticks 2^%u = %u\n", LD_PERIOD, PERIOD, LD_LIMIT, LIMIT, LD_TICKS, TICKS); kissat_enable_reluctant (reluctant, PERIOD, LIMIT); assert (!kissat_reluctant_triggered (reluctant)); unsigned triggered = 0, last = 0; for (unsigned ticks = 1; ticks <= TICKS; ticks++) { kissat_tick_reluctant (reluctant); if (!kissat_reluctant_triggered (reluctant)) continue; triggered++; unsigned delta = ticks - last; printf ("triggered %u, tick %u, last %u, delta %u\n", triggered, ticks, last, delta); last = ticks; } } void tissat_schedule_reluctant (void) { SCHEDULE_FUNCTION (test_reluctant); }