1 1.2 christos /* $NetBSD: tstotv.c,v 1.2 2020/05/25 20:47:36 christos Exp $ */ 2 1.2 christos 3 1.1 christos #include "config.h" 4 1.1 christos 5 1.1 christos #include "ntp_fp.h" 6 1.1 christos #include "timevalops.h" 7 1.1 christos 8 1.1 christos #include "unity.h" 9 1.1 christos 10 1.2 christos void test_Seconds(void); 11 1.2 christos void test_MicrosecondsExact(void); 12 1.2 christos void test_MicrosecondsRounding(void); 13 1.2 christos 14 1.2 christos 15 1.1 christos void 16 1.1 christos test_Seconds(void) { 17 1.2 christos const l_fp input = {{50}, 0}; /* 50.0 s */ 18 1.1 christos const struct timeval expected = {50, 0}; 19 1.1 christos struct timeval actual; 20 1.1 christos 21 1.1 christos TSTOTV(&input, &actual); 22 1.1 christos 23 1.1 christos TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 24 1.1 christos TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 25 1.1 christos } 26 1.1 christos 27 1.1 christos void 28 1.1 christos test_MicrosecondsExact(void) { 29 1.1 christos const u_long HALF = 2147483648UL; 30 1.2 christos const l_fp input = {{50}, HALF}; /* 50.5 s */ 31 1.1 christos const struct timeval expected = {50, 500000}; 32 1.1 christos struct timeval actual; 33 1.1 christos 34 1.1 christos TSTOTV(&input, &actual); 35 1.1 christos 36 1.1 christos TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 37 1.1 christos TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 38 1.1 christos 39 1.1 christos } 40 1.1 christos 41 1.1 christos void 42 1.1 christos test_MicrosecondsRounding(void) { 43 1.2 christos const l_fp input = {{50}, 3865471UL}; /* Should round to 50.0009 */ 44 1.1 christos const struct timeval expected = {50, 900}; 45 1.1 christos struct timeval actual; 46 1.1 christos 47 1.1 christos TSTOTV(&input, &actual); 48 1.1 christos 49 1.1 christos TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 50 1.1 christos TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 51 1.1 christos } 52