enable_nan_1.cpp 666 B

12345678910111213141516171819202122232425262728293031
  1. #define ARDUINOJSON_ENABLE_NAN 1
  2. #include <ArduinoJson.h>
  3. #include <catch.hpp>
  4. #include <limits>
  5. namespace my {
  6. using ARDUINOJSON_NAMESPACE::isnan;
  7. } // namespace my
  8. TEST_CASE("ARDUINOJSON_ENABLE_NAN == 1") {
  9. DynamicJsonDocument doc(4096);
  10. JsonObject root = doc.to<JsonObject>();
  11. SECTION("serializeJson()") {
  12. root["X"] = std::numeric_limits<double>::signaling_NaN();
  13. std::string json;
  14. serializeJson(doc, json);
  15. REQUIRE(json == "{\"X\":NaN}");
  16. }
  17. SECTION("deserializeJson()") {
  18. auto err = deserializeJson(doc, "{\"X\":NaN}");
  19. float x = doc["X"];
  20. REQUIRE(err == DeserializationError::Ok);
  21. REQUIRE(my::isnan(x));
  22. }
  23. }