mirror of
https://github.com/Stichting-MINIX-Research-Foundation/netbsd.git
synced 2025-08-08 13:39:25 -04:00
58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
#include "g_libntptest.h"
|
|
|
|
extern "C" {
|
|
#include "ntp_fp.h"
|
|
#include "timevalops.h"
|
|
};
|
|
|
|
class tstotvTest : public libntptest {
|
|
protected:
|
|
::testing::AssertionResult IsEqual(const timeval& expected,
|
|
const timeval& actual) {
|
|
if (expected.tv_sec == actual.tv_sec &&
|
|
expected.tv_usec == actual.tv_usec) {
|
|
// Success
|
|
return ::testing::AssertionSuccess();
|
|
} else {
|
|
return ::testing::AssertionFailure()
|
|
<< "expected: " << expected.tv_sec << "."
|
|
<< expected.tv_usec
|
|
<< " but was: " << actual.tv_sec << "."
|
|
<< actual.tv_usec;
|
|
}
|
|
}
|
|
|
|
static const u_long HALF = 2147483648UL;
|
|
};
|
|
|
|
TEST_F(tstotvTest, Seconds) {
|
|
const l_fp input = {50, 0}; // 50.0 s
|
|
const timeval expected = {50, 0};
|
|
timeval actual;
|
|
|
|
TSTOTV(&input, &actual);
|
|
|
|
EXPECT_TRUE(IsEqual(expected, actual));
|
|
}
|
|
|
|
TEST_F(tstotvTest, MicrosecondsExact) {
|
|
const l_fp input = {50, HALF}; // 10.5 s
|
|
const timeval expected = {50, 500000};
|
|
timeval actual;
|
|
|
|
TSTOTV(&input, &actual);
|
|
|
|
EXPECT_TRUE(IsEqual(expected, actual));
|
|
|
|
}
|
|
|
|
TEST_F(tstotvTest, MicrosecondsRounding) {
|
|
const l_fp input = {50, 3865471UL}; // Should round to 50.0009
|
|
const timeval expected = {50, 900};
|
|
timeval actual;
|
|
|
|
TSTOTV(&input, &actual);
|
|
|
|
EXPECT_TRUE(IsEqual(expected, actual));
|
|
}
|