1284990Scy#include "config.h" 2284990Scy 3284990Scy#include "ntp_fp.h" 4284990Scy#include "timevalops.h" 5284990Scy 6284990Scy#include "unity.h" 7284990Scy 8289999Sglebiusvoid test_Seconds(void); 9289999Sglebiusvoid test_MicrosecondsExact(void); 10289999Sglebiusvoid test_MicrosecondsRounding(void); 11289999Sglebius 12289999Sglebius 13284990Scyvoid 14284990Scytest_Seconds(void) { 15289999Sglebius const l_fp input = {{50}, 0}; /* 50.0 s */ 16284990Scy const struct timeval expected = {50, 0}; 17284990Scy struct timeval actual; 18284990Scy 19284990Scy TSTOTV(&input, &actual); 20284990Scy 21284990Scy TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 22284990Scy TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 23284990Scy} 24284990Scy 25284990Scyvoid 26284990Scytest_MicrosecondsExact(void) { 27284990Scy const u_long HALF = 2147483648UL; 28289999Sglebius const l_fp input = {{50}, HALF}; /* 50.5 s */ 29284990Scy const struct timeval expected = {50, 500000}; 30284990Scy struct timeval actual; 31284990Scy 32284990Scy TSTOTV(&input, &actual); 33284990Scy 34284990Scy TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 35284990Scy TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 36284990Scy 37284990Scy} 38284990Scy 39284990Scyvoid 40284990Scytest_MicrosecondsRounding(void) { 41289999Sglebius const l_fp input = {{50}, 3865471UL}; /* Should round to 50.0009 */ 42284990Scy const struct timeval expected = {50, 900}; 43284990Scy struct timeval actual; 44284990Scy 45284990Scy TSTOTV(&input, &actual); 46284990Scy 47284990Scy TEST_ASSERT_EQUAL(expected.tv_sec, actual.tv_sec); 48284990Scy TEST_ASSERT_EQUAL(expected.tv_usec, actual.tv_usec); 49284990Scy} 50