| 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 | } |