parseNumber.cpp 994 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2021
  3. // MIT License
  4. #include <ArduinoJson/Numbers/Integer.hpp>
  5. #include <ArduinoJson/Numbers/parseNumber.hpp>
  6. #include <ArduinoJson/Variant/VariantImpl.hpp>
  7. #include <catch.hpp>
  8. using namespace ARDUINOJSON_NAMESPACE;
  9. TEST_CASE("Test unsigned integer overflow") {
  10. VariantData first, second;
  11. first.init();
  12. second.init();
  13. // Avoids MSVC warning C4127 (conditional expression is constant)
  14. size_t integerSize = sizeof(Integer);
  15. if (integerSize == 8) {
  16. parseNumber("18446744073709551615", first);
  17. parseNumber("18446744073709551616", second);
  18. } else {
  19. parseNumber("4294967295", first);
  20. parseNumber("4294967296", second);
  21. }
  22. REQUIRE(first.type() == uint8_t(VALUE_IS_POSITIVE_INTEGER));
  23. REQUIRE(second.type() == uint8_t(VALUE_IS_FLOAT));
  24. }
  25. TEST_CASE("Invalid value") {
  26. VariantData result;
  27. result.init();
  28. parseNumber("6a3", result);
  29. REQUIRE(result.type() == uint8_t(VALUE_IS_NULL));
  30. }