isFloat.cpp 1.7 KB

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