]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/tests/libntp/refidsmear.c
Upgrade NTP to 4.2.8p4.
[FreeBSD/releng/10.2.git] / contrib / ntp / tests / libntp / refidsmear.c
1 #include "config.h"
2
3 #include <ntp.h>
4 #include <ntp_fp.h>
5 #include <refidsmear.h>
6
7 //#include "ntp_stdlib.h"
8 //#include "ntp_calendar.h"
9
10 #include "unity.h"
11
12 #include <stdio.h>
13
14 /*
15  * we want to test a refid format of:
16  * 254.x.y.x
17  *
18  * where x.y.z are 24 bits containing 2 (signed) integer bits
19  * and 22 fractional bits.
20  *
21  * we want functions to convert to/from this format, with unit tests.
22  *
23  * Interesting test cases include:
24  * 254.0.0.0
25  * 254.0.0.1
26  * 254.127.255.255
27  * 254.128.0.0
28  * 254.255.255.255
29  */
30
31
32
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);
37
38 void
39 rtol(uint32_t r, char *es)
40 {
41         l_fp l;
42         char *as;
43         char msg[100];
44
45         TEST_ASSERT_NOT_NULL(es);
46
47         snprintf(msg, 100, "rtol was called with r=%#.8x, es=%s", r, es);
48
49         l = convertRefIDToLFP(htonl(r));
50         as = lfptoa(&l, 8);
51         
52         //printf("refid %#x, smear %s\n", r, as);
53
54         TEST_ASSERT_NOT_NULL_MESSAGE(as, msg);
55         TEST_ASSERT_EQUAL_STRING_MESSAGE(es, as, msg);
56
57         return;
58 }
59
60
61
62
63 void
64 rtoltor(uint32_t er, char *es)
65 {
66         l_fp l;
67         char *as;
68         uint32_t ar;
69         char msg[100];
70
71         TEST_ASSERT_NOT_NULL(es);
72
73         snprintf(msg, 100, "rtoltor was called with er=%#.8x, es=%s", er, es);
74
75         l = convertRefIDToLFP(htonl(er));
76         as = lfptoa(&l, 8);
77
78         ar = convertLFPToRefID(l);
79
80         //printf("smear %s, refid %#.8x\n", lfptoa(&l, 8), ntohl(ar));
81
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);
85
86         return;
87 }
88
89
90 void
91 ltor(l_fp l, char *er)
92 {
93         uint32_t r;
94
95         printf("ltor: ");
96
97         r = convertLFPToRefID(l);
98         printf("smear %s, refid %#.8x\n", lfptoa(&l, 8), ntohl(r));
99
100         return;
101 }
102
103
104 void test_refidsmear(void)
105 {
106
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");
115
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");
124
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");
133
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");
142
143         return;
144 }