|
|
@@ -0,0 +1,80 @@
|
|
|
+#include <gtest/gtest.h>
|
|
|
+#include <JsonArray.h>
|
|
|
+#include <JsonObject.h>
|
|
|
+#include <JsonValue.h>
|
|
|
+#include <StaticJsonBuffer.h>
|
|
|
+
|
|
|
+using namespace ArduinoJson::Generator;
|
|
|
+
|
|
|
+struct Person
|
|
|
+{
|
|
|
+ int id;
|
|
|
+ char name[32];
|
|
|
+};
|
|
|
+
|
|
|
+class Issue10 : public testing::Test
|
|
|
+{
|
|
|
+protected:
|
|
|
+
|
|
|
+ virtual void SetUp()
|
|
|
+ {
|
|
|
+ Person boss;
|
|
|
+ boss.id = 1;
|
|
|
+ strcpy(boss.name, "Jeff");
|
|
|
+ Person employee;
|
|
|
+ employee.id = 2;
|
|
|
+ strcpy(employee.name, "John");
|
|
|
+ persons[0] = boss;
|
|
|
+ persons[1] = employee;
|
|
|
+ }
|
|
|
+
|
|
|
+ void checkJsonString(JsonContainer& p)
|
|
|
+ {
|
|
|
+ char buffer[256];
|
|
|
+ p.printTo(buffer, sizeof(buffer));
|
|
|
+
|
|
|
+ EXPECT_STREQ("[{\"id\":1,\"name\":\"Jeff\"},{\"id\":2,\"name\":\"John\"}]", buffer);
|
|
|
+ }
|
|
|
+
|
|
|
+ void nodeCountMustBe(int expected)
|
|
|
+ {
|
|
|
+ EXPECT_EQ(expected, json.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ Person persons[2];
|
|
|
+ StaticJsonBuffer<20> json;
|
|
|
+};
|
|
|
+
|
|
|
+TEST_F(Issue10, PopulateArrayByAddingAnObject)
|
|
|
+{
|
|
|
+ JsonArray array= json.createArray();
|
|
|
+
|
|
|
+ for (int i = 0; i < 2; i++)
|
|
|
+ {
|
|
|
+ JsonObject object = json.createObject();
|
|
|
+
|
|
|
+ object["id"] = persons[i].id;
|
|
|
+ object["name"] = persons[i].name;
|
|
|
+
|
|
|
+ array.add(object); // <- adds a reference to an existing objet (creates 2 extra proxy nodes)
|
|
|
+ }
|
|
|
+
|
|
|
+ checkJsonString(array);
|
|
|
+ nodeCountMustBe(15);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(Issue10, PopulateArrayByCreatingNestedObjects)
|
|
|
+{
|
|
|
+ JsonArray array = json.createArray();
|
|
|
+
|
|
|
+ for (int i = 0; i < 2; i++)
|
|
|
+ {
|
|
|
+ JsonObject object = array.createNestedObject();
|
|
|
+
|
|
|
+ object["id"] = persons[i].id;
|
|
|
+ object["name"] = persons[i].name;
|
|
|
+ }
|
|
|
+
|
|
|
+ checkJsonString(array);
|
|
|
+ nodeCountMustBe(11);
|
|
|
+}
|