JsonArray_Subscript_Tests.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. #include <stdint.h>
  10. class JsonArray_Subscript_Tests : public ::testing::Test {
  11. protected:
  12. JsonArray_Subscript_Tests() : _array(_jsonBuffer.createArray()) {
  13. _array.add(0);
  14. }
  15. DynamicJsonBuffer _jsonBuffer;
  16. JsonArray& _array;
  17. };
  18. #define TEST_(name) TEST_F(JsonArray_Subscript_Tests, name)
  19. TEST_(SizeIsUnchanged) {
  20. _array[0] = "hello";
  21. EXPECT_EQ(1U, _array.size());
  22. }
  23. TEST_(StoreInteger) {
  24. _array[0] = 123;
  25. EXPECT_EQ(123, _array[0].as<int>());
  26. EXPECT_TRUE(_array[0].is<int>());
  27. EXPECT_FALSE(_array[0].is<double>());
  28. }
  29. #if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64
  30. TEST_(StoreLongLong) {
  31. _array[0] = 9223372036854775807;
  32. EXPECT_EQ(9223372036854775807, _array[0].as<long long>());
  33. EXPECT_TRUE(_array[0].is<int>());
  34. EXPECT_FALSE(_array[0].is<double>());
  35. }
  36. #endif
  37. TEST_(StoreDouble) {
  38. _array[0] = 123.45;
  39. EXPECT_EQ(123.45, _array[0].as<double>());
  40. EXPECT_TRUE(_array[0].is<double>());
  41. EXPECT_FALSE(_array[0].is<int>());
  42. }
  43. TEST_(StoreBoolean) {
  44. _array[0] = true;
  45. EXPECT_EQ(true, _array[0].as<bool>());
  46. EXPECT_TRUE(_array[0].is<bool>());
  47. EXPECT_FALSE(_array[0].is<int>());
  48. }
  49. TEST_(StoreString) {
  50. _array[0] = "hello";
  51. EXPECT_STREQ("hello", _array[0].as<const char*>());
  52. EXPECT_STREQ("hello", _array[0].as<char*>()); // <- short hand
  53. EXPECT_TRUE(_array[0].is<const char*>());
  54. EXPECT_FALSE(_array[0].is<int>());
  55. }
  56. TEST_(StoreNestedArray) {
  57. JsonArray& arr = _jsonBuffer.createArray();
  58. _array[0] = arr;
  59. EXPECT_EQ(&arr, &_array[0].as<JsonArray&>());
  60. EXPECT_EQ(&arr, &_array[0].as<JsonArray>()); // <- short hand
  61. EXPECT_EQ(&arr, &_array[0].as<const JsonArray&>());
  62. EXPECT_EQ(&arr, &_array[0].as<const JsonArray>()); // <- short hand
  63. EXPECT_TRUE(_array[0].is<JsonArray&>());
  64. EXPECT_FALSE(_array[0].is<int>());
  65. }
  66. TEST_(StoreNestedObject) {
  67. JsonObject& obj = _jsonBuffer.createObject();
  68. _array[0] = obj;
  69. EXPECT_EQ(&obj, &_array[0].as<JsonObject&>());
  70. EXPECT_EQ(&obj, &_array[0].as<JsonObject>()); // <- short hand
  71. EXPECT_EQ(&obj, &_array[0].as<const JsonObject&>());
  72. EXPECT_EQ(&obj, &_array[0].as<const JsonObject>()); // <- short hand
  73. EXPECT_TRUE(_array[0].is<JsonObject&>());
  74. EXPECT_FALSE(_array[0].is<int>());
  75. }
  76. TEST_(StoreArraySubscript) {
  77. JsonArray& arr = _jsonBuffer.createArray();
  78. arr.add("hello");
  79. _array[0] = arr[0];
  80. EXPECT_STREQ("hello", _array[0]);
  81. }
  82. TEST_(StoreObjectSubscript) {
  83. JsonObject& obj = _jsonBuffer.createObject();
  84. obj["x"] = "hello";
  85. _array[0] = obj["x"];
  86. EXPECT_STREQ("hello", _array[0]);
  87. }