[209] | 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 |
|
---|
| 8 | #include <gtest/gtest.h>
|
---|
| 9 | #include <ArduinoJson.h>
|
---|
| 10 |
|
---|
| 11 | TEST(JsonParser_Nested_Tests, ArrayNestedInObject) {
|
---|
| 12 | DynamicJsonBuffer jsonBuffer;
|
---|
| 13 | char jsonString[] = " { \"ab\" : [ 1 , 2 ] , \"cd\" : [ 3 , 4 ] } ";
|
---|
| 14 |
|
---|
| 15 | JsonObject &object = jsonBuffer.parseObject(jsonString);
|
---|
| 16 | JsonArray &array1 = object["ab"];
|
---|
| 17 | const JsonArray &array2 = object["cd"];
|
---|
| 18 | JsonArray &array3 = object["ef"];
|
---|
| 19 |
|
---|
| 20 | ASSERT_TRUE(object.success());
|
---|
| 21 |
|
---|
| 22 | ASSERT_TRUE(array1.success());
|
---|
| 23 | ASSERT_TRUE(array2.success());
|
---|
| 24 | ASSERT_FALSE(array3.success());
|
---|
| 25 |
|
---|
| 26 | ASSERT_EQ(2, array1.size());
|
---|
| 27 | ASSERT_EQ(2, array2.size());
|
---|
| 28 | ASSERT_EQ(0, array3.size());
|
---|
| 29 |
|
---|
| 30 | EXPECT_EQ(1, array1[0].as<int>());
|
---|
| 31 | EXPECT_EQ(2, array1[1].as<int>());
|
---|
| 32 |
|
---|
| 33 | EXPECT_EQ(3, array2[0].as<int>());
|
---|
| 34 | EXPECT_EQ(4, array2[1].as<int>());
|
---|
| 35 |
|
---|
| 36 | EXPECT_EQ(0, array3[0].as<int>());
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | TEST(JsonParser_Nested_Tests, ObjectNestedInArray) {
|
---|
| 40 | DynamicJsonBuffer jsonBuffer;
|
---|
| 41 | char jsonString[] =
|
---|
| 42 | " [ { \"a\" : 1 , \"b\" : 2 } , { \"c\" : 3 , \"d\" : 4 } ] ";
|
---|
| 43 |
|
---|
| 44 | JsonArray &array = jsonBuffer.parseArray(jsonString);
|
---|
| 45 | JsonObject &object1 = array[0];
|
---|
| 46 | const JsonObject &object2 = array[1];
|
---|
| 47 | JsonObject &object3 = array[2];
|
---|
| 48 |
|
---|
| 49 | ASSERT_TRUE(array.success());
|
---|
| 50 |
|
---|
| 51 | ASSERT_TRUE(object1.success());
|
---|
| 52 | ASSERT_TRUE(object2.success());
|
---|
| 53 | ASSERT_FALSE(object3.success());
|
---|
| 54 |
|
---|
| 55 | ASSERT_EQ(2, object1.size());
|
---|
| 56 | ASSERT_EQ(2, object2.size());
|
---|
| 57 | ASSERT_EQ(0, object3.size());
|
---|
| 58 |
|
---|
| 59 | EXPECT_EQ(1, object1["a"].as<int>());
|
---|
| 60 | EXPECT_EQ(2, object1["b"].as<int>());
|
---|
| 61 | EXPECT_EQ(3, object2["c"].as<int>());
|
---|
| 62 | EXPECT_EQ(4, object2["d"].as<int>());
|
---|
| 63 | EXPECT_EQ(0, object3["e"].as<int>());
|
---|
| 64 | }
|
---|