From 64b4e15ce6b3257b9addc01787b1e62d6f345459 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Wed, 5 Nov 2014 13:10:22 +0100 Subject: [PATCH] Added tests of JsonObject::const_iterator --- .../Internals/NodeConstIterator.hpp | 2 +- .../ArduinoJson/Internals/NodeIterator.hpp | 2 +- test/JsonObject_Iterator_Tests.cpp | 52 ++++++++++++++----- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/include/ArduinoJson/Internals/NodeConstIterator.hpp b/include/ArduinoJson/Internals/NodeConstIterator.hpp index 4dd9ac1a..6393ddfb 100644 --- a/include/ArduinoJson/Internals/NodeConstIterator.hpp +++ b/include/ArduinoJson/Internals/NodeConstIterator.hpp @@ -12,7 +12,7 @@ namespace Internals { template class NodeConstIterator { public: - explicit NodeConstIterator(const Node *node) : _node(node) {} + explicit NodeConstIterator(const Node *node = NULL) : _node(node) {} const T &operator*() const { return _node->content; } const T *operator->() { return &_node->content; } diff --git a/include/ArduinoJson/Internals/NodeIterator.hpp b/include/ArduinoJson/Internals/NodeIterator.hpp index 100962e6..22d8bb4b 100644 --- a/include/ArduinoJson/Internals/NodeIterator.hpp +++ b/include/ArduinoJson/Internals/NodeIterator.hpp @@ -14,7 +14,7 @@ namespace Internals { template class NodeIterator { public: - explicit NodeIterator(Node *node) : _node(node) {} + explicit NodeIterator(Node *node = NULL) : _node(node) {} T &operator*() const { return _node->content; } T *operator->() { return &_node->content; } diff --git a/test/JsonObject_Iterator_Tests.cpp b/test/JsonObject_Iterator_Tests.cpp index 9d570450..74e42286 100644 --- a/test/JsonObject_Iterator_Tests.cpp +++ b/test/JsonObject_Iterator_Tests.cpp @@ -7,26 +7,54 @@ #include #include #include +#include "Printers.hpp" using namespace ArduinoJson; -TEST(JsonObject_Iterator_Test, SimpleTest) { - StaticJsonBuffer<256> jsonBuffer; +class JsonObject_Iterator_Test : public testing::Test { + public: + JsonObject_Iterator_Test() : object(_buffer.createObject()) { + object["ab"] = 12; + object["cd"] = 34; + } - JsonObject &object = jsonBuffer.createObject(); - object["ab"] = 12; - object["cd"] = 34; + protected: + StaticJsonBuffer<256> _buffer; + JsonObject& object; +}; +TEST_F(JsonObject_Iterator_Test, NonConstIterator) { JsonObject::iterator it = object.begin(); - JsonObject::iterator end = object.end(); - - ASSERT_NE(end, it); + ASSERT_NE(object.end(), it); EXPECT_STREQ("ab", it->key); - EXPECT_EQ(12, it->value.as()); + EXPECT_EQ(12, it->value); + it->key = "a.b"; + it->value = 1.2; ++it; - ASSERT_NE(end, it); + ASSERT_NE(object.end(), it); EXPECT_STREQ("cd", it->key); - EXPECT_EQ(34, it->value.as()); + EXPECT_EQ(34, it->value); + it->key = "c.d"; + it->value = 3.4; ++it; - EXPECT_EQ(object.end(), it); + ASSERT_EQ(object.end(), it); + + ASSERT_EQ(2, object.size()); + EXPECT_EQ(1.2, object["a.b"]); + EXPECT_EQ(3.4, object["c.d"]); +} + +TEST_F(JsonObject_Iterator_Test, ConstIterator) { + const JsonObject& const_object = object; + JsonObject::const_iterator it = const_object.begin(); + + ASSERT_NE(const_object.end(), it); + EXPECT_STREQ("ab", it->key); + EXPECT_EQ(12, it->value); + ++it; + ASSERT_NE(const_object.end(), it); + EXPECT_STREQ("cd", it->key); + EXPECT_EQ(34, it->value); + ++it; + ASSERT_EQ(const_object.end(), it); }