unsigned_char.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. // Copyright Benoit Blanchon 2014-2017
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://bblanchon.github.io/ArduinoJson/
  6. // If you like this project, please add a star!
  7. #include <ArduinoJson.h>
  8. #include <gtest/gtest.h>
  9. #if defined(__clang__)
  10. #define CONFLICTS_WITH_BUILTIN_OPERATOR
  11. #endif
  12. TEST(UnsignedCharArray, ParseArray) {
  13. unsigned char json[] = "[42]";
  14. StaticJsonBuffer<JSON_ARRAY_SIZE(1)> jsonBuffer;
  15. JsonArray& arr = jsonBuffer.parseArray(json);
  16. EXPECT_TRUE(arr.success());
  17. }
  18. TEST(UnsignedCharArray, ParseObject) {
  19. unsigned char json[] = "{\"a\":42}";
  20. StaticJsonBuffer<JSON_OBJECT_SIZE(1)> jsonBuffer;
  21. JsonObject& obj = jsonBuffer.parseObject(json);
  22. EXPECT_TRUE(obj.success());
  23. }
  24. TEST(UnsignedCharArray, JsonVariant_Constructor) {
  25. unsigned char value[] = "42";
  26. JsonVariant variant(value);
  27. EXPECT_EQ(42, variant.as<int>());
  28. }
  29. TEST(UnsignedCharArray, JsonVariant_Assign) {
  30. unsigned char value[] = "42";
  31. JsonVariant variant(666);
  32. variant = value;
  33. EXPECT_EQ(42, variant.as<int>());
  34. }
  35. #ifndef CONFLICTS_WITH_BUILTIN_OPERATOR
  36. TEST(UnsignedCharArray, JsonVariant_Subscript) {
  37. unsigned char key[] = "hello";
  38. DynamicJsonBuffer jsonBuffer;
  39. JsonVariant variant = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  40. EXPECT_STREQ("world", variant[key]);
  41. }
  42. #endif
  43. #ifndef CONFLICTS_WITH_BUILTIN_OPERATOR
  44. TEST(UnsignedCharArray, JsonVariant_Subscript_Const) {
  45. unsigned char key[] = "hello";
  46. DynamicJsonBuffer jsonBuffer;
  47. const JsonVariant variant = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  48. EXPECT_STREQ("world", variant[key]);
  49. }
  50. #endif
  51. TEST(UnsignedCharArray, JsonVariant_Equals) {
  52. unsigned char comparand[] = "hello";
  53. DynamicJsonBuffer jsonBuffer;
  54. const JsonVariant variant = "hello";
  55. EXPECT_TRUE(comparand == variant);
  56. EXPECT_TRUE(variant == comparand);
  57. EXPECT_FALSE(comparand != variant);
  58. EXPECT_FALSE(variant != comparand);
  59. }
  60. TEST(UnsignedCharArray, JsonVariant_Differs) {
  61. unsigned char comparand[] = "hello";
  62. DynamicJsonBuffer jsonBuffer;
  63. const JsonVariant variant = "world";
  64. EXPECT_TRUE(comparand != variant);
  65. EXPECT_TRUE(variant != comparand);
  66. EXPECT_FALSE(comparand == variant);
  67. EXPECT_FALSE(variant == comparand);
  68. }
  69. #ifndef CONFLICTS_WITH_BUILTIN_OPERATOR
  70. TEST(UnsignedCharArray, JsonObject_Subscript) {
  71. unsigned char key[] = "hello";
  72. DynamicJsonBuffer jsonBuffer;
  73. JsonObject& obj = jsonBuffer.createObject();
  74. obj[key] = "world";
  75. EXPECT_STREQ("world", obj["hello"]);
  76. }
  77. #endif
  78. TEST(UnsignedCharArray, JsonObject_Subscript_Assign) { // issue #416
  79. unsigned char value[] = "world";
  80. DynamicJsonBuffer jsonBuffer;
  81. JsonObject& obj = jsonBuffer.createObject();
  82. obj["hello"] = value;
  83. EXPECT_STREQ("world", obj["hello"]);
  84. }
  85. TEST(UnsignedCharArray, JsonObject_Subscript_Set) {
  86. unsigned char value[] = "world";
  87. DynamicJsonBuffer jsonBuffer;
  88. JsonObject& obj = jsonBuffer.createObject();
  89. obj["hello"].set(value);
  90. EXPECT_STREQ("world", obj["hello"]);
  91. }
  92. #ifndef CONFLICTS_WITH_BUILTIN_OPERATOR
  93. TEST(UnsignedCharArray, JsonObject_Subscript_Const) {
  94. unsigned char key[] = "hello";
  95. DynamicJsonBuffer jsonBuffer;
  96. const JsonObject& obj = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  97. EXPECT_STREQ("world", obj[key]);
  98. }
  99. #endif
  100. TEST(UnsignedCharArray, JsonObject_Get) {
  101. unsigned char key[] = "hello";
  102. DynamicJsonBuffer jsonBuffer;
  103. JsonObject& obj = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  104. EXPECT_STREQ("world", obj.get<char*>(key));
  105. }
  106. TEST(UnsignedCharArray, JsonObject_Set_Key) {
  107. unsigned char key[] = "hello";
  108. DynamicJsonBuffer jsonBuffer;
  109. JsonObject& obj = jsonBuffer.createObject();
  110. obj.set(key, "world");
  111. EXPECT_STREQ("world", obj["hello"]);
  112. }
  113. TEST(UnsignedCharArray, JsonObject_Set_Value) {
  114. unsigned char value[] = "world";
  115. DynamicJsonBuffer jsonBuffer;
  116. JsonObject& obj = jsonBuffer.createObject();
  117. obj.set("hello", value);
  118. EXPECT_STREQ("world", obj["hello"]);
  119. }
  120. TEST(UnsignedCharArray, JsonObject_Set_Key_WithDecimals) {
  121. unsigned char key[] = "hello";
  122. DynamicJsonBuffer jsonBuffer;
  123. JsonObject& obj = jsonBuffer.createObject();
  124. obj.set(key, 3.14, 2);
  125. EXPECT_EQ(3.14, obj["hello"]);
  126. }
  127. TEST(UnsignedCharArray, JsonObject_Set_KeyAndValue) {
  128. unsigned char key[] = "world";
  129. DynamicJsonBuffer jsonBuffer;
  130. JsonObject& obj = jsonBuffer.createObject();
  131. obj.set(key, key);
  132. EXPECT_STREQ("world", obj["world"]);
  133. }
  134. TEST(UnsignedCharArray, JsonObject_ContainsKey) {
  135. unsigned char key[] = "hello";
  136. DynamicJsonBuffer jsonBuffer;
  137. const JsonObject& obj = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  138. EXPECT_TRUE(obj.containsKey(key));
  139. }
  140. TEST(UnsignedCharArray, JsonObject_Remove) {
  141. unsigned char key[] = "hello";
  142. DynamicJsonBuffer jsonBuffer;
  143. JsonObject& obj = jsonBuffer.parseObject("{\"hello\":\"world\"}");
  144. obj.remove(key);
  145. EXPECT_EQ(0, obj.size());
  146. }
  147. TEST(UnsignedCharArray, JsonObject_Is) {
  148. unsigned char key[] = "hello";
  149. DynamicJsonBuffer jsonBuffer;
  150. JsonObject& obj = jsonBuffer.parseObject("{\"hello\":42}");
  151. EXPECT_TRUE(obj.is<int>(key));
  152. }
  153. TEST(UnsignedCharArray, JsonObject_CreateNestedArray) {
  154. unsigned char key[] = "hello";
  155. DynamicJsonBuffer jsonBuffer;
  156. JsonObject& obj = jsonBuffer.createObject();
  157. obj.createNestedArray(key);
  158. }
  159. TEST(UnsignedCharArray, JsonObject_CreateNestedObject) {
  160. unsigned char key[] = "hello";
  161. DynamicJsonBuffer jsonBuffer;
  162. JsonObject& obj = jsonBuffer.createObject();
  163. obj.createNestedObject(key);
  164. }
  165. TEST(UnsignedCharArray, JsonArray_Add) {
  166. unsigned char value[] = "world";
  167. DynamicJsonBuffer jsonBuffer;
  168. JsonArray& arr = jsonBuffer.createArray();
  169. arr.add(value);
  170. EXPECT_STREQ("world", arr[0]);
  171. }
  172. TEST(UnsignedCharArray, JsonArray_Set) {
  173. unsigned char value[] = "world";
  174. DynamicJsonBuffer jsonBuffer;
  175. JsonArray& arr = jsonBuffer.createArray();
  176. arr.add("hello");
  177. arr.set(0, value);
  178. EXPECT_STREQ("world", arr[0]);
  179. }
  180. TEST(UnsignedCharArray, JsonArraySubscript_Set) {
  181. unsigned char value[] = "world";
  182. DynamicJsonBuffer jsonBuffer;
  183. JsonArray& arr = jsonBuffer.createArray();
  184. arr.add("hello");
  185. arr[0].set(value);
  186. EXPECT_STREQ("world", arr[0]);
  187. }
  188. TEST(UnsignedCharArray, JsonArraySubscript_Assign) {
  189. unsigned char value[] = "world";
  190. DynamicJsonBuffer jsonBuffer;
  191. JsonArray& arr = jsonBuffer.createArray();
  192. arr.add("hello");
  193. arr[0] = value;
  194. EXPECT_STREQ("world", arr[0]);
  195. }
  196. TEST(UnsignedCharArray, JsonBuffer_strdup) {
  197. unsigned char value[] = "world";
  198. DynamicJsonBuffer jsonBuffer;
  199. const char* dup = jsonBuffer.strdup(value);
  200. EXPECT_NE(static_cast<const void*>(value), static_cast<const void*>(dup));
  201. EXPECT_STREQ("world", dup);
  202. }