From 31c9ea9b28788f9c9092a5d7226b7a8b2f10921c Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sun, 5 Oct 2014 15:23:52 +0200 Subject: [PATCH] Test JsonArray serialization --- srcs/Internals/JsonNodeSerializer.cpp | 26 +++++++++++++++++++++++ srcs/Internals/JsonNodeSerializer.h | 1 + tests/JsonArray_Serialization_Tests.cpp | 28 ++++++++----------------- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/srcs/Internals/JsonNodeSerializer.cpp b/srcs/Internals/JsonNodeSerializer.cpp index 5b44385b..effb5979 100644 --- a/srcs/Internals/JsonNodeSerializer.cpp +++ b/srcs/Internals/JsonNodeSerializer.cpp @@ -11,6 +11,9 @@ size_t JsonNodeSerializer::serialize(const JsonNode* node) switch (node->type) { + case JSON_ARRAY: + return serializeArray(node); + case JSON_OBJECT: return serializeObject(node); @@ -35,6 +38,29 @@ size_t JsonNodeSerializer::serialize(const JsonNode* node) 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 n = 0; diff --git a/srcs/Internals/JsonNodeSerializer.h b/srcs/Internals/JsonNodeSerializer.h index 5a541776..ef1309e1 100644 --- a/srcs/Internals/JsonNodeSerializer.h +++ b/srcs/Internals/JsonNodeSerializer.h @@ -16,6 +16,7 @@ public: private: Print& _sink; + size_t serializeArray(const JsonNode* node); size_t serializeObject(const JsonNode* node); size_t serializeKeyValue(const JsonNode* node); }; diff --git a/tests/JsonArray_Serialization_Tests.cpp b/tests/JsonArray_Serialization_Tests.cpp index 4a14b1da..13c0f4c3 100644 --- a/tests/JsonArray_Serialization_Tests.cpp +++ b/tests/JsonArray_Serialization_Tests.cpp @@ -8,9 +8,12 @@ #include #include -class JsonArray_Serialization_Tests : testing::Test +class JsonArray_Serialization_Tests : public testing::Test { protected: + JsonArray array; + StaticJsonBuffer<3> json; + virtual void SetUp() { array = json.createArray(); @@ -24,11 +27,9 @@ protected: } private: - JsonArray array; char buffer[256]; - StaticJsonBuffer<32> json; }; -/* + TEST_F(JsonArray_Serialization_Tests, Empty) { outputMustBe("[]"); @@ -73,7 +74,7 @@ TEST_F(JsonArray_Serialization_Tests, OneDoubleDefaultDigits) TEST_F(JsonArray_Serialization_Tests, OneDoubleFourDigits) { - array.add<4>(3.14159265358979323846); + array.add(3.14159265358979323846, 4); outputMustBe("[3.1416]"); } @@ -134,7 +135,7 @@ TEST_F(JsonArray_Serialization_Tests, OneBooleanOverCapacity) TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedArray) { - JsonArray<1> nestedArray; + JsonArray nestedArray = json.createArray(); array.add(nestedArray); @@ -143,20 +144,9 @@ TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedArray) TEST_F(JsonArray_Serialization_Tests, OneEmptyNestedHash) { - JsonObject<1> nestedObject; + JsonObject nestedObject = json.createObject(); array.add(nestedObject); outputMustBe("[{}]"); -} - -TEST_F(JsonArray_Serialization_Tests, OneNestedArrayWithOneInteger) -{ - JsonArray<1> nestedArray; - nestedArray.add(1); - - array.add(nestedArray); - - outputMustBe("[[1]]"); -} -*/ \ No newline at end of file +} \ No newline at end of file