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