]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/tests/libntp/g_strtolfp.cpp
Fix a regression with SA-15:24 patch that prevented NIS from
[FreeBSD/releng/10.2.git] / contrib / ntp / tests / libntp / g_strtolfp.cpp
1 #include "g_lfptest.h"
2
3 /* This class tests both atolfp and mstolfp */
4
5 class strtolfpTest : public lfptest {
6 };
7
8 TEST_F(strtolfpTest, PositiveInteger) {
9         const char *str = "500";
10         const char *str_ms = "500000";
11
12         l_fp expected = {500,0};
13         l_fp actual, actual_ms;
14
15         ASSERT_TRUE(atolfp(str, &actual));
16         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
17
18         EXPECT_TRUE(IsEqual(expected, actual));
19         EXPECT_TRUE(IsEqual(expected, actual_ms));
20 }
21
22 TEST_F(strtolfpTest, NegativeInteger) {
23         const char *str = "-300";
24         const char *str_ms = "-300000";
25
26         l_fp expected;
27         expected.l_i = -300;
28         expected.l_uf = 0;
29
30         l_fp actual, actual_ms;
31
32         ASSERT_TRUE(atolfp(str, &actual));
33         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
34
35         EXPECT_TRUE(IsEqual(expected, actual));
36         EXPECT_TRUE(IsEqual(expected, actual_ms));
37 }
38
39 TEST_F(strtolfpTest, PositiveFraction) {
40         const char *str = "+500.5";
41         const char *str_ms = "500500.0";
42
43         l_fp expected = {500, HALF};
44         l_fp actual, actual_ms;
45
46         ASSERT_TRUE(atolfp(str, &actual));
47         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
48
49         EXPECT_TRUE(IsEqual(expected, actual));
50         EXPECT_TRUE(IsEqual(expected, actual_ms));
51 }
52
53 TEST_F(strtolfpTest, NegativeFraction) {
54         const char *str = "-300.75";
55         const char *str_ms = "-300750";
56
57         l_fp expected;
58         expected.l_i = -301;
59         expected.l_uf = QUARTER;
60
61         l_fp actual, actual_ms;
62
63         ASSERT_TRUE(atolfp(str, &actual));
64         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
65
66         EXPECT_TRUE(IsEqual(expected, actual));
67         EXPECT_TRUE(IsEqual(expected, actual_ms));
68 }
69
70 TEST_F(strtolfpTest, PositiveMsFraction) {
71         const char *str = "300.00025";
72         const char *str_ms = "300000.25";
73
74         l_fp expected = {300, QUARTER_PROMILLE_APPRX};
75         l_fp actual, actual_ms;
76
77         ASSERT_TRUE(atolfp(str, &actual));
78         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
79
80         EXPECT_TRUE(IsEqual(expected, actual));
81         EXPECT_TRUE(IsEqual(expected, actual_ms));
82 }
83
84 TEST_F(strtolfpTest, NegativeMsFraction) {
85         const char *str = "-199.99975";
86         const char *str_ms = "-199999.75";
87
88         l_fp expected;
89         expected.l_i = -200;
90         expected.l_uf = QUARTER_PROMILLE_APPRX;
91
92         l_fp actual, actual_ms;
93
94         ASSERT_TRUE(atolfp(str, &actual));
95         ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
96
97         EXPECT_TRUE(IsEqual(expected, actual));
98         EXPECT_TRUE(IsEqual(expected, actual_ms));
99 }
100
101 TEST_F(strtolfpTest, InvalidChars) {
102         const char *str = "500.4a2";
103         l_fp actual, actual_ms;
104
105         ASSERT_FALSE(atolfp(str, &actual));
106         ASSERT_FALSE(mstolfp(str, &actual_ms));
107 }