forked from bblanchon/ArduinoJson
Tests: use sections for filters tests
This commit is contained in:
@ -16,6 +16,7 @@ using ArduinoJson::detail::sizeofObject;
|
||||
|
||||
TEST_CASE("Filtering") {
|
||||
struct TestCase {
|
||||
const char* description;
|
||||
const char* input;
|
||||
const char* filter;
|
||||
uint8_t nestingLimit;
|
||||
@ -26,14 +27,16 @@ TEST_CASE("Filtering") {
|
||||
|
||||
TestCase testCases[] = {
|
||||
{
|
||||
"{\"hello\":\"world\"}", // 1. input
|
||||
"null", // 2. filter
|
||||
10, // 3. nestingLimit
|
||||
DeserializationError::Ok, // 4. error
|
||||
"null", // 5. output
|
||||
0, // 6. memoryUsage
|
||||
"Input is object, filter is null", // description
|
||||
"{\"hello\":\"world\"}", // input
|
||||
"null", // filter
|
||||
10, // nestingLimit
|
||||
DeserializationError::Ok, // error
|
||||
"null", // output
|
||||
0, // memoryUsage
|
||||
},
|
||||
{
|
||||
"Input is object, filter is false",
|
||||
"{\"hello\":\"world\"}",
|
||||
"false",
|
||||
10,
|
||||
@ -42,6 +45,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
"Input is object, filter is true",
|
||||
"{\"abcdefg\":\"hijklmn\"}",
|
||||
"true",
|
||||
10,
|
||||
@ -50,6 +54,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("abcdefg") + sizeofString("hijklmn"),
|
||||
},
|
||||
{
|
||||
"Input is object, filter is empty object",
|
||||
"{\"hello\":\"world\"}",
|
||||
"{}",
|
||||
10,
|
||||
@ -58,7 +63,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// Input in an object, but filter wants an array
|
||||
"Input in an object, but filter wants an array",
|
||||
"{\"hello\":\"world\"}",
|
||||
"[]",
|
||||
10,
|
||||
@ -67,7 +72,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// Member is a string, but filter wants an array
|
||||
"Member is a string, but filter wants an array",
|
||||
"{\"example\":\"example\"}",
|
||||
"{\"example\":[true]}",
|
||||
10,
|
||||
@ -76,7 +81,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// Member is a number, but filter wants an array
|
||||
"Member is a number, but filter wants an array",
|
||||
"{\"example\":42}",
|
||||
"{\"example\":[true]}",
|
||||
10,
|
||||
@ -85,7 +90,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// Input is an array, but filter wants an object
|
||||
"Input is an array, but filter wants an object",
|
||||
"[\"hello\",\"world\"]",
|
||||
"{}",
|
||||
10,
|
||||
@ -94,7 +99,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// Input is a bool, but filter wants an object
|
||||
"Input is a bool, but filter wants an object",
|
||||
"true",
|
||||
"{}",
|
||||
10,
|
||||
@ -103,7 +108,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// Input is a string, but filter wants an object
|
||||
"Input is a string, but filter wants an object",
|
||||
"\"hello\"",
|
||||
"{}",
|
||||
10,
|
||||
@ -112,7 +117,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// skip an integer
|
||||
"Skip an integer",
|
||||
"{\"an_integer\":666,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -121,7 +126,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// skip a float
|
||||
"Skip a float",
|
||||
"{\"a_float\":12.34e-6,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -130,7 +135,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// skip false
|
||||
"Skip false",
|
||||
"{\"a_bool\":false,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -139,7 +144,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// skip true
|
||||
"Skip true",
|
||||
"{\"a_bool\":true,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -148,7 +153,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// skip null
|
||||
"Skip null",
|
||||
"{\"a_bool\":null,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -157,7 +162,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip a double-quoted string
|
||||
"Skip a double-quoted string",
|
||||
"{\"a_double_quoted_string\":\"hello\",example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -166,7 +171,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip a single-quoted string
|
||||
"Skip a single-quoted string",
|
||||
"{\"a_single_quoted_string\":'hello',example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -175,7 +180,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an empty array
|
||||
"Skip an empty array",
|
||||
"{\"an_empty_array\":[],example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -184,7 +189,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an empty array with spaces in it
|
||||
"Skip an empty array with spaces in it",
|
||||
"{\"an_empty_array\":[\t],example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -193,7 +198,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an array
|
||||
"Skip an array",
|
||||
"{\"an_array\":[1,2,3],example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -202,7 +207,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an array with spaces in it
|
||||
"Skip an array with spaces in it",
|
||||
"{\"an_array\": [ 1 , 2 , 3 ] ,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -211,7 +216,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an empty object
|
||||
"Skip an empty nested object",
|
||||
"{\"an_empty_object\":{},example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -220,7 +225,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an empty object with spaces in it
|
||||
"Skip an empty nested object with spaces in it",
|
||||
"{\"an_empty_object\":{ },example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -229,7 +234,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// can skip an object
|
||||
"Skip a nested object",
|
||||
"{\"an_object\":{a:1,'b':2,\"c\":3},example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -238,7 +243,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// skip an object with spaces in it
|
||||
"Skip an object with spaces in it",
|
||||
"{\"an_object\" : { a : 1 , 'b' : 2 , \"c\" : 3 } ,example:42}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -247,6 +252,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
"Skip a string in a nested object",
|
||||
"{\"an_integer\": 0,\"example\":{\"type\":\"int\",\"outcome\":42}}",
|
||||
"{\"example\":{\"outcome\":true}}",
|
||||
10,
|
||||
@ -255,7 +261,7 @@ TEST_CASE("Filtering") {
|
||||
2 * sizeofObject(1) + 2 * sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// wildcard
|
||||
"wildcard",
|
||||
"{\"example\":{\"type\":\"int\",\"outcome\":42}}",
|
||||
"{\"*\":{\"outcome\":true}}",
|
||||
10,
|
||||
@ -264,7 +270,7 @@ TEST_CASE("Filtering") {
|
||||
2 * sizeofObject(1) + 2 * sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// exclusion filter (issue #1628)
|
||||
"exclusion filter (issue #1628)",
|
||||
"{\"example\":1,\"ignored\":2}",
|
||||
"{\"*\":true,\"ignored\":false}",
|
||||
10,
|
||||
@ -273,7 +279,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
// only the first element of array counts
|
||||
"only the first element of array counts",
|
||||
"[1,2,3]",
|
||||
"[true, false]",
|
||||
10,
|
||||
@ -282,7 +288,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(3),
|
||||
},
|
||||
{
|
||||
// only the first element of array counts
|
||||
"only the first element of array counts",
|
||||
"[1,2,3]",
|
||||
"[false, true]",
|
||||
10,
|
||||
@ -291,7 +297,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// filter members of object in array
|
||||
"filter members of object in array",
|
||||
"[{\"example\":1,\"ignore\":2},{\"example\":3,\"ignore\":4}]",
|
||||
"[{\"example\":true}]",
|
||||
10,
|
||||
@ -300,6 +306,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(2) + 2 * sizeofObject(1) + sizeofString("example"),
|
||||
},
|
||||
{
|
||||
"Unclosed single quote in skipped element",
|
||||
"[',2,3]",
|
||||
"[false,true]",
|
||||
10,
|
||||
@ -308,6 +315,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
"Unclosed double quote in skipped element",
|
||||
"[\",2,3]",
|
||||
"[false,true]",
|
||||
10,
|
||||
@ -316,7 +324,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// detect errors in skipped value
|
||||
"Detect errors in skipped value",
|
||||
"[!,2,\\]",
|
||||
"[false]",
|
||||
10,
|
||||
@ -325,7 +333,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// detect incomplete string event if it's skipped
|
||||
"Detect incomplete string event if it's skipped",
|
||||
"\"ABC",
|
||||
"false",
|
||||
10,
|
||||
@ -334,7 +342,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// detect incomplete string event if it's skipped
|
||||
"Detect incomplete string event if it's skipped",
|
||||
"'ABC",
|
||||
"false",
|
||||
10,
|
||||
@ -343,7 +351,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// handle escaped quotes
|
||||
"Handle escaped quotes",
|
||||
"'A\\'BC'",
|
||||
"false",
|
||||
10,
|
||||
@ -352,7 +360,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// handle escaped quotes
|
||||
"Handle escaped quotes",
|
||||
"\"A\\\"BC\"",
|
||||
"false",
|
||||
10,
|
||||
@ -361,7 +369,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// detect incomplete string in presence of escaped quotes
|
||||
"Detect incomplete string in presence of escaped quotes",
|
||||
"'A\\'BC",
|
||||
"false",
|
||||
10,
|
||||
@ -370,7 +378,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// detect incomplete string in presence of escaped quotes
|
||||
"Detect incomplete string in presence of escaped quotes",
|
||||
"\"A\\\"BC",
|
||||
"false",
|
||||
10,
|
||||
@ -379,7 +387,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// skip empty array
|
||||
"skip empty array",
|
||||
"[]",
|
||||
"false",
|
||||
10,
|
||||
@ -388,7 +396,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// skip empty array with spaces
|
||||
"Skip empty array with spaces",
|
||||
" [ ] ",
|
||||
"false",
|
||||
10,
|
||||
@ -397,7 +405,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// bubble up element error even if array is skipped
|
||||
"Bubble up element error even if array is skipped",
|
||||
"[1,'2,3]",
|
||||
"false",
|
||||
10,
|
||||
@ -406,7 +414,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// bubble up member error even if object is skipped
|
||||
"Bubble up member error even if object is skipped",
|
||||
"{'hello':'worl}",
|
||||
"false",
|
||||
10,
|
||||
@ -415,7 +423,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// bubble up colon error even if object is skipped
|
||||
"Bubble up colon error even if object is skipped",
|
||||
"{'hello','world'}",
|
||||
"false",
|
||||
10,
|
||||
@ -424,7 +432,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// bubble up key error even if object is skipped
|
||||
"Bubble up key error even if object is skipped",
|
||||
"{'hello:1}",
|
||||
"false",
|
||||
10,
|
||||
@ -433,7 +441,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// detect invalid value in skipped object
|
||||
"Detect invalid value in skipped object",
|
||||
"{'hello':!}",
|
||||
"false",
|
||||
10,
|
||||
@ -442,7 +450,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// ignore invalid value in skipped object
|
||||
"Ignore invalid value in skipped object",
|
||||
"{'hello':\\}",
|
||||
"false",
|
||||
10,
|
||||
@ -451,7 +459,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored objects
|
||||
"Check nesting limit even for ignored objects",
|
||||
"{}",
|
||||
"false",
|
||||
0,
|
||||
@ -460,7 +468,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored objects
|
||||
"Check nesting limit even for ignored objects",
|
||||
"{'hello':{}}",
|
||||
"false",
|
||||
1,
|
||||
@ -469,7 +477,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored values in objects
|
||||
"Check nesting limit even for ignored values in objects",
|
||||
"{'hello':{}}",
|
||||
"{}",
|
||||
1,
|
||||
@ -478,7 +486,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored arrays
|
||||
"Check nesting limit even for ignored arrays",
|
||||
"[]",
|
||||
"false",
|
||||
0,
|
||||
@ -487,7 +495,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored arrays
|
||||
"Check nesting limit even for ignored arrays",
|
||||
"[[]]",
|
||||
"false",
|
||||
1,
|
||||
@ -496,7 +504,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// check nesting limit even for ignored values in arrays
|
||||
"Check nesting limit even for ignored values in arrays",
|
||||
"[[]]",
|
||||
"[]",
|
||||
1,
|
||||
@ -505,7 +513,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// supports back-slash at the end of skipped string
|
||||
"Supports back-slash at the end of skipped string",
|
||||
"\"hell\\",
|
||||
"false",
|
||||
1,
|
||||
@ -514,7 +522,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// invalid comment at after an element in a skipped array
|
||||
"Invalid comment at after an element in a skipped array",
|
||||
"[1/]",
|
||||
"false",
|
||||
10,
|
||||
@ -523,7 +531,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// incomplete comment at after an element in a skipped array
|
||||
"Incomplete comment at after an element in a skipped array",
|
||||
"[1/*]",
|
||||
"false",
|
||||
10,
|
||||
@ -532,7 +540,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// missing comma in a skipped array
|
||||
"Missing comma in a skipped array",
|
||||
"[1 2]",
|
||||
"false",
|
||||
10,
|
||||
@ -541,7 +549,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// invalid comment at the beginning of array
|
||||
"Invalid comment at the beginning of array",
|
||||
"[/1]",
|
||||
"[false]",
|
||||
10,
|
||||
@ -550,7 +558,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// incomplete comment at the begining of an array
|
||||
"Incomplete comment at the begining of an array",
|
||||
"[/*]",
|
||||
"[false]",
|
||||
10,
|
||||
@ -559,7 +567,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofArray(0),
|
||||
},
|
||||
{
|
||||
// invalid comment before key
|
||||
"Invalid comment before key",
|
||||
"{/1:2}",
|
||||
"{}",
|
||||
10,
|
||||
@ -568,7 +576,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// incomplete comment before key
|
||||
"Incomplete comment before key",
|
||||
"{/*:2}",
|
||||
"{}",
|
||||
10,
|
||||
@ -577,7 +585,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// invalid comment after key
|
||||
"Invalid comment after key",
|
||||
"{\"example\"/1:2}",
|
||||
"{}",
|
||||
10,
|
||||
@ -586,7 +594,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// incomplete comment after key
|
||||
"Incomplete comment after key",
|
||||
"{\"example\"/*:2}",
|
||||
"{}",
|
||||
10,
|
||||
@ -595,7 +603,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// invalid comment after colon
|
||||
"Invalid comment after colon",
|
||||
"{\"example\":/12}",
|
||||
"{}",
|
||||
10,
|
||||
@ -604,7 +612,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// incomplete comment after colon
|
||||
"Incomplete comment after colon",
|
||||
"{\"example\":/*2}",
|
||||
"{}",
|
||||
10,
|
||||
@ -613,7 +621,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// comment next to an integer
|
||||
"Comment next to an integer",
|
||||
"{\"ignore\":1//,\"example\":2\n}",
|
||||
"{\"example\":true}",
|
||||
10,
|
||||
@ -622,7 +630,7 @@ TEST_CASE("Filtering") {
|
||||
sizeofObject(0),
|
||||
},
|
||||
{
|
||||
// invalid comment after opening brace of a skipped object
|
||||
"Invalid comment after opening brace of a skipped object",
|
||||
"{/1:2}",
|
||||
"false",
|
||||
10,
|
||||
@ -631,7 +639,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// incomplete after opening brace of a skipped object
|
||||
"Incomplete after opening brace of a skipped object",
|
||||
"{/*:2}",
|
||||
"false",
|
||||
10,
|
||||
@ -640,7 +648,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// invalid comment after key of a skipped object
|
||||
"Invalid comment after key of a skipped object",
|
||||
"{\"example\"/:2}",
|
||||
"false",
|
||||
10,
|
||||
@ -649,7 +657,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// incomplete comment after key of a skipped object
|
||||
"Incomplete comment after key of a skipped object",
|
||||
"{\"example\"/*:2}",
|
||||
"false",
|
||||
10,
|
||||
@ -658,7 +666,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// invalid comment after value in a skipped object
|
||||
"Invalid comment after value in a skipped object",
|
||||
"{\"example\":2/}",
|
||||
"false",
|
||||
10,
|
||||
@ -667,7 +675,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// incomplete comment after value of a skipped object
|
||||
"Incomplete comment after value of a skipped object",
|
||||
"{\"example\":2/*}",
|
||||
"false",
|
||||
10,
|
||||
@ -676,7 +684,7 @@ TEST_CASE("Filtering") {
|
||||
0,
|
||||
},
|
||||
{
|
||||
// incomplete comment after comma in skipped object
|
||||
"Incomplete comment after comma in skipped object",
|
||||
"{\"example\":2,/*}",
|
||||
"false",
|
||||
10,
|
||||
@ -686,22 +694,18 @@ TEST_CASE("Filtering") {
|
||||
},
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < sizeof(testCases) / sizeof(testCases[0]); i++) {
|
||||
CAPTURE(i);
|
||||
|
||||
for (auto& tc : testCases) {
|
||||
SECTION(tc.description) {
|
||||
SpyingAllocator spy;
|
||||
JsonDocument filter;
|
||||
JsonDocument doc(&spy);
|
||||
TestCase& tc = testCases[i];
|
||||
|
||||
CAPTURE(tc.filter);
|
||||
REQUIRE(deserializeJson(filter, tc.filter) == DeserializationError::Ok);
|
||||
|
||||
CAPTURE(tc.input);
|
||||
CAPTURE(tc.nestingLimit);
|
||||
CHECK(deserializeJson(doc, tc.input, DeserializationOption::Filter(filter),
|
||||
DeserializationOption::NestingLimit(
|
||||
tc.nestingLimit)) == tc.error);
|
||||
CHECK(deserializeJson(
|
||||
doc, tc.input, DeserializationOption::Filter(filter),
|
||||
DeserializationOption::NestingLimit(tc.nestingLimit)) ==
|
||||
tc.error);
|
||||
|
||||
CHECK(doc.as<std::string>() == tc.output);
|
||||
|
||||
@ -709,6 +713,7 @@ TEST_CASE("Filtering") {
|
||||
CHECK(spy.allocatedBytes() == tc.memoryUsage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("Overloads") {
|
||||
JsonDocument doc;
|
||||
|
Reference in New Issue
Block a user