Test JsonArray serialization

This commit is contained in:
Benoit Blanchon
2014-10-05 15:23:52 +02:00
parent 6330ab1271
commit 31c9ea9b28
3 changed files with 36 additions and 19 deletions

View File

@ -11,6 +11,9 @@ size_t JsonNodeSerializer::serialize(const JsonNode* node)
switch (node->type) switch (node->type)
{ {
case JSON_ARRAY:
return serializeArray(node);
case JSON_OBJECT: case JSON_OBJECT:
return serializeObject(node); return serializeObject(node);
@ -35,6 +38,29 @@ size_t JsonNodeSerializer::serialize(const JsonNode* node)
return 0; return 0;
} }
size_t JsonNodeSerializer::serializeArray(JsonNode const* node)
{
size_t n = 0;
n += _sink.write('[');
JsonNode* firstChild = node->content.asContainer.child;
for (JsonNode* child = firstChild; child; child = child->next)
{
n += serialize(child);
if (child->next)
{
n += _sink.write(',');
}
}
n += _sink.write(']');
return n;
}
size_t JsonNodeSerializer::serializeObject(const JsonNode* node) size_t JsonNodeSerializer::serializeObject(const JsonNode* node)
{ {
size_t n = 0; size_t n = 0;

View File

@ -16,6 +16,7 @@ public:
private: private:
Print& _sink; Print& _sink;
size_t serializeArray(const JsonNode* node);
size_t serializeObject(const JsonNode* node); size_t serializeObject(const JsonNode* node);
size_t serializeKeyValue(const JsonNode* node); size_t serializeKeyValue(const JsonNode* node);
}; };

View File

@ -8,9 +8,12 @@
#include <JsonObject.h> #include <JsonObject.h>
#include <StaticJsonBuffer.h> #include <StaticJsonBuffer.h>
class JsonArray_Serialization_Tests : testing::Test class JsonArray_Serialization_Tests : public testing::Test
{ {
protected: protected:
JsonArray array;
StaticJsonBuffer<3> json;
virtual void SetUp() virtual void SetUp()
{ {
array = json.createArray(); array = json.createArray();
@ -24,11 +27,9 @@ protected:
} }
private: private:
JsonArray array;
char buffer[256]; char buffer[256];
StaticJsonBuffer<32> json;
}; };
/*
TEST_F(JsonArray_Serialization_Tests, Empty) TEST_F(JsonArray_Serialization_Tests, Empty)
{ {
outputMustBe("[]"); outputMustBe("[]");
@ -73,7 +74,7 @@ TEST_F(JsonArray_Serialization_Tests, OneDoubleDefaultDigits)
TEST_F(JsonArray_Serialization_Tests, OneDoubleFourDigits) TEST_F(JsonArray_Serialization_Tests, OneDoubleFourDigits)
{ {
array.add<4>(3.14159265358979323846); array.add(3.14159265358979323846, 4);
outputMustBe("[3.1416]"); outputMustBe("[3.1416]");
} }
@ -134,7 +135,7 @@ TEST_F(JsonArray_Serialization_Tests, OneBooleanOverCapacity)
TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedArray) TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedArray)
{ {
JsonArray<1> nestedArray; JsonArray nestedArray = json.createArray();
array.add(nestedArray); array.add(nestedArray);
@ -143,20 +144,9 @@ TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedArray)
TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedHash) TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedHash)
{ {
JsonObject<1> nestedObject; JsonObject nestedObject = json.createObject();
array.add(nestedObject); array.add(nestedObject);
outputMustBe("[{}]"); outputMustBe("[{}]");
} }
TEST_F(JsonArray_Serialization_Tests, OneNestedArrayWithOneInteger)
{
JsonArray<1> nestedArray;
nestedArray.add(1);
array.add(nestedArray);
outputMustBe("[[1]]");
}
*/