strtolfp.c revision 1.1.1.2 1 1.1.1.2 christos /* $NetBSD: strtolfp.c,v 1.1.1.2 2015/07/10 13:11:14 christos Exp $ */
2 1.1.1.2 christos
3 1.1 christos #include "config.h"
4 1.1 christos
5 1.1 christos #include "ntp_stdlib.h"
6 1.1 christos #include "ntp_calendar.h"
7 1.1 christos
8 1.1 christos #include "unity.h"
9 1.1 christos #include "lfptest.h"
10 1.1 christos
11 1.1 christos /* This file tests both atolfp and mstolfp */
12 1.1 christos
13 1.1 christos void test_PositiveInteger(void) {
14 1.1 christos const char *str = "500";
15 1.1 christos const char *str_ms = "500000";
16 1.1 christos
17 1.1 christos l_fp expected = {500,0};
18 1.1 christos l_fp actual, actual_ms;
19 1.1 christos
20 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
21 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
22 1.1 christos
23 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
24 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
25 1.1 christos }
26 1.1 christos
27 1.1 christos void test_NegativeInteger(void) {
28 1.1 christos const char *str = "-300";
29 1.1 christos const char *str_ms = "-300000";
30 1.1 christos
31 1.1 christos l_fp expected;
32 1.1 christos expected.l_i = -300;
33 1.1 christos expected.l_uf = 0;
34 1.1 christos
35 1.1 christos l_fp actual, actual_ms;
36 1.1 christos
37 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
38 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
39 1.1 christos
40 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
41 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
42 1.1 christos }
43 1.1 christos
44 1.1 christos void test_PositiveFraction(void) {
45 1.1 christos const char *str = "+500.5";
46 1.1 christos const char *str_ms = "500500.0";
47 1.1 christos
48 1.1 christos l_fp expected = {500, HALF};
49 1.1 christos l_fp actual, actual_ms;
50 1.1 christos
51 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
52 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
53 1.1 christos
54 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
55 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
56 1.1 christos }
57 1.1 christos
58 1.1 christos void test_NegativeFraction(void) {
59 1.1 christos const char *str = "-300.75";
60 1.1 christos const char *str_ms = "-300750";
61 1.1 christos
62 1.1 christos l_fp expected;
63 1.1 christos expected.l_i = -301;
64 1.1 christos expected.l_uf = QUARTER;
65 1.1 christos
66 1.1 christos l_fp actual, actual_ms;
67 1.1 christos
68 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
69 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
70 1.1 christos
71 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
72 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
73 1.1 christos }
74 1.1 christos
75 1.1 christos void test_PositiveMsFraction(void) {
76 1.1 christos const char *str = "300.00025";
77 1.1 christos const char *str_ms = "300000.25";
78 1.1 christos
79 1.1 christos l_fp expected = {300, QUARTER_PROMILLE_APPRX};
80 1.1 christos l_fp actual, actual_ms;
81 1.1 christos
82 1.1 christos
83 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
84 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
85 1.1 christos
86 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
87 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
88 1.1 christos
89 1.1 christos }
90 1.1 christos
91 1.1 christos void test_NegativeMsFraction(void) {
92 1.1 christos const char *str = "-199.99975";
93 1.1 christos const char *str_ms = "-199999.75";
94 1.1 christos
95 1.1 christos l_fp expected;
96 1.1 christos expected.l_i = -200;
97 1.1 christos expected.l_uf = QUARTER_PROMILLE_APPRX;
98 1.1 christos
99 1.1 christos l_fp actual, actual_ms;
100 1.1 christos
101 1.1 christos TEST_ASSERT_TRUE(atolfp(str, &actual));
102 1.1 christos TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
103 1.1 christos
104 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual));
105 1.1 christos TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
106 1.1 christos
107 1.1 christos }
108 1.1 christos
109 1.1 christos void test_InvalidChars(void) {
110 1.1 christos const char *str = "500.4a2";
111 1.1 christos l_fp actual, actual_ms;
112 1.1 christos
113 1.1 christos TEST_ASSERT_FALSE(atolfp(str, &actual));
114 1.1 christos TEST_ASSERT_FALSE(mstolfp(str, &actual_ms));
115 1.1 christos }
116 1.1 christos
117