166 lines
3.4 KiB
C
166 lines
3.4 KiB
C
#include <assert.h>
|
|
#include "../src/tcp_timer.h"
|
|
|
|
static void set_int_variable_to_1(void *data)
|
|
{
|
|
int *n = data;
|
|
*n = 1;
|
|
}
|
|
|
|
static void test_timer(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int resolved = 0;
|
|
tcp_timer_t *t1 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved);
|
|
|
|
assert(t1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_step(&set, 1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_step(&set, 4);
|
|
assert(resolved == 1);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
static void test_disabled_timer(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int resolved = 0;
|
|
tcp_timer_t *t1 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved);
|
|
|
|
assert(t1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timer_disable(t1);
|
|
|
|
tcp_timerset_step(&set, 1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_step(&set, 4);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
static void test_disabled_timer_2(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int resolved = 0;
|
|
tcp_timer_t *t1 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved);
|
|
|
|
assert(t1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_step(&set, 1);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timer_disable(t1);
|
|
|
|
tcp_timerset_step(&set, 4);
|
|
assert(resolved == 0);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
static void test_disabled_timer_3(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int resolved_1 = 0;
|
|
int resolved_2 = 0;
|
|
tcp_timer_t *t1 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved_1);
|
|
tcp_timer_t *t2 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved_2);
|
|
|
|
assert(t1);
|
|
assert(t2);
|
|
assert(resolved_1 == 0);
|
|
assert(resolved_2 == 0);
|
|
|
|
tcp_timerset_step(&set, 1);
|
|
assert(resolved_1 == 0);
|
|
assert(resolved_2 == 0);
|
|
|
|
tcp_timer_disable(t1);
|
|
|
|
tcp_timerset_step(&set, 4);
|
|
assert(resolved_1 == 0);
|
|
assert(resolved_2 == 1);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
static void test_disabled_timer_4(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int resolved_1 = 0;
|
|
int resolved_2 = 0;
|
|
tcp_timer_t *t1 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved_1);
|
|
tcp_timer_t *t2 = tcp_timer_create(&set, 5, set_int_variable_to_1, &resolved_2);
|
|
|
|
assert(t1);
|
|
assert(t2);
|
|
assert(resolved_1 == 0);
|
|
assert(resolved_2 == 0);
|
|
|
|
tcp_timerset_step(&set, 1);
|
|
assert(resolved_1 == 0);
|
|
assert(resolved_2 == 0);
|
|
|
|
tcp_timer_disable(t2);
|
|
|
|
tcp_timerset_step(&set, 4);
|
|
assert(resolved_1 == 1);
|
|
assert(resolved_2 == 0);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
static void test_out_of_timers(void)
|
|
{
|
|
static_assert(TCP_MAX_TIMERS > 0);
|
|
|
|
tcp_timerset_t set;
|
|
tcp_timerset_init(&set);
|
|
|
|
int temp;
|
|
for (int i = 0; i < TCP_MAX_TIMERS; i++) {
|
|
tcp_timer_t *t = tcp_timer_create(&set, 5, set_int_variable_to_1, &temp);
|
|
assert(t != NULL);
|
|
}
|
|
tcp_timer_t *t = tcp_timer_create(&set, 5, set_int_variable_to_1, &temp);
|
|
assert(t == NULL);
|
|
|
|
tcp_timerset_free(&set);
|
|
}
|
|
|
|
void test_tcp_timer(void)
|
|
{
|
|
test_timer();
|
|
test_disabled_timer();
|
|
test_disabled_timer_2();
|
|
test_disabled_timer_3();
|
|
test_disabled_timer_4();
|
|
test_out_of_timers();
|
|
} |