3 /* This class tests both atolfp and mstolfp */
5 class strtolfpTest : public lfptest {
8 TEST_F(strtolfpTest, PositiveInteger) {
9 const char *str = "500";
10 const char *str_ms = "500000";
12 l_fp expected = {500,0};
13 l_fp actual, actual_ms;
15 ASSERT_TRUE(atolfp(str, &actual));
16 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
18 EXPECT_TRUE(IsEqual(expected, actual));
19 EXPECT_TRUE(IsEqual(expected, actual_ms));
22 TEST_F(strtolfpTest, NegativeInteger) {
23 const char *str = "-300";
24 const char *str_ms = "-300000";
30 l_fp actual, actual_ms;
32 ASSERT_TRUE(atolfp(str, &actual));
33 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
35 EXPECT_TRUE(IsEqual(expected, actual));
36 EXPECT_TRUE(IsEqual(expected, actual_ms));
39 TEST_F(strtolfpTest, PositiveFraction) {
40 const char *str = "+500.5";
41 const char *str_ms = "500500.0";
43 l_fp expected = {500, HALF};
44 l_fp actual, actual_ms;
46 ASSERT_TRUE(atolfp(str, &actual));
47 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
49 EXPECT_TRUE(IsEqual(expected, actual));
50 EXPECT_TRUE(IsEqual(expected, actual_ms));
53 TEST_F(strtolfpTest, NegativeFraction) {
54 const char *str = "-300.75";
55 const char *str_ms = "-300750";
59 expected.l_uf = QUARTER;
61 l_fp actual, actual_ms;
63 ASSERT_TRUE(atolfp(str, &actual));
64 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
66 EXPECT_TRUE(IsEqual(expected, actual));
67 EXPECT_TRUE(IsEqual(expected, actual_ms));
70 TEST_F(strtolfpTest, PositiveMsFraction) {
71 const char *str = "300.00025";
72 const char *str_ms = "300000.25";
74 l_fp expected = {300, QUARTER_PROMILLE_APPRX};
75 l_fp actual, actual_ms;
77 ASSERT_TRUE(atolfp(str, &actual));
78 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
80 EXPECT_TRUE(IsEqual(expected, actual));
81 EXPECT_TRUE(IsEqual(expected, actual_ms));
84 TEST_F(strtolfpTest, NegativeMsFraction) {
85 const char *str = "-199.99975";
86 const char *str_ms = "-199999.75";
90 expected.l_uf = QUARTER_PROMILLE_APPRX;
92 l_fp actual, actual_ms;
94 ASSERT_TRUE(atolfp(str, &actual));
95 ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
97 EXPECT_TRUE(IsEqual(expected, actual));
98 EXPECT_TRUE(IsEqual(expected, actual_ms));
101 TEST_F(strtolfpTest, InvalidChars) {
102 const char *str = "500.4a2";
103 l_fp actual, actual_ms;
105 ASSERT_FALSE(atolfp(str, &actual));
106 ASSERT_FALSE(mstolfp(str, &actual_ms));