JsonParser_Object_Tests.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include <gtest/gtest.h>
  2. #include <ArduinoJson/StaticJsonBuffer.hpp>
  3. #include <ArduinoJson/JsonValue.hpp>
  4. using namespace ArduinoJson;
  5. class JsonParser_Object_Test : public testing::Test
  6. {
  7. protected:
  8. void whenInputIs(const char* jsonString)
  9. {
  10. strcpy(_jsonString, jsonString);
  11. _object = _jsonBuffer.parseObject(_jsonString);
  12. }
  13. void parseMustSucceed()
  14. {
  15. EXPECT_TRUE(_object.success());
  16. }
  17. void parseMustFail()
  18. {
  19. EXPECT_FALSE(_object.success());
  20. }
  21. void sizeMustBe(int expected)
  22. {
  23. EXPECT_EQ(expected, _object.size());
  24. }
  25. void keyMustHaveValue(const char* key, const char* expected)
  26. {
  27. EXPECT_STREQ(expected, static_cast<const char*>(_object[key]));
  28. }
  29. private:
  30. StaticJsonBuffer<10> _jsonBuffer;
  31. JsonObject _object;
  32. char _jsonString[256];
  33. };
  34. TEST_F(JsonParser_Object_Test, EmptyObject)
  35. {
  36. whenInputIs("{}");
  37. parseMustSucceed();
  38. sizeMustBe(0);
  39. }
  40. TEST_F(JsonParser_Object_Test, MissingClosingBrace)
  41. {
  42. whenInputIs("{");
  43. parseMustFail();
  44. sizeMustBe(0);
  45. }
  46. TEST_F(JsonParser_Object_Test, MissingColonAndValue)
  47. {
  48. whenInputIs("{\"key\"}");
  49. parseMustFail();
  50. sizeMustBe(0);
  51. }
  52. TEST_F(JsonParser_Object_Test, MissingQuotesAndColonAndValue)
  53. {
  54. whenInputIs("{key}");
  55. parseMustFail();
  56. sizeMustBe(0);
  57. }
  58. TEST_F(JsonParser_Object_Test, OneString)
  59. {
  60. whenInputIs("{\"key\":\"value\"}");
  61. parseMustSucceed();
  62. sizeMustBe(1);
  63. keyMustHaveValue("key", "value");
  64. }
  65. TEST_F(JsonParser_Object_Test, OneStringSingleQuotes)
  66. {
  67. whenInputIs("{'key':'value'}");
  68. parseMustSucceed();
  69. sizeMustBe(1);
  70. keyMustHaveValue("key", "value");
  71. }
  72. TEST_F(JsonParser_Object_Test, OneStringSpaceBeforeKey)
  73. {
  74. whenInputIs("{ \"key\":\"value\"}");
  75. parseMustSucceed();
  76. sizeMustBe(1);
  77. keyMustHaveValue("key", "value");
  78. }
  79. TEST_F(JsonParser_Object_Test, OneStringSpaceAfterKey)
  80. {
  81. whenInputIs("{\"key\" :\"value\"}");
  82. parseMustSucceed();
  83. sizeMustBe(1);
  84. keyMustHaveValue("key", "value");
  85. }
  86. TEST_F(JsonParser_Object_Test, OneStringSpaceBeforeValue)
  87. {
  88. whenInputIs("{\"key\": \"value\"}");
  89. parseMustSucceed();
  90. sizeMustBe(1);
  91. keyMustHaveValue("key", "value");
  92. }
  93. TEST_F(JsonParser_Object_Test, OneStringSpaceAfterValue)
  94. {
  95. whenInputIs("{\"key\":\"value\" }");
  96. parseMustSucceed();
  97. sizeMustBe(1);
  98. keyMustHaveValue("key", "value");
  99. }
  100. TEST_F(JsonParser_Object_Test, TwoStrings)
  101. {
  102. whenInputIs("{\"key1\":\"value1\",\"key2\":\"value2\"}");
  103. parseMustSucceed();
  104. sizeMustBe(2);
  105. keyMustHaveValue("key1", "value1");
  106. keyMustHaveValue("key2", "value2");
  107. }