Test that JsonArray can contain inner arrays

This commit is contained in:
Benoit Blanchon
2014-10-05 15:13:00 +02:00
parent 305944e907
commit bbe034222c
6 changed files with 28 additions and 6 deletions

View File

@ -47,4 +47,13 @@ void JsonArray::add(long value)
node->content.asInteger = value;
addChild(node);
}
void JsonArray::add(JsonContainer& innerContainer)
{
JsonNode* node = createNode(JSON_PROXY);
if (!node) return;
node->content.asProxy.target = innerContainer._node;
addChild(node);
}

View File

@ -21,5 +21,6 @@ public:
void add(double value, int decimals=2);
void add(int value) { add((long) value); }
void add(long value);
void add(JsonContainer& innerContainer);
};

View File

@ -6,10 +6,12 @@
struct JsonNode;
class JsonValue;
class JsonArray;
class JsonContainer : public Printable
{
friend JsonValue;
friend JsonArray;
public:
JsonContainer()

View File

@ -1,6 +1,7 @@
#include "JsonObject.h"
#include "JsonValue.h"
#include "JsonArray.h"
#include "JsonObject.h"
#include "Internals/JsonNode.h"
void JsonValue::operator=(bool value)
@ -40,7 +41,7 @@ void JsonValue::operator=(int value)
_node->content.asInteger = value;
}
void JsonValue::operator=(const JsonObject& object)
void JsonValue::operator=(const JsonContainer& object)
{
setAsProxyTo(object._node);
}
@ -72,6 +73,7 @@ void JsonValue::operator=(JsonValue const& value)
case JSON_ARRAY:
case JSON_PROXY:
setAsProxyTo(value._node);
break;
default:
*_node = *value._node;
@ -115,6 +117,11 @@ JsonValue::operator int() const
return node->content.asInteger;
}
JsonValue::operator JsonArray() const
{
return JsonArray(getActualNode());
}
JsonValue::operator JsonObject() const
{
return JsonObject(getActualNode());

View File

@ -1,5 +1,7 @@
#pragma once
class JsonArray;
class JsonContainer;
class JsonObject;
struct JsonNode;
@ -21,13 +23,14 @@ public:
void operator=(const char*);
void operator=(double);
void operator=(int);
void operator=(const JsonObject&);
void operator=(const JsonContainer&);
void operator=(const JsonValue&);
operator bool() const;
operator const char*() const;
operator double() const;
operator int() const;
operator JsonArray() const;
operator JsonObject() const;
void set(double value, int decimals);

View File

@ -63,7 +63,7 @@ TEST_F(JsonArray_Container_Tests, CanStoreStrings)
EXPECT_STREQ("h3110", (const char*) array[0]);
EXPECT_STREQ("w0r1d", (const char*) array[1]);
}
/*
TEST_F(JsonArray_Container_Tests, CanStoreInnerArrays)
{
JsonArray innerarray1 = json.createArray();
@ -74,4 +74,4 @@ TEST_F(JsonArray_Container_Tests, CanStoreInnerArrays)
EXPECT_EQ(innerarray1, (JsonArray) array[0]);
EXPECT_EQ(innerarray2, (JsonArray) array[1]);
}*/
}