From a5dbb397ca94f54e5cf3b88e5d9d0cc3bbbf5a74 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 31 Oct 2014 11:38:58 +0100 Subject: [PATCH] Fixed failing test with clang --- include/ArduinoJson/StaticJsonBuffer.hpp | 12 +++---- test/StaticJsonBufferTests.cpp | 45 ++++++++++++------------ 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/include/ArduinoJson/StaticJsonBuffer.hpp b/include/ArduinoJson/StaticJsonBuffer.hpp index 5df85b7c..8d72229b 100644 --- a/include/ArduinoJson/StaticJsonBuffer.hpp +++ b/include/ArduinoJson/StaticJsonBuffer.hpp @@ -10,17 +10,15 @@ #include "JsonBuffer.hpp" namespace ArduinoJson { -template + +template class StaticJsonBuffer : public JsonBuffer { public: explicit StaticJsonBuffer() : _size(0) {} - virtual ~StaticJsonBuffer() {} - int capacity() const { return CAPACITY; } - - int size() const { return _size; } - + size_t capacity() const { return CAPACITY; } + size_t size() const { return _size; } void clear() { _size = 0; } protected: @@ -33,6 +31,6 @@ class StaticJsonBuffer : public JsonBuffer { private: char _buffer[CAPACITY]; - int _size; + size_t _size; }; } diff --git a/test/StaticJsonBufferTests.cpp b/test/StaticJsonBufferTests.cpp index b7d7018c..2826f3c4 100644 --- a/test/StaticJsonBufferTests.cpp +++ b/test/StaticJsonBufferTests.cpp @@ -11,68 +11,69 @@ using namespace ArduinoJson; +const size_t SIZEOF_ONE_OBJECT = JSON_OBJECT_SIZE(0); +const size_t SIZEOF_TWO_OBJECTS = 2 * SIZEOF_ONE_OBJECT; +const size_t SIZEOF_OBJECT_WITH_ONE_VALUE = JSON_OBJECT_SIZE(1); +const size_t SIZEOF_OBJECT_WITH_TWO_VALUES = JSON_OBJECT_SIZE(2); + TEST(StaticJsonBuffer, CapacityMatchTemplateParameter) { StaticJsonBuffer<42> json; + EXPECT_EQ(42, json.capacity()); } TEST(StaticJsonBuffer, InitialSizeIsZero) { StaticJsonBuffer<42> json; + EXPECT_EQ(0, json.size()); } -TEST(StaticJsonBuffer, WhenCreateObjectIsCalled_ThenSizeIsIncreasedSizeOfJsonObject) { - StaticJsonBuffer<42> json; +TEST(StaticJsonBuffer, + WhenCreateObjectIsCalled_ThenSizeIsIncreasedSizeOfJsonObject) { + StaticJsonBuffer json; json.createObject(); - EXPECT_EQ(sizeof(JsonObject), json.size()); - json.createObject(); - EXPECT_EQ(sizeof(JsonObject)*2, json.size()); + EXPECT_EQ(SIZEOF_TWO_OBJECTS, json.size()); } TEST(StaticJsonBuffer, GivenBufferIsFull_WhenCreateObjectIsCalled_ThenSizeDoesNotChange) { - StaticJsonBuffer json; + StaticJsonBuffer json; json.createObject(); - EXPECT_EQ(sizeof(JsonObject), json.size()); - json.createObject(); - EXPECT_EQ(sizeof(JsonObject), json.size()); + EXPECT_EQ(SIZEOF_ONE_OBJECT, json.size()); } TEST(StaticJsonBuffer, WhenCreateObjectIsCalled_ThenAnEmptyJsonObjectIsReturned) { - StaticJsonBuffer<42> json; + StaticJsonBuffer json; JsonObject &obj = json.createObject(); + EXPECT_EQ(0, obj.size()); } TEST(StaticJsonBuffer, GivenAJsonObject_WhenValuesAreAdded_ThenSizeIsIncreasedAccordingly) { - StaticJsonBuffer<200> json; + StaticJsonBuffer json; + JsonObject &obj = json.createObject(); - obj["hello"]; - EXPECT_EQ(sizeof(JsonObject)+sizeof(Internals::JsonObjectNode), json.size()); - obj["world"]; - EXPECT_EQ(sizeof(JsonObject) + sizeof(Internals::JsonObjectNode)*2, json.size()); + + EXPECT_EQ(SIZEOF_OBJECT_WITH_TWO_VALUES, json.size()); } TEST( StaticJsonBuffer, GivenAJsonObject_WhenSameValuesAreAddedTwice_ThenSizeIsOnlyIncreasedByTwo) { - StaticJsonBuffer<42> json; + StaticJsonBuffer json; + JsonObject &obj = json.createObject(); - + obj["hello"]; obj["hello"]; - size_t sizeBefore = json.size(); - obj["hello"]; - size_t sizeAfter = json.size(); - - EXPECT_EQ(sizeBefore, sizeAfter); + EXPECT_EQ(SIZEOF_OBJECT_WITH_ONE_VALUE, json.size()); }