| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #include <gtest/gtest.h>
- #include <ArduinoJson/StaticJsonBuffer.h>
- #include <ArduinoJson/JsonValue.h>
- class JsonParser_Array_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(JsonParser_Array_Tests, EmptyArray)
- {
- whenInputIs("[]");
- parseMustSucceed();
- sizeMustBe(0);
- }
- TEST_F(JsonParser_Array_Tests, ArrayWithNoEnd)
- {
- whenInputIs("[");
- parseMustFail();
- }
- TEST_F(JsonParser_Array_Tests, EmptyArrayWithLeadingSpaces)
- {
- whenInputIs(" []");
- parseMustSucceed();
- sizeMustBe(0);
- }
- TEST_F(JsonParser_Array_Tests, Garbage)
- {
- whenInputIs("%*$£¤");
- parseMustFail();
- }
- TEST_F(JsonParser_Array_Tests, OneInteger)
- {
- whenInputIs("[42]");
- parseMustSucceed();
- sizeMustBe(1);
- firstElementMustBe(42);
- }
- TEST_F(JsonParser_Array_Tests, OneIntegerWithSpacesBefore)
- {
- whenInputIs("[ \t\r\n42]");
- parseMustSucceed();
- sizeMustBe(1);
- firstElementMustBe(42);
- }
- TEST_F(JsonParser_Array_Tests, OneIntegerWithSpaceAfter)
- {
- whenInputIs("[42 \t\r\n]");
- parseMustSucceed();
- sizeMustBe(1);
- firstElementMustBe(42);
- }
- TEST_F(JsonParser_Array_Tests, TwoIntegers)
- {
- whenInputIs("[42,84]");
- parseMustSucceed();
- sizeMustBe(2);
- firstElementMustBe(42);
- secondElementMustBe(84);
- }
- TEST_F(JsonParser_Array_Tests, TwoDoubles)
- {
- whenInputIs("[4.2,8.4]");
- parseMustSucceed();
- sizeMustBe(2);
- firstElementMustBe(4.2);
- secondElementMustBe(8.4);
- }
- TEST_F(JsonParser_Array_Tests, TwoBooleans)
- {
- whenInputIs("[true,false]");
- parseMustSucceed();
- sizeMustBe(2);
- firstElementMustBe(true);
- secondElementMustBe(false);
- }
- TEST_F(JsonParser_Array_Tests, TwoNulls)
- {
- const char* const nullCharPtr = 0;
- whenInputIs("[null,null]");
- parseMustSucceed();
- sizeMustBe(2);
- firstElementMustBe(nullCharPtr);
- secondElementMustBe(nullCharPtr);
- }
- TEST_F(JsonParser_Array_Tests, TwoStrings)
- {
- whenInputIs("[\"hello\",\"world\"]");
- parseMustSucceed();
- sizeMustBe(2);
- firstElementMustBe("hello");
- secondElementMustBe("world");
- }
|