deserializeObject.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. TEST_CASE("deserializeMsgPack(JsonObject&)") {
  7. DynamicJsonObject object;
  8. SECTION("not an object") {
  9. const char* input = "\xA0";
  10. MsgPackError error = deserializeMsgPack(object, input);
  11. REQUIRE(error == MsgPackError::NotAnObject);
  12. }
  13. SECTION("fixmap") {
  14. SECTION("empty") {
  15. const char* input = "\x80";
  16. MsgPackError error = deserializeMsgPack(object, input);
  17. REQUIRE(error == MsgPackError::Ok);
  18. REQUIRE(object.size() == 0);
  19. }
  20. SECTION("two integers") {
  21. const char* input = "\x82\xA3one\x01\xA3two\x02";
  22. MsgPackError error = deserializeMsgPack(object, input);
  23. REQUIRE(error == MsgPackError::Ok);
  24. REQUIRE(object.size() == 2);
  25. REQUIRE(object["one"] == 1);
  26. REQUIRE(object["two"] == 2);
  27. }
  28. }
  29. SECTION("map 16") {
  30. SECTION("empty") {
  31. const char* input = "\xDE\x00\x00";
  32. MsgPackError error = deserializeMsgPack(object, input);
  33. REQUIRE(error == MsgPackError::Ok);
  34. REQUIRE(object.size() == 0);
  35. }
  36. SECTION("two strings") {
  37. const char* input = "\xDE\x00\x02\xA1H\xA5hello\xA1W\xA5world";
  38. MsgPackError error = deserializeMsgPack(object, input);
  39. REQUIRE(error == MsgPackError::Ok);
  40. REQUIRE(object.size() == 2);
  41. REQUIRE(object["H"] == "hello");
  42. REQUIRE(object["W"] == "world");
  43. }
  44. }
  45. SECTION("map 32") {
  46. SECTION("empty") {
  47. const char* input = "\xDF\x00\x00\x00\x00";
  48. MsgPackError error = deserializeMsgPack(object, input);
  49. REQUIRE(error == MsgPackError::Ok);
  50. REQUIRE(object.size() == 0);
  51. }
  52. SECTION("two floats") {
  53. const char* input =
  54. "\xDF\x00\x00\x00\x02\xA4zero\xCA\x00\x00\x00\x00\xA2pi\xCA\x40\x48"
  55. "\xF5\xC3";
  56. MsgPackError error = deserializeMsgPack(object, input);
  57. REQUIRE(error == MsgPackError::Ok);
  58. REQUIRE(object.size() == 2);
  59. REQUIRE(object["zero"] == 0.0f);
  60. REQUIRE(object["pi"] == 3.14f);
  61. }
  62. }
  63. }