Преглед изворни кода

Added a test that adds a empty nested array in an array

Benoît Blanchon пре 11 година
родитељ
комит
b8df795cb5

+ 7 - 0
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);

+ 1 - 4
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];

+ 13 - 4
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;
         }
     }
 };