diff --git a/JsonGeneratorTests/JsonArray.h b/JsonGeneratorTests/JsonArray.h index 0a8bd8e8..80e7b61b 100644 --- a/JsonGeneratorTests/JsonArray.h +++ b/JsonGeneratorTests/JsonArray.h @@ -38,6 +38,13 @@ public: addItem(JSON_BOOLEAN, v); } + void add(JsonObjectBase& value) + { + JsonObjectValue v; + v.object = &value; + addItem(JSON_OBJECT, v); + } + void writeTo(char* buffer, size_t bufferSize) { StringBuilder sb(buffer, bufferSize); diff --git a/JsonGeneratorTests/JsonArrayTests.cpp b/JsonGeneratorTests/JsonArrayTests.cpp index 64dcf594..b9916665 100644 --- a/JsonGeneratorTests/JsonArrayTests.cpp +++ b/JsonGeneratorTests/JsonArrayTests.cpp @@ -102,18 +102,15 @@ namespace JsonGeneratorTests AssertJsonIs("[false,true]"); } - /* - TEST_METHOD(AddOneEmptyNestedArray) { - JsonArray<0> nestedArray; + JsonArray<1> nestedArray; arr.add(nestedArray); AssertJsonIs("[[]]"); } - */ void AssertJsonIs(const char* expected) { char buffer[256]; diff --git a/JsonGeneratorTests/JsonObjectBase.h b/JsonGeneratorTests/JsonObjectBase.h index 23b0ad43..2908f0c6 100644 --- a/JsonGeneratorTests/JsonObjectBase.h +++ b/JsonGeneratorTests/JsonObjectBase.h @@ -21,13 +21,15 @@ protected: JSON_STRING, JSON_NUMBER, JSON_BOOLEAN, + JSON_OBJECT, }; union JsonObjectValue { - const char* string; - double number; - bool boolean; + const char* string; + double number; + bool boolean; + JsonObjectBase* object; }; struct JsonObject @@ -36,7 +38,7 @@ protected: JsonObjectValue value; }; - void writeObjectTo(const JsonObject& obj, StringBuilder& sb) + void writeObjectTo(JsonObject& obj, StringBuilder& sb) { switch (obj.type) { @@ -54,6 +56,13 @@ protected: case JSON_BOOLEAN: sb.append(obj.value.boolean ? "true" : "false"); break; + + case JSON_OBJECT: + if (obj.value.object) + obj.value.object->writeTo(sb); + else + sb.append("null"); + break; } } };