diff --git a/test/cases/standard/basic.json b/test/cases/standard/basic.json index f2e0daa..fe19ee6 100644 --- a/test/cases/standard/basic.json +++ b/test/cases/standard/basic.json @@ -5,15 +5,15 @@ "selector": "$", "document": ["first", "second"], "result": [["first", "second"]], - "paths": ["$"], - "pointers": [""] + "result_paths": ["$"], + "result_pointers": [""] }, { "name": "dot field on object", "selector": "$.a", "document": {"a": "A", "b": "B"}, "result": ["A"], - "paths": ["$['a']"], - "pointers": ["/a"] + "result_paths": ["$['a']"], + "result_pointers": ["/a"] }, { "name": "dot field on array", "selector": "$.a", @@ -24,8 +24,8 @@ "selector": "$.*", "document": {"a": "A", "b": "B"}, "result": ["A", "B"], - "paths": ["$['a']", "$['b']"], - "pointers": ["/a", "/b"] + "result_paths": ["$['a']", "$['b']"], + "result_pointers": ["/a", "/b"] }, { "name": "union wildcard on array", "selector": "$[*]", @@ -41,8 +41,8 @@ "selector": "$[*]", "document": {"a": "A", "b": "B"}, "result": ["A", "B"], - "paths": ["$['a']", "$['b']"], - "pointers": ["/a", "/b"] + "result_paths": ["$['a']", "$['b']"], + "result_pointers": ["/a", "/b"] }, { "name": "union wildcard on object, twice", "selector": "$[*, *]", @@ -53,36 +53,36 @@ "selector": "$.*", "document": ["A", "B"], "result": ["A", "B"], - "paths": ["$[0]", "$[1]"], - "pointers": ["/0", "/1"] + "result_paths": ["$[0]", "$[1]"], + "result_pointers": ["/0", "/1"] }, { "name": "dot wildcard dot field", "selector": "$.*.a", "document": {"x": {"a": "Ax", "b": "Bx"}, "y": {"a": "Ay", "b": "By"}}, "result": ["Ax", "Ay"], - "paths": ["$['x']['a']", "$['y']['a']"], - "pointers": ["/x/a", "/y/a"] + "result_paths": ["$['x']['a']", "$['y']['a']"], + "result_pointers": ["/x/a", "/y/a"] }, { "name": "union sq field on object", "selector": "$['a']", "document": {"a": "A", "b": "B"}, "result": ["A"], - "paths": ["$['a']"], - "pointers": ["/a"] + "result_paths": ["$['a']"], + "result_pointers": ["/a"] }, { "name": "union sq field on object (2 result)", "selector": "$['a', 'c']", "document": {"a": "A", "b": "B", "c": "C"}, "result": ["A", "C"], - "paths": ["$['a']", "$['c']"], - "pointers": ["/a", "/c"] + "result_paths": ["$['a']", "$['c']"], + "result_pointers": ["/a", "/c"] }, { "name": "union sq field on object (numeric key)", "selector": "$['1']", "document": {"0": "A", "1": "B"}, "result": ["B"], - "paths": ["$['1']"], - "pointers": ["/1"] + "result_paths": ["$['1']"], + "result_pointers": ["/1"] }, { "name": "union sq field on array", "selector": "$['a']", @@ -93,22 +93,22 @@ "selector": "$[\"a\"]", "document": {"a": "A", "b": "B"}, "result": ["A"], - "paths": ["$['a']"], - "pointers": ["/a"] + "result_paths": ["$['a']"], + "result_pointers": ["/a"] }, { "name": "union dq field on object (2 result)", "selector": "$[\"a\", \"c\"]", "document": {"a": "A", "b": "B", "c": "C"}, "result": ["A", "C"], - "paths": ["$['a']", "$['c']"], - "pointers": ["/a", "/c"] + "result_paths": ["$['a']", "$['c']"], + "result_pointers": ["/a", "/c"] }, { "name": "union dq field on object (numeric key)", "selector": "$[\"1\"]", "document": {"0": "A", "1": "B"}, "result": ["B"], - "paths": ["$['1']"], - "pointers": ["/1"] + "result_paths": ["$['1']"], + "result_pointers": ["/1"] }, { "name": "union dq field on array", "selector": "$[\"a\"]", @@ -119,8 +119,8 @@ "selector": "$[1]", "document": ["A", "B"], "result": ["B"], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "union index on object", "selector": "$[1]", @@ -131,29 +131,29 @@ "selector": "$[\"0\", 1, 'a']", "document": {"a": "A", "b": "B", "0": "Zero", "1": "One"}, "result": ["Zero", "A"], - "paths": ["$['0']", "$['a']"], - "pointers": ["/0", "/a"] + "result_paths": ["$['0']", "$['a']"], + "result_pointers": ["/0", "/a"] }, { "name": "union index and field on array", "selector": "$[1, 'a', '1']", "document": ["A", "B"], "result": ["B"], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "union array slice on array [15:-7:-3]", "selector": "$[15:-7:-3]", "document": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "result": [9, 6], - "paths": ["$[9]", "$[6]"], - "pointers": ["/9", "/6"] + "result_paths": ["$[9]", "$[6]"], + "result_pointers": ["/9", "/6"] }, { "name": "union array slice on array [:]", "selector": "$[:]", "document": [0, 1, 2], "result": [0, 1, 2], - "paths": ["$[0]", "$[1]", "$[2]"], - "pointers": ["/0", "/1", "/2"] + "result_paths": ["$[0]", "$[1]", "$[2]"], + "result_pointers": ["/0", "/1", "/2"] }, { "name": "test [:]", "selector": "$.Table1[:]", @@ -164,22 +164,22 @@ "selector": "$[:10000000000:]", "document": [0, 1, 2], "result": [0, 1, 2], - "paths": ["$[0]", "$[1]", "$[2]"], - "pointers": ["/0", "/1", "/2"] + "result_paths": ["$[0]", "$[1]", "$[2]"], + "result_pointers": ["/0", "/1", "/2"] }, { "name": "recursion wildcard", "selector": "$..*", "document": {"a": {"foo": "bar"}, "b": [42]}, "result": [{"foo": "bar"}, [42], "bar", 42], - "paths": ["$['a']", "$['b']", "$['a']['foo']", "$['b'][0]"], - "pointers": ["/a", "/b", "/a/foo", "/b/0"] + "result_paths": ["$['a']", "$['b']", "$['a']['foo']", "$['b'][0]"], + "result_pointers": ["/a", "/b", "/a/foo", "/b/0"] }, { "name": "recursion union", "selector": "$..[0]", "document": {"a": {"foo": "bar"}, "b": [42]}, "result": [42], - "paths": ["$['b'][0]"], - "pointers": ["/b/0"] + "result_paths": ["$['b'][0]"], + "result_pointers": ["/b/0"] } ] } \ No newline at end of file diff --git a/test/cases/standard/expressions_equality.json b/test/cases/standard/expressions_equality.json index 3d6bb86..fb2e684 100644 --- a/test/cases/standard/expressions_equality.json +++ b/test/cases/standard/expressions_equality.json @@ -5,8 +5,8 @@ "selector": "$[?(1==1)]", "document": [42], "result": [42], - "paths": ["$[0]"], - "pointers": ["/0"] + "result_paths": ["$[0]"], + "result_pointers": ["/0"] }, { "name": "object itself", "selector": "$[?(@ == 1)]", @@ -17,78 +17,78 @@ "selector": "$[?(@[1] == 'b')]", "document": [["a", "b"], ["x", "y"]], "result": [["a", "b"]], - "paths": ["$[0]"], - "pointers": ["/0"] + "result_paths": ["$[0]"], + "result_pointers": ["/0"] }, { "name": "array index with odd spacing", "selector": "$[?(@ [1] =='b')]", "document": [["a", "b"], ["x", "y"]], "result": [["a", "b"]], - "paths": ["$[0]"], - "pointers": ["/0"] + "result_paths": ["$[0]"], + "result_pointers": ["/0"] }, { "name": "object child, single quote", "selector": "$[?(@['key'] == 'b')]", "document": [{"key": "a"}, {"key": "b"}, {}], "result": [{"key": "b"}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, single quote, odd spacing", "selector": "$[?(@ ['key']=='b')]", "document": [{"key": "a"}, {"key": "b"}, {}], "result": [{"key": "b"}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, double quote", "selector": "$[?(@[\"key\"] == 'b')]", "document": [{"key": "a"}, {"key": "b"}, {}], "result": [{"key": "b"}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, dot-notation", "selector": "$[?(@.key=='b')]", "document": [{"key": "a"}, {"key": "b"}, {}], "result": [{"key": "b"}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, dot-notation, depth 2", "selector": "$[?(@.foo.bar=='b')]", "document": [{"foo": {"bar": "a"}}, {"foo": {"bar": "b"}}, {"foo": "b"} ,{}], "result": [{"foo": {"bar": "b"}}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, dot-notation, depth 2, odd spacing", "selector": "$[?(@ \t .foo\n .bar== 'b')]", "document": [{"foo": {"bar": "a"}}, {"foo": {"bar": "b"}}, {"foo": "b"} ,{}], "result": [{"foo": {"bar": "b"}}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "object child, dot-notation, int value", "selector": "$[?(@.id==42)].name", "document": [{"id": 42, "name": "forty-two"}, {"id": 1, "name": "one"}], "result": ["forty-two"], - "paths": ["$[0]['name']"], - "pointers": ["/0/name"] + "result_paths": ["$[0]['name']"], + "result_pointers": ["/0/name"] }, { "name": "object child, combined", "selector": "$[?(@.foo['bar'] == 'b')]", "document": [{"foo": {"bar": "a"}}, {"foo": {"bar": "b"}}, {"foo": {"moo": 42}}, {}], "result": [{"foo": {"bar": "b"}}], - "paths": ["$[1]"], - "pointers": ["/1"] + "result_paths": ["$[1]"], + "result_pointers": ["/1"] }, { "name": "equal props", "selector": "$[?(@.foo == @.bar)]", "document": [{"foo": 1, "bar": 2}, {"foo": 42, "bar": 42}, {"foo": 1, "bro": 1}, {}], "result": [{"foo": 42, "bar": 42}, {}], - "paths": ["$[1]", "$[3]"], - "pointers": ["/1", "/3"] + "result_paths": ["$[1]", "$[3]"], + "result_pointers": ["/1", "/3"] }, { "selector": "$[?(1!=1)]", "document": [42], diff --git a/test/cases/standard/normalized_path.json b/test/cases/standard/normalized_path.json index e789fef..b9b4cfb 100644 --- a/test/cases/standard/normalized_path.json +++ b/test/cases/standard/normalized_path.json @@ -24,7 +24,7 @@ "'": "single quote/apostrophe", "\\": "backslash" }, - "paths": [ + "result_paths": [ "$['\\u0000']", "$['\\u0001']", "$['\\u0002']", @@ -55,7 +55,7 @@ "\ud83d\ude00": "smiley face", "\u10FFFF": "0x10FFFF" }, - "paths": [ + "result_paths": [ "$['\"']", "$['[]']", "$['\uD83D\uDE00']", diff --git a/test/helper.dart b/test/helper.dart index acca817..f9add2a 100644 --- a/test/helper.dart +++ b/test/helper.dart @@ -25,53 +25,69 @@ void runTestsInDirectory(String dirName, {JsonPathParser? parser}) { } final String selector = t['selector']; - final document = t['document']; final String? name = t['name']; - final List? paths = t['paths']; - final List? pointers = t['pointers']; + final List? resultPaths = t['result_paths']; + final List? resultsPaths = t['results_paths']; + final List? pointers = t['result_pointers']; final String? skip = t['skip']; final List? result = t['result']; final List? results = t['results']; final bool? invalid = t['invalid_selector']; group(name ?? selector, () { if (result is List) { - test('values', () { - expect(jsonPath(selector).readValues(document), equals(result)); - }); + test( + 'values', + () => expect( + jsonPath(selector).readValues(document), equals(result))); } if (results is List) { - test('any of values', () { - expect(jsonPath(selector).readValues(document), anyOf(results)); - }); + test( + 'any of values', + () => expect( + jsonPath(selector).readValues(document), anyOf(results))); + } + if (resultPaths is List) { + test( + 'result_paths', + () => expect( + jsonPath(selector) + .read(document) + .map((e) => e.path) + .toList(), + equals(resultPaths))); } - if (paths is List) { - test('paths', () { - final actual = - jsonPath(selector).read(document).map((e) => e.path).toList(); - expect(actual, equals(paths)); - }); + if (resultsPaths is List) { + test( + 'results_paths', + () => expect( + jsonPath(selector) + .read(document) + .map((e) => e.path) + .toList(), + anyOf(resultsPaths))); } if (pointers is List) { - test('pointers', () { - expect( - jsonPath(selector) - .read(document) - .map((e) => e.pointer.toString()) - .toList(), - equals(pointers), - ); - }); + test( + 'result_pointers', + () => expect( + jsonPath(selector) + .read(document) + .map((e) => e.pointer.toString()) + .toList(), + equals(pointers), + )); } if (invalid == true) { - test('invalid', () { - expect( - () => jsonPath(selector), - throwsFormatException, - ); - }); + test( + 'invalid', + () => expect( + () => jsonPath(selector), + throwsFormatException, + )); } - if ((result ?? results ?? paths ?? pointers ?? invalid) == null) { + if ((result ?? results ?? resultPaths ?? pointers ?? invalid) == + null) { throw ArgumentError('No expectations found'); } }, skip: skip); @@ -84,8 +100,9 @@ const _knownKeys = { 'document', 'invalid_selector', 'name', - 'paths', - 'pointers', + 'result_paths', + 'results_paths', + 'result_pointers', 'result', 'results', 'selector',