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
|
|
|
}
|
|
|
|
|
2014-10-14 21:35:47 +02:00
|
|
|
TEST_F(JsonArray_Parser_Tests, ArrayWithNoEnd)
|
|
|
|
{
|
2014-10-15 13:48:26 +02:00
|
|
|
whenInputIs("[");
|
2014-10-14 21:35:47 +02:00
|
|
|
|
2014-10-15 13:48:26 +02:00
|
|
|
parseMustFail();
|
2014-10-14 21:35:47 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
}
|