Files
ArduinoJson/tests/JsonArray_Parser_Tests.cpp

118 lines
2.1 KiB
C++
Raw Normal View History

2014-10-14 17:16:21 +02:00
#include <gtest/gtest.h>
#include <StaticJsonBuffer.h>
2014-10-14 21:24:26 +02:00
#include <JsonValue.h>
2014-10-14 17:16:21 +02:00
class JsonArray_Parser_Tests : public testing::Test
{
protected:
2014-10-15 13:48:26 +02:00
void whenInputIs(const char *json)
2014-10-14 21:57:34 +02:00
{
strcpy(_jsonString, json);
_array = _jsonBuffer.parseArray(_jsonString);
}
2014-10-15 13:48:26 +02:00
void parseMustSucceed()
{
EXPECT_TRUE(_array.success());
}
void parseMustFail()
{
EXPECT_FALSE(_array.success());
EXPECT_EQ(0, _array.size());
}
void sizeMustBe(int expected)
{
EXPECT_EQ(expected, _array.size());
}
template<typename T>
void firstElementMustBe(T expected)
{
elementAtIndexMustBe(0, expected);
}
template<typename T>
void secondElementMustBe(T expected)
{
elementAtIndexMustBe(1, expected);
}
template<typename T>
void elementAtIndexMustBe(int index, T expected)
{
EXPECT_EQ(expected, static_cast<T>(_array[index]));
}
2014-10-14 21:57:34 +02:00
StaticJsonBuffer<42> _jsonBuffer;
JsonArray _array;
char _jsonString[256];
2014-10-14 17:16:21 +02:00
};
TEST_F(JsonArray_Parser_Tests, EmptyArray)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[]");
2014-10-14 17:16:21 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(0);
2014-10-14 17:28:57 +02:00
}
TEST_F(JsonArray_Parser_Tests, ArrayWithNoEnd)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[");
2014-10-15 13:48:26 +02:00
parseMustFail();
}
2014-10-14 18:01:49 +02:00
TEST_F(JsonArray_Parser_Tests, EmptyArrayWithLeadingSpaces)
{
2014-10-15 13:48:26 +02:00
whenInputIs(" []");
2014-10-14 18:01:49 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(0);
2014-10-14 18:01:49 +02:00
}
2014-10-14 17:28:57 +02:00
TEST_F(JsonArray_Parser_Tests, Garbage)
{
2014-10-15 13:48:26 +02:00
whenInputIs("%*$£¤");
2014-10-14 17:28:57 +02:00
2014-10-15 13:48:26 +02:00
parseMustFail();
2014-10-14 21:24:26 +02:00
}
TEST_F(JsonArray_Parser_Tests, OneInteger)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[42]");
2014-10-14 21:24:26 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(1);
firstElementMustBe(42);
2014-10-14 21:49:56 +02:00
}
TEST_F(JsonArray_Parser_Tests, OneIntegerWithSpacesBefore)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[ \t\r\n42]");
2014-10-14 21:49:56 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(1);
firstElementMustBe(42);
2014-10-14 21:49:56 +02:00
}
TEST_F(JsonArray_Parser_Tests, OneIntegerWithSpaceAfter)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[42 \t\r\n]");
2014-10-14 21:49:56 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(1);
firstElementMustBe(42);
2014-10-14 21:48:22 +02:00
}
TEST_F(JsonArray_Parser_Tests, TwoIntegers)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[42,84]");
2014-10-14 21:48:22 +02:00
2014-10-15 13:48:26 +02:00
parseMustSucceed();
sizeMustBe(2);
firstElementMustBe(42);
secondElementMustBe(84);
2014-10-14 17:16:21 +02:00
}