master
c 47 lines 1.02 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "../libnetdata.h"
4 #include <setjmp.h>
5 #include <cmocka.h>
6
7 static void test_str2ld(void **state)
8 {
9 (void)state;
10 char *values[] = {
11 "1.2345678",
12 "-35.6",
13 "0.00123",
14 "23842384234234.2",
15 ".1",
16 "1.2e-10",
17 "hello",
18 "1wrong",
19 "nan",
20 "inf",
21 NULL
22 };
23
24 for (int i = 0; values[i]; i++) {
25 char *e_mine = "hello", *e_sys = "world";
26 NETDATA_DOUBLE mine = str2ndd(values[i], &e_mine);
27 NETDATA_DOUBLE sys = strtondd(values[i], &e_sys);
28
29 if (isnan(mine))
30 assert_true(isnan(sys));
31 else if (isinf(mine))
32 assert_true(isinf(sys));
33 else if (mine != sys)
34 assert_false(ABS(mine - sys) > 0.000001);
35
36 assert_ptr_equal(e_mine, e_sys);
37 }
38 }
39
40 int main(void)
41 {
42 const struct CMUnitTest tests[] = {
43 cmocka_unit_test(test_str2ld)
44 };
45
46 return cmocka_run_group_tests_name("str2ld", tests, NULL, NULL);
47 }