Files
ArduinoJson/test/JsonParser_Array_Tests.cpp

167 lines
3.1 KiB
C++
Raw Normal View History

2014-10-14 17:16:21 +02:00
#include <gtest/gtest.h>
#include <ArduinoJson/StaticJsonBuffer.hpp>
#include <ArduinoJson/JsonValue.hpp>
2014-10-14 17:16:21 +02:00
2014-10-18 23:05:54 +02:00
using namespace ArduinoJson;
2014-10-16 21:43:44 +02:00
class JsonParser_Array_Tests : public testing::Test
2014-10-14 17:16:21 +02:00
{
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-15 23:39:25 +02:00
void elementAtIndexMustBe(int index, const char* expected)
{
EXPECT_STREQ(expected, static_cast<const char*>(_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
};
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, EmptyArray)
2014-10-14 17:16:21 +02:00
{
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-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, ArrayWithNoEnd)
{
2014-10-15 13:48:26 +02:00
whenInputIs("[");
2014-10-15 13:48:26 +02:00
parseMustFail();
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, EmptyArrayWithLeadingSpaces)
2014-10-14 18:01:49 +02:00
{
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-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, Garbage)
2014-10-14 17:28:57 +02:00
{
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
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, OneInteger)
2014-10-14 21:24:26 +02:00
{
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
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, OneIntegerWithSpacesBefore)
2014-10-14 21:49:56 +02:00
{
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
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, OneIntegerWithSpaceAfter)
2014-10-14 21:49:56 +02:00
{
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
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, TwoIntegers)
2014-10-14 21:48:22 +02:00
{
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-15 14:54:31 +02:00
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, TwoDoubles)
2014-10-15 14:54:31 +02:00
{
2014-10-15 23:10:52 +02:00
whenInputIs("[4.2,8.4]");
2014-10-15 14:54:31 +02:00
parseMustSucceed();
2014-10-15 23:10:52 +02:00
sizeMustBe(2);
2014-10-15 14:54:31 +02:00
firstElementMustBe(4.2);
2014-10-15 23:10:52 +02:00
secondElementMustBe(8.4);
2014-10-15 14:54:31 +02:00
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, TwoBooleans)
2014-10-15 14:54:31 +02:00
{
2014-10-15 23:10:52 +02:00
whenInputIs("[true,false]");
2014-10-15 14:54:31 +02:00
parseMustSucceed();
sizeMustBe(2);
2014-10-15 23:10:52 +02:00
firstElementMustBe(true);
secondElementMustBe(false);
2014-10-15 23:27:38 +02:00
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, TwoNulls)
2014-10-15 23:27:38 +02:00
{
const char* const nullCharPtr = 0;
whenInputIs("[null,null]");
parseMustSucceed();
sizeMustBe(2);
firstElementMustBe(nullCharPtr);
secondElementMustBe(nullCharPtr);
2014-10-15 23:39:25 +02:00
}
2014-10-16 21:43:44 +02:00
TEST_F(JsonParser_Array_Tests, TwoStrings)
2014-10-15 23:39:25 +02:00
{
whenInputIs("[\"hello\",\"world\"]");
parseMustSucceed();
sizeMustBe(2);
firstElementMustBe("hello");
secondElementMustBe("world");
2014-10-14 17:16:21 +02:00
}