mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-15 03:26:39 +02:00
Renamed tests/ into test/
This commit is contained in:
165
test/JsonArray_Parser_Tests.cpp
Normal file
165
test/JsonArray_Parser_Tests.cpp
Normal file
@ -0,0 +1,165 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <ArduinoJson/StaticJsonBuffer.h>
|
||||
#include <ArduinoJson/JsonValue.h>
|
||||
|
||||
class JsonArray_Parser_Tests : public testing::Test
|
||||
{
|
||||
protected:
|
||||
void whenInputIs(const char *json)
|
||||
{
|
||||
strcpy(_jsonString, json);
|
||||
_array = _jsonBuffer.parseArray(_jsonString);
|
||||
}
|
||||
|
||||
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]));
|
||||
}
|
||||
|
||||
void elementAtIndexMustBe(int index, const char* expected)
|
||||
{
|
||||
EXPECT_STREQ(expected, static_cast<const char*>(_array[index]));
|
||||
}
|
||||
|
||||
StaticJsonBuffer<42> _jsonBuffer;
|
||||
JsonArray _array;
|
||||
char _jsonString[256];
|
||||
};
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, EmptyArray)
|
||||
{
|
||||
whenInputIs("[]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(0);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, ArrayWithNoEnd)
|
||||
{
|
||||
whenInputIs("[");
|
||||
|
||||
parseMustFail();
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, EmptyArrayWithLeadingSpaces)
|
||||
{
|
||||
whenInputIs(" []");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(0);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, Garbage)
|
||||
{
|
||||
whenInputIs("%*$£¤");
|
||||
|
||||
parseMustFail();
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, OneInteger)
|
||||
{
|
||||
whenInputIs("[42]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(1);
|
||||
firstElementMustBe(42);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, OneIntegerWithSpacesBefore)
|
||||
{
|
||||
whenInputIs("[ \t\r\n42]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(1);
|
||||
firstElementMustBe(42);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, OneIntegerWithSpaceAfter)
|
||||
{
|
||||
whenInputIs("[42 \t\r\n]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(1);
|
||||
firstElementMustBe(42);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, TwoIntegers)
|
||||
{
|
||||
whenInputIs("[42,84]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe(42);
|
||||
secondElementMustBe(84);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, TwoDoubles)
|
||||
{
|
||||
whenInputIs("[4.2,8.4]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe(4.2);
|
||||
secondElementMustBe(8.4);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, TwoBooleans)
|
||||
{
|
||||
whenInputIs("[true,false]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe(true);
|
||||
secondElementMustBe(false);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, TwoNulls)
|
||||
{
|
||||
const char* const nullCharPtr = 0;
|
||||
|
||||
whenInputIs("[null,null]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe(nullCharPtr);
|
||||
secondElementMustBe(nullCharPtr);
|
||||
}
|
||||
|
||||
TEST_F(JsonArray_Parser_Tests, TwoStrings)
|
||||
{
|
||||
whenInputIs("[\"hello\",\"world\"]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe("hello");
|
||||
secondElementMustBe("world");
|
||||
}
|
Reference in New Issue
Block a user