doubleToFloat.cpp 698 B

12345678910111213141516171819202122232425
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2019
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using namespace ARDUINOJSON_NAMESPACE;
  7. template <typename T>
  8. static void check(const char* input, T expected) {
  9. T actual;
  10. uint8_t* f = reinterpret_cast<uint8_t*>(&actual);
  11. const uint8_t* d = reinterpret_cast<const uint8_t*>(input);
  12. doubleToFloat(d, f);
  13. fixEndianess(actual);
  14. CHECK(actual == expected);
  15. }
  16. TEST_CASE("doubleToFloat()") {
  17. check("\x40\x09\x21\xCA\xC0\x83\x12\x6F", 3.1415f);
  18. check("\x00\x00\x00\x00\x00\x00\x00\x00", 0.0f);
  19. check("\x80\x00\x00\x00\x00\x00\x00\x00", -0.0f);
  20. check("\xC0\x5E\xDC\xCC\xCC\xCC\xCC\xCD", -123.45f);
  21. }