]> CyberLeo.Net >> Repos - FreeBSD/releng/9.3.git/blob - contrib/ntp/tests/libntp/strtolfp.c
o Fix invalid TCP checksums with pf(4). [EN-16:02.pf]
[FreeBSD/releng/9.3.git] / contrib / ntp / tests / libntp / strtolfp.c
1 #include "config.h"
2
3 #include "ntp_stdlib.h"
4 #include "ntp_calendar.h"
5
6 #include "unity.h"
7 #include "lfptest.h"
8
9 /* This file tests both atolfp and mstolfp */
10
11 void setUp(void);
12 void test_PositiveInteger(void);
13 void test_NegativeInteger(void);
14 void test_PositiveFraction(void);
15 void test_NegativeFraction(void);
16 void test_PositiveMsFraction(void);
17 void test_NegativeMsFraction(void);
18 void test_InvalidChars(void);
19
20
21 void
22 setUp(void)
23 {
24         init_lib();
25
26         return;
27 }
28
29
30 void test_PositiveInteger(void) {
31         const char *str = "500";
32         const char *str_ms = "500000";
33
34         l_fp expected = {{500},0};
35         l_fp actual, actual_ms;
36
37         TEST_ASSERT_TRUE(atolfp(str, &actual));
38         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
39
40         TEST_ASSERT_TRUE(IsEqual(expected, actual));
41         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
42 }
43
44 void test_NegativeInteger(void) {
45         const char *str = "-300";
46         const char *str_ms = "-300000";
47
48         l_fp expected;
49         expected.l_i = -300;
50         expected.l_uf = 0;
51
52         l_fp actual, actual_ms;
53
54         TEST_ASSERT_TRUE(atolfp(str, &actual));
55         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
56
57         TEST_ASSERT_TRUE(IsEqual(expected, actual));
58         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
59 }
60
61 void test_PositiveFraction(void) {
62         const char *str = "+500.5";
63         const char *str_ms = "500500.0";
64
65         l_fp expected = {{500}, HALF};
66         l_fp actual, actual_ms;
67
68         TEST_ASSERT_TRUE(atolfp(str, &actual));
69         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
70
71         TEST_ASSERT_TRUE(IsEqual(expected, actual));
72         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
73 }
74
75 void test_NegativeFraction(void) {
76         const char *str = "-300.75";
77         const char *str_ms = "-300750";
78
79         l_fp expected;
80         expected.l_i = -301;
81         expected.l_uf = QUARTER;
82
83         l_fp actual, actual_ms;
84
85         TEST_ASSERT_TRUE(atolfp(str, &actual));
86         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
87
88         TEST_ASSERT_TRUE(IsEqual(expected, actual));
89         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
90 }
91
92 void test_PositiveMsFraction(void) {
93         const char *str = "300.00025";
94         const char *str_ms = "300000.25";
95
96         l_fp expected = {{300}, QUARTER_PROMILLE_APPRX};
97         l_fp actual, actual_ms;
98
99
100         TEST_ASSERT_TRUE(atolfp(str, &actual));
101         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
102
103         TEST_ASSERT_TRUE(IsEqual(expected, actual));
104         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
105
106 }
107
108 void test_NegativeMsFraction(void) {
109         const char *str = "-199.99975";
110         const char *str_ms = "-199999.75";
111
112         l_fp expected;
113         expected.l_i = -200;
114         expected.l_uf = QUARTER_PROMILLE_APPRX;
115
116         l_fp actual, actual_ms;
117
118         TEST_ASSERT_TRUE(atolfp(str, &actual));
119         TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
120
121         TEST_ASSERT_TRUE(IsEqual(expected, actual));
122         TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
123
124 }
125
126 void test_InvalidChars(void) {
127         const char *str = "500.4a2";
128         l_fp actual, actual_ms;
129
130         TEST_ASSERT_FALSE(atolfp(str, &actual));
131         TEST_ASSERT_FALSE(mstolfp(str, &actual_ms));
132 }
133