1290001Sglebius#include "config.h" 2290001Sglebius 3290001Sglebius#include "ntp_fp.h" 4290001Sglebius#include "timevalops.h" 5290001Sglebius 6290001Sglebius#include "unity.h" 7290001Sglebius 8290001Sglebiusvoid test_Seconds(void); 9290001Sglebiusvoid test_MicrosecondsExact(void); 10290001Sglebiusvoid test_MicrosecondsRounding(void); 11290001Sglebius 12290001Sglebius 13290001Sglebiusvoid 14290001Sglebiustest_Seconds(void) { 15290001Sglebius const l_fp input = {{50}, 0}; /* 50.0 s */ 16290001Sglebius const struct timeval expected = {50, 0}; 17290001Sglebius struct timeval actual; 18290001Sglebius 19290001Sglebius TSTOTV(&input, &actual); 20290001Sglebius 21290001Sglebius TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 22290001Sglebius TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 23290001Sglebius} 24290001Sglebius 25290001Sglebiusvoid 26290001Sglebiustest_MicrosecondsExact(void) { 27290001Sglebius const u_long HALF = 2147483648UL; 28290001Sglebius const l_fp input = {{50}, HALF}; /* 50.5 s */ 29290001Sglebius const struct timeval expected = {50, 500000}; 30290001Sglebius struct timeval actual; 31290001Sglebius 32290001Sglebius TSTOTV(&input, &actual); 33290001Sglebius 34290001Sglebius TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 35290001Sglebius TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 36290001Sglebius 37290001Sglebius} 38290001Sglebius 39290001Sglebiusvoid 40290001Sglebiustest_MicrosecondsRounding(void) { 41290001Sglebius const l_fp input = {{50}, 3865471UL}; /* Should round to 50.0009 */ 42290001Sglebius const struct timeval expected = {50, 900}; 43290001Sglebius struct timeval actual; 44290001Sglebius 45290001Sglebius TSTOTV(&input, &actual); 46290001Sglebius 47290001Sglebius TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 48290001Sglebius TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 49290001Sglebius} 50