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