5 #include <refidsmear.h>
7 //#include "ntp_stdlib.h"
8 //#include "ntp_calendar.h"
15 * we want to test a refid format of:
18 * where x.y.z are 24 bits containing 2 (signed) integer bits
19 * and 22 fractional bits.
21 * we want functions to convert to/from this format, with unit tests.
23 * Interesting test cases include:
33 void rtol(uint32_t r, char *es);
34 void rtoltor(uint32_t er, char *es);
35 void ltor(l_fp l, char *er);
36 void test_refidsmear(void);
39 rtol(uint32_t r, char *es)
45 TEST_ASSERT_NOT_NULL(es);
47 snprintf(msg, 100, "rtol was called with r=%#.8x, es=%s", r, es);
49 l = convertRefIDToLFP(htonl(r));
52 //printf("refid %#x, smear %s\n", r, as);
54 TEST_ASSERT_NOT_NULL_MESSAGE(as, msg);
55 TEST_ASSERT_EQUAL_STRING_MESSAGE(es, as, msg);
64 rtoltor(uint32_t er, char *es)
71 TEST_ASSERT_NOT_NULL(es);
73 snprintf(msg, 100, "rtoltor was called with er=%#.8x, es=%s", er, es);
75 l = convertRefIDToLFP(htonl(er));
78 ar = convertLFPToRefID(l);
80 //printf("smear %s, refid %#.8x\n", lfptoa(&l, 8), ntohl(ar));
82 TEST_ASSERT_NOT_NULL_MESSAGE(as, msg);
83 TEST_ASSERT_EQUAL_STRING_MESSAGE(es, as, msg);
84 TEST_ASSERT_EQUAL_UINT_MESSAGE(er, ntohl(ar), msg);
91 ltor(l_fp l, char *er)
97 r = convertLFPToRefID(l);
98 printf("smear %s, refid %#.8x\n", lfptoa(&l, 8), ntohl(r));
104 void test_refidsmear(void)
107 rtol(0xfe800000, "-2.00000000");
108 rtol(0xfe800001, "-1.99999976");
109 rtol(0xfe8ffffe, "-1.75000048");
110 rtol(0xfe8fffff, "-1.75000024");
111 rtol(0xfef00000, "-0.25000000");
112 rtol(0xfef00001, "-0.24999976");
113 rtol(0xfefffffe, "-0.00000048");
114 rtol(0xfeffffff, "-0.00000024");
116 rtol(0xfe000000, "0.00000000");
117 rtol(0xfe000001, "0.00000024");
118 rtol(0xfe6ffffe, "1.74999952");
119 rtol(0xfe6fffff, "1.74999976");
120 rtol(0xfe700000, "1.75000000");
121 rtol(0xfe700001, "1.75000024");
122 rtol(0xfe7ffffe, "1.99999952");
123 rtol(0xfe7fffff, "1.99999976");
125 rtoltor(0xfe800000, "-2.00000000");
126 rtoltor(0xfe800001, "-1.99999976");
127 rtoltor(0xfe8ffffe, "-1.75000048");
128 rtoltor(0xfe8fffff, "-1.75000024");
129 rtoltor(0xfef00000, "-0.25000000");
130 rtoltor(0xfef00001, "-0.24999976");
131 rtoltor(0xfefffffe, "-0.00000048");
132 rtoltor(0xfeffffff, "-0.00000024");
134 rtoltor(0xfe000000, "0.00000000");
135 rtoltor(0xfe000001, "0.00000024");
136 rtoltor(0xfe6ffffe, "1.74999952");
137 rtoltor(0xfe6fffff, "1.74999976");
138 rtoltor(0xfe700000, "1.75000000");
139 rtoltor(0xfe700001, "1.75000024");
140 rtoltor(0xfe7ffffe, "1.99999952");
141 rtoltor(0xfe7fffff, "1.99999976");