summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDirk Ziegelmeier <[email protected]>2018-01-12 12:37:16 +0100
committerDirk Ziegelmeier <[email protected]>2018-01-12 12:37:16 +0100
commit990c25d4f328d49fa8c68412b458e94a2de4aaf4 (patch)
treeb0273d4f17d76ff4fb279c306218fc0e46f360e8 /test
parent6ccd12b97c97c97deab500f34e2555f398ae2e6d (diff)
Add unit test for a long running timer
Diffstat (limited to 'test')
-rw-r--r--test/unit/core/test_timers.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/test/unit/core/test_timers.c b/test/unit/core/test_timers.c
index 39804230..820b7189 100644
--- a/test/unit/core/test_timers.c
+++ b/test/unit/core/test_timers.c
@@ -187,6 +187,38 @@ START_TEST(test_timers)
}
END_TEST
+START_TEST(test_long_timer)
+{
+ LWIP_UNUSED_ARG(_i);
+
+ memset(&fired, 0, sizeof(fired));
+ lwip_sys_now = 0;
+
+ sys_timeout(LWIP_UINT32_MAX / 4, dummy_handler, LWIP_PTR_NUMERIC_CAST(void*, 0));
+ fail_unless(sys_timeouts_sleeptime() == LWIP_UINT32_MAX / 4);
+
+ sys_check_timeouts();
+ fail_unless(fired[0] == 0);
+
+ lwip_sys_now += LWIP_UINT32_MAX / 8;
+
+ sys_check_timeouts();
+ fail_unless(fired[0] == 0);
+
+ lwip_sys_now += LWIP_UINT32_MAX / 8;
+
+ sys_check_timeouts();
+ fail_unless(fired[0] == 0);
+
+ lwip_sys_now += 1;
+
+ sys_check_timeouts();
+ fail_unless(fired[0] == 1);
+
+ sys_untimeout(dummy_handler, LWIP_PTR_NUMERIC_CAST(void*, 0));
+}
+END_TEST
+
/** Create the suite including all tests for this module */
Suite *
timers_suite(void)
@@ -194,7 +226,8 @@ timers_suite(void)
testfunc tests[] = {
TESTFUNC(test_bug52748),
TESTFUNC(test_cyclic_timers),
- TESTFUNC(test_timers)
+ TESTFUNC(test_timers),
+ TESTFUNC(test_long_timer),
};
return create_suite("TIMERS", tests, LWIP_ARRAYSIZE(tests), timers_setup, timers_teardown);
}