test_str2ld.c 1.0 KB

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