JsonObject_PrintTo_Tests.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // Copyright Benoit Blanchon 2014-2016
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. // If you like this project, please add a star!
  7. #include <ArduinoJson.h>
  8. #include <gtest/gtest.h>
  9. using namespace ArduinoJson::Internals;
  10. class JsonObject_PrintTo_Tests : public testing::Test {
  11. public:
  12. JsonObject_PrintTo_Tests() : _object(_jsonBuffer.createObject()) {}
  13. protected:
  14. void outputMustBe(const char *expected) {
  15. char actual[256];
  16. size_t actualLen = _object.printTo(actual, sizeof(actual));
  17. size_t measuredLen = _object.measureLength();
  18. EXPECT_STREQ(expected, actual);
  19. EXPECT_EQ(strlen(expected), actualLen);
  20. EXPECT_EQ(strlen(expected), measuredLen);
  21. }
  22. DynamicJsonBuffer _jsonBuffer;
  23. JsonObject &_object;
  24. };
  25. TEST_F(JsonObject_PrintTo_Tests, EmptyObject) { outputMustBe("{}"); }
  26. TEST_F(JsonObject_PrintTo_Tests, TwoStrings) {
  27. _object["key1"] = "value1";
  28. _object.set("key2", "value2");
  29. outputMustBe("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  30. }
  31. TEST_F(JsonObject_PrintTo_Tests, RemoveFirst) {
  32. _object["key1"] = "value1";
  33. _object["key2"] = "value2";
  34. _object.remove("key1");
  35. outputMustBe("{\"key2\":\"value2\"}");
  36. }
  37. TEST_F(JsonObject_PrintTo_Tests, RemoveLast) {
  38. _object["key1"] = "value1";
  39. _object["key2"] = "value2";
  40. _object.remove("key2");
  41. outputMustBe("{\"key1\":\"value1\"}");
  42. }
  43. TEST_F(JsonObject_PrintTo_Tests, RemoveUnexistingKey) {
  44. _object["key1"] = "value1";
  45. _object["key2"] = "value2";
  46. _object.remove("key3");
  47. outputMustBe("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  48. }
  49. TEST_F(JsonObject_PrintTo_Tests, ReplaceExistingKey) {
  50. _object["key"] = "value1";
  51. _object["key"] = "value2";
  52. outputMustBe("{\"key\":\"value2\"}");
  53. }
  54. TEST_F(JsonObject_PrintTo_Tests, TwoIntegers) {
  55. _object["a"] = 1;
  56. _object.set("b", 2);
  57. outputMustBe("{\"a\":1,\"b\":2}");
  58. }
  59. TEST_F(JsonObject_PrintTo_Tests, TwoDoublesFourDigits) {
  60. _object["a"] = double_with_n_digits(3.14159265358979323846, 4);
  61. _object.set("b", 2.71828182845904523536, 4);
  62. _object.set("c", double_with_n_digits(3.14159265358979323846, 3));
  63. outputMustBe("{\"a\":3.1416,\"b\":2.7183,\"c\":3.142}");
  64. }
  65. TEST_F(JsonObject_PrintTo_Tests, TwoDoubleDefaultDigits) {
  66. _object["a"] = 3.14159265358979323846;
  67. _object.set("b", 2.71828182845904523536);
  68. outputMustBe("{\"a\":3.14,\"b\":2.72}");
  69. }
  70. TEST_F(JsonObject_PrintTo_Tests, TwoNull) {
  71. _object["a"] = static_cast<char *>(0);
  72. _object.set("b", static_cast<char *>(0));
  73. outputMustBe("{\"a\":null,\"b\":null}");
  74. }
  75. TEST_F(JsonObject_PrintTo_Tests, TwoBooleans) {
  76. _object["a"] = true;
  77. _object.set("b", false);
  78. outputMustBe("{\"a\":true,\"b\":false}");
  79. }
  80. TEST_F(JsonObject_PrintTo_Tests, ThreeNestedArrays) {
  81. _object.createNestedArray("a");
  82. _object["b"] = _jsonBuffer.createArray();
  83. _object.set("c", _jsonBuffer.createArray());
  84. outputMustBe("{\"a\":[],\"b\":[],\"c\":[]}");
  85. }
  86. TEST_F(JsonObject_PrintTo_Tests, ThreeNestedObjects) {
  87. _object.createNestedObject("a");
  88. _object["b"] = _jsonBuffer.createObject();
  89. _object.set("c", _jsonBuffer.createObject());
  90. outputMustBe("{\"a\":{},\"b\":{},\"c\":{}}");
  91. }