From 8073f87d45ee9dab4789ede78454df9dd2a65a0d Mon Sep 17 00:00:00 2001 From: Martin Ling Date: Mon, 20 Jan 2020 03:43:49 +0000 Subject: [PATCH] Add test program for timing functions. --- Makefile.am | 5 ++++ test_timing.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 test_timing.c diff --git a/Makefile.am b/Makefile.am index a9aca6c..10493de 100644 --- a/Makefile.am +++ b/Makefile.am @@ -53,6 +53,11 @@ nodist_include_HEADERS = libserialport.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libserialport.pc +TESTS = test_timing +check_PROGRAMS = test_timing +test_timing_SOURCES = timing.c test_timing.c +test_timing_CFLAGS = $(AM_CFLAGS) + EXTRA_DIST = Doxyfile \ examples/Makefile \ examples/README \ diff --git a/test_timing.c b/test_timing.c new file mode 100644 index 0000000..c08badb --- /dev/null +++ b/test_timing.c @@ -0,0 +1,67 @@ +#include "config.h" +#include "libserialport.h" +#include "libserialport_internal.h" +#include +#include + +int main(int argc, char *argv[]) +{ + (void) argc; + (void) argv; + struct time a, b, c; + struct timeval tv; + struct timeout to; + printf("Testing arithmetic\n"); + time_set_ms(&a, 10050); + time_set_ms(&b, 100); + assert(time_greater(&a, &b)); + assert(!time_greater(&b, &a)); + time_add(&a, &b, &c); + assert(time_as_ms(&c) == 10150); + time_sub(&a, &b, &c); + assert(time_as_ms(&c) == 9950); + time_as_timeval(&a, &tv); + assert(tv.tv_sec == 10); + assert(tv.tv_usec == 50000); + time_get(&a); + printf("Sleeping for 1s\n"); + sleep(1); + time_get(&b); + time_sub(&b, &a, &c); + printf("Measured: %ums\n", time_as_ms(&c)); + assert(time_as_ms(&c) >= 999); + assert(time_as_ms(&c) <= 1001); + printf("Starting 3s timeout\n"); + timeout_start(&to, 3000); + printf("Time to wait: %dms\n", timeout_remaining_ms(&to)); + printf("Sleeping for 1s\n"); + sleep(1); + timeout_update(&to); + assert(!timeout_check(&to)); + printf("Sleeping for 1s\n"); + sleep(1); + timeout_update(&to); + assert(!timeout_check(&to)); + printf("Remaining: %ums\n", timeout_remaining_ms(&to)); + printf("Sleeping for 1s\n"); + sleep(1); + timeout_update(&to); + assert(timeout_check(&to)); + printf("Timeout expired\n"); + printf("Starting 2s timeout\n"); + timeout_start(&to, 2000); + printf("Limiting steps to 1s\n"); + timeout_limit(&to, 1000); + printf("Time to wait: %ums\n", timeout_remaining_ms(&to)); + printf("Sleeping for 1s\n"); + sleep(1); + timeout_update(&to); + assert(!timeout_check(&to)); + printf("Remaining: %ums\n", timeout_remaining_ms(&to)); + printf("Sleeping for 1s\n"); + sleep(1); + timeout_update(&to); + assert(timeout_check(&to)); + printf("Timeout expired\n"); + return 0; +}