mirror of
				https://github.com/bblanchon/ArduinoJson.git
				synced 2025-11-04 08:31:36 +01:00 
			
		
		
		
	
		
			
	
	
		
			81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#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);
							 | 
						||
| 
								 | 
							
								}
							 |