]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added unit tests for timeval_*().
authorTimo Sirainen <tss@iki.fi>
Wed, 12 Aug 2009 21:27:50 +0000 (17:27 -0400)
committerTimo Sirainen <tss@iki.fi>
Wed, 12 Aug 2009 21:27:50 +0000 (17:27 -0400)
--HG--
branch : HEAD

src/lib/Makefile.am
src/lib/test-lib.c
src/lib/test-lib.h
src/lib/test-time-util.c [new file with mode: 0644]

index 9c70ec25899059eca173f9eecf174be9667bd8f3..c2b98009fda143ae4b28c13bdcfd05333bb1e807 100644 (file)
@@ -228,6 +228,7 @@ test_lib_SOURCES = \
        test-strescape.c \
        test-str-find.c \
        test-str-sanitize.c \
+       test-time-util.c \
        test-utc-mktime.c
 
 test_headers = \
index 8237ab5f6f0f24c28dd56458eeaa8f8f5599f511..963bb5f60c0c1adf374ee685ea42cee9c7c5ffed 100644 (file)
@@ -20,6 +20,7 @@ int main(void)
                test_strescape,
                test_str_find,
                test_str_sanitize,
+               test_time_util,
                test_utc_mktime,
                NULL
        };
index d86970ec2458728b5261daec74ae11ac2ee788d8..a8832d96445434c6f9c7ce65c1c1a211e2b628cf 100644 (file)
@@ -19,6 +19,7 @@ void test_seq_range_array(void);
 void test_strescape(void);
 void test_str_find(void);
 void test_str_sanitize(void);
+void test_time_util(void);
 void test_utc_mktime(void);
 
 #endif
diff --git a/src/lib/test-time-util.c b/src/lib/test-time-util.c
new file mode 100644 (file)
index 0000000..dc09033
--- /dev/null
@@ -0,0 +1,75 @@
+/* Copyright (c) 2009 Dovecot authors, see the included COPYING file */
+
+#include "test-lib.h"
+#include "time-util.h"
+
+static void test_timeval_cmp(void)
+{
+       static struct timeval input[] = {
+               { 0, 0 }, { 0, 0 },
+               { INT_MAX, 999999 }, { INT_MAX, 999999 },
+               { 0, 0 }, { 0, 1 },
+               { 0, 0 }, { 1, 0 },
+               { 0, 999999 }, { 1, 0 },
+               { 1, 0 }, { 1, 1 },
+               { -INT_MAX, 0 }, { INT_MAX, 0 }
+       };
+       static int output[] = {
+               0,
+               0,
+               -1,
+               -1,
+               -1,
+               -1,
+               -1
+       };
+       unsigned int i;
+
+       test_begin("timeval_cmp()");
+       for (i = 0; i < N_ELEMENTS(input); i += 2) {
+               test_assert(timeval_cmp(&input[i], &input[i+1]) == output[i/2]);
+               test_assert(timeval_cmp(&input[i+1], &input[i]) == -output[i/2]);
+       }
+       test_end();
+}
+
+static void test_timeval_diff(void)
+{
+       static struct timeval input[] = {
+               { 1, 0 }, { 0, 999999 },
+               { 1, 0 }, { 0, 999001 },
+               { 1, 1 }, { 0, 999001 },
+               { 2, 1 }, { 1, 0 },
+               { INT_MAX, 0 }, { INT_MAX-1, 1 }
+       };
+       static int output[] = {
+               1,
+               999,
+               1000,
+               1000001,
+               999999
+       };
+       unsigned int i;
+       long long udiff;
+       int mdiff;
+
+       test_begin("timeval_diff_*()");
+       for (i = 0; i < N_ELEMENTS(input); i += 2) {
+               udiff = timeval_diff_usecs(&input[i], &input[i+1]);
+               mdiff = timeval_diff_msecs(&input[i], &input[i+1]);
+               test_assert(udiff == output[i/2]);
+               test_assert(mdiff == udiff/1000);
+
+               udiff = timeval_diff_usecs(&input[i+1], &input[i]);
+               mdiff = timeval_diff_msecs(&input[i+1], &input[i]);
+               test_assert(udiff == -output[i/2]);
+               test_assert(mdiff == udiff/1000);
+       }
+       test_end();
+}
+
+void test_time_util(void)
+{
+       test_timeval_cmp();
+       test_timeval_diff();
+}