1 #include "g_libntptest.h"
5 #include "timevalops.h"
8 class tstotvTest : public libntptest {
10 ::testing::AssertionResult IsEqual(const timeval& expected,
11 const timeval& actual) {
12 if (expected.tv_sec == actual.tv_sec &&
13 expected.tv_usec == actual.tv_usec) {
15 return ::testing::AssertionSuccess();
17 return ::testing::AssertionFailure()
18 << "expected: " << expected.tv_sec << "."
20 << " but was: " << actual.tv_sec << "."
25 static const u_long HALF = 2147483648UL;
28 TEST_F(tstotvTest, Seconds) {
29 const l_fp input = {50, 0}; // 50.0 s
30 const timeval expected = {50, 0};
33 TSTOTV(&input, &actual);
35 EXPECT_TRUE(IsEqual(expected, actual));
38 TEST_F(tstotvTest, MicrosecondsExact) {
39 const l_fp input = {50, HALF}; // 10.5 s
40 const timeval expected = {50, 500000};
43 TSTOTV(&input, &actual);
45 EXPECT_TRUE(IsEqual(expected, actual));
49 TEST_F(tstotvTest, MicrosecondsRounding) {
50 const l_fp input = {50, 3865471UL}; // Should round to 50.0009
51 const timeval expected = {50, 900};
54 TSTOTV(&input, &actual);
56 EXPECT_TRUE(IsEqual(expected, actual));