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