diff options
author | Alexandros Frantzis <alexandros.frantzis@collabora.com> | 2017-11-16 18:20:51 +0200 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2017-11-27 11:18:25 +0200 |
commit | 6c2752a863becf41a43c1b0af99e1b713698e0b1 (patch) | |
tree | 329a19a85c0923c86de5ffd9484b0f2173d8314b /tests | |
parent | e2a5f9e02d22f2271f6f0d6be10ba3d1b320dca2 (diff) |
shared: Add helpers to convert between various time units and timespec
Add helper functions to make it easy and less error-prone to convert
between values in various time units (nsec, usec, msec) and struct
timespec. These helpers are going to be used in the upcoming commits to
transition the Weston codebase to struct timespec.
Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/timespec-test.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/timespec-test.c b/tests/timespec-test.c index 4e83605d..f127bcee 100644 --- a/tests/timespec-test.c +++ b/tests/timespec-test.c @@ -60,6 +60,15 @@ ZUC_TEST(timespec_test, timespec_to_nsec) ZUC_ASSERT_EQ(timespec_to_nsec(&a), (NSEC_PER_SEC * 4ULL) + 4); } +ZUC_TEST(timespec_test, timespec_to_usec) +{ + struct timespec a; + + a.tv_sec = 4; + a.tv_nsec = 4000; + ZUC_ASSERT_EQ(timespec_to_usec(&a), (4000000ULL) + 4); +} + ZUC_TEST(timespec_test, timespec_to_msec) { struct timespec a; @@ -165,6 +174,69 @@ ZUC_TEST(timespec_test, timespec_sub_to_msec) ZUC_ASSERT_EQ((998 * 1000) + 1, timespec_sub_to_msec(&a, &b)); } +ZUC_TEST(timespec_test, timespec_from_nsec) +{ + struct timespec a; + + timespec_from_nsec(&a, 0); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_nsec(&a, NSEC_PER_SEC - 1); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(NSEC_PER_SEC - 1, a.tv_nsec); + + timespec_from_nsec(&a, NSEC_PER_SEC); + ZUC_ASSERT_EQ(1, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_nsec(&a, (5L * NSEC_PER_SEC) + 1); + ZUC_ASSERT_EQ(5, a.tv_sec); + ZUC_ASSERT_EQ(1, a.tv_nsec); +} + +ZUC_TEST(timespec_test, timespec_from_usec) +{ + struct timespec a; + + timespec_from_usec(&a, 0); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_usec(&a, 999999); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(999999 * 1000, a.tv_nsec); + + timespec_from_usec(&a, 1000000); + ZUC_ASSERT_EQ(1, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_usec(&a, 5000001); + ZUC_ASSERT_EQ(5, a.tv_sec); + ZUC_ASSERT_EQ(1000, a.tv_nsec); +} + +ZUC_TEST(timespec_test, timespec_from_msec) +{ + struct timespec a; + + timespec_from_msec(&a, 0); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_msec(&a, 999); + ZUC_ASSERT_EQ(0, a.tv_sec); + ZUC_ASSERT_EQ(999 * 1000000, a.tv_nsec); + + timespec_from_msec(&a, 1000); + ZUC_ASSERT_EQ(1, a.tv_sec); + ZUC_ASSERT_EQ(0, a.tv_nsec); + + timespec_from_msec(&a, 5001); + ZUC_ASSERT_EQ(5, a.tv_sec); + ZUC_ASSERT_EQ(1000000, a.tv_nsec); +} + ZUC_TEST(timespec_test, timespec_is_zero) { struct timespec zero = { 0 }; |