Files
ArduinoJson/tests/JsonArray_Container_Tests.cpp

147 lines
3.2 KiB
C++
Raw Normal View History

2014-10-05 14:40:03 +02:00
#include <gtest/gtest.h>
#include <StaticJsonBuffer.h>
#include <JsonValue.h>
class JsonArray_Container_Tests : public ::testing::Test
{
protected:
virtual void SetUp()
{
array = json.createArray();
}
void nodeCountMustBe(int expected)
{
EXPECT_EQ(expected, json.size());
}
template<typename T>
void firstElementMustBe(T expected)
{
elementAtIndexMustBe(0, expected);
}
template<typename T>
void secondElementMustBe(T expected)
{
elementAtIndexMustBe(1, expected);
}
void sizeMustBe(int expected)
{
EXPECT_EQ(expected, array.size());
}
2014-10-05 14:40:03 +02:00
StaticJsonBuffer<42> json;
JsonArray array;
private:
template<typename T>
void elementAtIndexMustBe(int index, T expected)
{
EXPECT_EQ(expected, static_cast<T>(array[index]));
}
2014-10-05 14:40:03 +02:00
};
TEST_F(JsonArray_Container_Tests, InitialSizeIsZero)
{
sizeMustBe(0);
nodeCountMustBe(1);
2014-10-05 14:40:03 +02:00
}
2014-10-05 14:40:03 +02:00
TEST_F(JsonArray_Container_Tests, Grow_WhenValuesAreAdded)
{
2014-10-05 14:40:03 +02:00
array.add("hello");
sizeMustBe(1);
nodeCountMustBe(2);
2014-10-05 14:40:03 +02:00
array.add("world");
sizeMustBe(2);
nodeCountMustBe(3);
2014-10-05 14:40:03 +02:00
}
2014-10-05 14:55:14 +02:00
2014-10-05 14:40:03 +02:00
TEST_F(JsonArray_Container_Tests, CanStoreIntegers)
{
array.add(123);
array.add(456);
firstElementMustBe(123);
secondElementMustBe(456);
nodeCountMustBe(3);
2014-10-05 14:40:03 +02:00
}
2014-10-05 14:40:03 +02:00
TEST_F(JsonArray_Container_Tests, CanStoreDoubles)
{
array.add(123.45);
array.add(456.78);
firstElementMustBe(123.45);
secondElementMustBe(456.78);
nodeCountMustBe(3);
2014-10-05 14:40:03 +02:00
}
2014-10-05 15:04:17 +02:00
2014-10-05 14:40:03 +02:00
TEST_F(JsonArray_Container_Tests, CanStoreBooleans)
{
array.add(true);
array.add(false);
firstElementMustBe(true);
secondElementMustBe(false);
nodeCountMustBe(3);
2014-10-05 14:40:03 +02:00
}
2014-10-05 15:04:44 +02:00
2014-10-05 14:40:03 +02:00
TEST_F(JsonArray_Container_Tests, CanStoreStrings)
{
array.add("h3110");
array.add("w0r1d");
firstElementMustBe("h3110");
secondElementMustBe("w0r1d");
nodeCountMustBe(3);
2014-10-05 14:40:03 +02:00
}
TEST_F(JsonArray_Container_Tests, CanStoreNestedArrays)
2014-10-05 14:40:03 +02:00
{
JsonArray innerarray1 = json.createArray();
JsonArray innerarray2 = json.createArray();
array.add(innerarray1);
array.add(innerarray2);
firstElementMustBe(innerarray1);
secondElementMustBe(innerarray1);
nodeCountMustBe(1 + 3 + 3);
}
TEST_F(JsonArray_Container_Tests, CanStoreNestedObjects)
{
JsonObject innerObject1 = json.createObject();
JsonObject innerObject2 = json.createObject();
array.add(innerObject1);
array.add(innerObject2);
firstElementMustBe(innerObject1);
secondElementMustBe(innerObject2);
nodeCountMustBe(1 + 3 + 3);
}
TEST_F(JsonArray_Container_Tests, CanCreateNestedArrays)
{
JsonArray innerarray1 = array.createNestedArray();
JsonArray innerarray2 = array.createNestedArray();
firstElementMustBe(innerarray1);
secondElementMustBe(innerarray1);
nodeCountMustBe(1 + 1 + 1);
}
TEST_F(JsonArray_Container_Tests, CanCreateNestedObjects)
{
JsonObject innerObject1 = json.createObject();
JsonObject innerObject2 = json.createObject();
firstElementMustBe(innerObject1);
secondElementMustBe(innerObject2);
nodeCountMustBe(3);
}