isFloat.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson/Polyfills/isFloat.hpp>
  5. #include <catch.hpp>
  6. using namespace ArduinoJson::Internals;
  7. TEST_CASE("isFloat()") {
  8. SECTION("Input is NULL") {
  9. REQUIRE(isFloat(NULL) == false);
  10. }
  11. SECTION("NoExponent") {
  12. REQUIRE(isFloat("3.14"));
  13. REQUIRE(isFloat("-3.14"));
  14. REQUIRE(isFloat("+3.14"));
  15. }
  16. SECTION("IntegralPartMissing") {
  17. REQUIRE(isFloat(".14"));
  18. REQUIRE(isFloat("-.14"));
  19. REQUIRE(isFloat("+.14"));
  20. }
  21. SECTION("FractionalPartMissing") {
  22. REQUIRE(isFloat("3."));
  23. REQUIRE(isFloat("-3.e14"));
  24. REQUIRE(isFloat("+3.e-14"));
  25. }
  26. SECTION("NoDot") {
  27. REQUIRE(isFloat("3e14"));
  28. REQUIRE(isFloat("3e-14"));
  29. REQUIRE(isFloat("3e+14"));
  30. }
  31. SECTION("Integer") {
  32. REQUIRE(isFloat("14"));
  33. REQUIRE(isFloat("-14"));
  34. REQUIRE(isFloat("+14"));
  35. }
  36. SECTION("ExponentMissing") {
  37. REQUIRE_FALSE(isFloat("3.14e"));
  38. REQUIRE_FALSE(isFloat("3.14e-"));
  39. REQUIRE_FALSE(isFloat("3.14e+"));
  40. }
  41. SECTION("JustASign") {
  42. REQUIRE_FALSE(isFloat("-"));
  43. REQUIRE_FALSE(isFloat("+"));
  44. }
  45. SECTION("Empty") {
  46. REQUIRE_FALSE(isFloat(""));
  47. }
  48. SECTION("NaN") {
  49. REQUIRE(isFloat("NaN"));
  50. REQUIRE_FALSE(isFloat("n"));
  51. REQUIRE_FALSE(isFloat("N"));
  52. REQUIRE_FALSE(isFloat("nan"));
  53. REQUIRE_FALSE(isFloat("-NaN"));
  54. REQUIRE_FALSE(isFloat("+NaN"));
  55. }
  56. SECTION("Infinity") {
  57. REQUIRE(isFloat("Infinity"));
  58. REQUIRE(isFloat("+Infinity"));
  59. REQUIRE(isFloat("-Infinity"));
  60. REQUIRE_FALSE(isFloat("infinity"));
  61. REQUIRE_FALSE(isFloat("Inf"));
  62. }
  63. }