diff --git a/Test Results - Tests_in_'json-path-parent_json-path'.html b/Test Results - Tests_in_'json-path-parent_json-path'.html
new file mode 100644
index 00000000..150a8221
--- /dev/null
+++ b/Test Results - Tests_in_'json-path-parent_json-path'.html
@@ -0,0 +1,5817 @@
+
+
+
+
+ Test Results — Tests in 'json-path-parent.json-path'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
402 ms
+ DeepScanTest
+
+ -
+
+
233 ms
+ passeddeepScanPathRequireProperties
+
+ -
+
+
22 ms
+ passedrequire_single_property
+
+ -
+
+
4 ms
+ passedrequire_multi_property_some_match
+
+ -
+
+
5 ms
+ passedscan_for_single_property
+
+ -
+
+
1 ms
+ passedwhen_deep_scanning_require_properties_is_ignored_on_scan_target_but_not_on_children
+
+ -
+
+
2 ms
+ passedrequire_single_property_ok
+
+ -
+
+
3 ms
+ passedwhen_deep_scanning_require_properties_is_ignored_on_scan_target
+
+ -
+
+
0 ms
+ passeddeepScanPathDefault
+
+ -
+
+
4 ms
+ passedwhen_deep_scanning_non_array_subscription_is_ignored
+
+ -
+
+
60 ms
+ passedwhen_deep_scanning_illegal_predicate_is_ignored
+
+ -
+
+
5 ms
+ passedscan_for_property_path
+
+ -
+
+
3 ms
+ passedrequire_multi_property_all_match
+
+ -
+
+
1 ms
+ passedwhen_deep_scanning_illegal_property_access_is_ignored
+
+ -
+
+
2 ms
+ passeddefinite_upstream_illegal_array_access_throws
+
+ -
+
+
3 ms
+ passedwhen_deep_scanning_array_index_oob_is_ignored
+
+ -
+
+
20 ms
+ passedscan_with_a_function_filter
+
+ -
+
+
3 ms
+ passedwhen_deep_scanning_leaf_multi_props_work
+
+ -
+
+
22 ms
+ passedscan_for_property_path_missing_required_property
+
+ -
+
+
8 ms
+ passedscans_can_be_filtered
+
+ -
+
+
1 ms
+ passedwhen_deep_scanning_null_subscription_is_ignored
+
+
+
+ -
+
+
13 ms
+ EscapeTest
+
+ -
+
+
13 ms
+ passedurls_are_not_escaped
+
+
+
+ -
+
+
24 ms
+ EvaluationListenerTest
+
+ -
+
+
7 ms
+ passedan_evaluation_lister_can_continue
+
+ -
+
+
5 ms
+ passedevaluation_results_can_be_limited
+
+ -
+
+
3 ms
+ passedan_evaluation_listener_can_abort_after_one_result_using_fluent_api
+
+ -
+
+
5 ms
+ passedmultiple_evaluation_listeners_can_be_added
+
+ -
+
+
2 ms
+ passedevaluation_listeners_can_be_cleared
+
+ -
+
+
2 ms
+ passedan_evaluation_listener_can_abort_after_one_result_using_configuration
+
+
+
+ -
+
+
16 ms
+ FilterCompilerTest
+
+ -
+
+
11 ms
+ passedvalid_filters_compile
+
+ -
+
+
1 ms
+ passedinvalid_path_when_string_literal_is_unquoted
+
+ -
+
+
0 ms
+ passedcompile_and_serialize_not_exists_filter
+
+ -
+
+
0 ms
+ passedstring_quote_style_is_serialized
+
+ -
+
+
1 ms
+ passedstring_can_contain_path_chars
+
+ -
+
+
2 ms
+ passedinvalid_filters_does_not_compile
+
+ -
+
+
1 ms
+ passedor_has_lower_priority_than_and
+
+
+
+ -
+
+
29 ms
+ FilterParseTest
+
+ -
+
+
1 ms
+ passeda_filter_can_be_parsed
+
+ -
+
+
6 ms
+ passeda_exists_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_subsetof_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_anyof_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_all_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_noneof_filter_can_be_serialized
+
+ -
+
+
0 ms
+ passeda_lte_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_deep_path_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_gt_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passedin_string_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_lt_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_gte_filter_can_be_serialized
+
+ -
+
+
0 ms
+ passedan_invalid_filter_can_not_be_parsed
+
+ -
+
+
1 ms
+ passedor_combined_filters_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_doc_ref_filter_can_be_serialized
+
+ -
+
+
2 ms
+ passeda_in_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_matches_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_regex_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_not_exists_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_nin_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_ne_filter_can_be_serialized
+
+ -
+
+
0 ms
+ passeda_eq_filter_can_be_serialized
+
+ -
+
+
0 ms
+ passeda_type_filter_can_be_serialized
+
+ -
+
+
0 ms
+ passeda_contains_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_size_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passeda_not_empty_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passedand_filter_can_be_serialized
+
+ -
+
+
1 ms
+ passedand_combined_filters_can_be_serialized
+
+
+
+ -
+
+
70 ms
+ FilterTest
+
+ -
+
+
5 ms
+ passeddouble_gte_evals
+
+ -
+
+
1 ms
+ passedint_gte_evals
+
+ -
+
+
1 ms
+ passedstring_size_evals
+
+ -
+
+
1 ms
+ passedstring_ne_evals
+
+ -
+
+
1 ms
+ passednull_size_evals
+
+ -
+
+
2 ms
+ passedcriteria_can_be_parsed
+
+ -
+
+
1 ms
+ passednot_array_all_evals
+
+ -
+
+
2 ms
+ passeddouble_gt_evals
+
+ -
+
+
4 ms
+ passedother_size_evals
+
+ -
+
+
2 ms
+ passeddouble_lt_evals
+
+ -
+
+
2 ms
+ passedlong_gt_evals
+
+ -
+
+
2 ms
+ passedlong_lt_evals
+
+ -
+
+
2 ms
+ passedlong_lte_evals
+
+ -
+
+
2 ms
+ passedtype_evals
+
+ -
+
+
3 ms
+ passedinline_in_criteria_evaluates
+
+ -
+
+
1 ms
+ passedstring_gt_evals
+
+ -
+
+
1 ms
+ passedstring_regex_evals
+
+ -
+
+
1 ms
+ passedstring_lt_evals
+
+ -
+
+
1 ms
+ passedlong_gte_evals
+
+ -
+
+
1 ms
+ passednot_empty_evals
+
+ -
+
+
1 ms
+ passedint_eq_string_evals
+
+ -
+
+
1 ms
+ passedint_eq_evals
+
+ -
+
+
1 ms
+ passedtestFilterWithOrShortCircuit1
+
+ -
+
+
1 ms
+ passedtestFilterWithOrShortCircuit2
+
+ -
+
+
1 ms
+ passednull_eq_evals
+
+ -
+
+
1 ms
+ passedarray_size_evals
+
+ -
+
+
1 ms
+ passedor_and_filters_evaluates
+
+ -
+
+
1 ms
+ passedint_ne_evals
+
+ -
+
+
2 ms
+ passedarr_eq_evals
+
+ -
+
+
1 ms
+ passedstring_nin_evals
+
+ -
+
+
2 ms
+ passedmatches_evals
+
+ -
+
+
1 ms
+ passedarray_subsetof_evals
+
+ -
+
+
1 ms
+ passednull_ne_evals
+
+ -
+
+
1 ms
+ passedexists_evals
+
+ -
+
+
1 ms
+ passedobj_regex_doesnt_break
+
+ -
+
+
1 ms
+ passedjson_evals
+
+ -
+
+
1 ms
+ passedlist_regex_evals
+
+ -
+
+
1 ms
+ passeddouble_eq_evals
+
+ -
+
+
2 ms
+ passedint_all_evals
+
+ -
+
+
1 ms
+ passedlong_eq_evals
+
+ -
+
+
1 ms
+ passedint_gt_evals
+
+ -
+
+
1 ms
+ passedarray_noneof_evals
+
+ -
+
+
1 ms
+ passedstring_all_evals
+
+ -
+
+
1 ms
+ passedint_lt_evals
+
+ -
+
+
0 ms
+ passedboolean_eq_evals
+
+ -
+
+
1 ms
+ passedempty_evals
+
+ -
+
+
0 ms
+ passedstring_eq_evals
+
+ -
+
+
1 ms
+ passedstring_in_evals
+
+ -
+
+
1 ms
+ passeddouble_ne_evals
+
+ -
+
+
1 ms
+ passeddouble_lte_evals
+
+ -
+
+
1 ms
+ passedint_lte_evals
+
+ -
+
+
0 ms
+ passedlong_ne_evals
+
+ -
+
+
1 ms
+ passedarray_anyof_evals
+
+ -
+
+
1 ms
+ passedboolean_ne_evals
+
+
+
+ -
+
+
91 ms
+ GsonJsonProviderTest
+
+ -
+
+
22 ms
+ passedlist_of_numbers
+
+ -
+
+
31 ms
+ passedtest_type_ref
+
+ -
+
+
7 ms
+ passedlongs_are_unwrapped
+
+ -
+
+
1 ms
+ passedan_object_can_be_mapped_to_pojo
+
+ -
+
+
3 ms
+ passedsmall_bigdecimals_are_unwrapped
+
+ -
+
+
4 ms
+ passedints_are_unwrapped
+
+ -
+
+
6 ms
+ passeddoubles_are_unwrapped
+
+ -
+
+
2 ms
+ passedjson_can_be_parsed
+
+ -
+
+
5 ms
+ passedsmall_bigintegers_are_unwrapped
+
+ -
+
+
2 ms
+ passedbigdecimals_are_unwrapped
+
+ -
+
+
2 ms
+ passedtest_type_ref_fail
+
+ -
+
+
1 ms
+ passedno_error_when_mapping_null
+
+ -
+
+
1 ms
+ passedbigintegers_are_unwrapped
+
+ -
+
+
1 ms
+ passedan_Integer_can_be_converted_to_a_Double
+
+ -
+
+
2 ms
+ passedstrings_are_unwrapped
+
+ -
+
+
1 ms
+ passedint_to_long_mapping
+
+
+
+ -
+
+
649 ms
+ InlineFilterTest
+
+ -
+
+
48 ms
+ [0]
+
+ -
+
+
2 ms
+ passedescaped_literals2[0]
+
+ -
+
+
3 ms
+ passedmultiple_context_object_can_be_refered[0]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_all[0]
+
+ -
+
+
1 ms
+ passedescape_pattern_before_literal[0]
+
+ -
+
+
2 ms
+ passednegate_exists_check_primitive[0]
+
+ -
+
+
5 ms
+ passedroot_context_can_be_referred_in_predicate[0]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_both_side_of_operator[0]
+
+ -
+
+
3 ms
+ passedequality_check_does_not_break_evaluation[0]
+
+ -
+
+
2 ms
+ passedpath_can_be_on_either_side_of_operator[0]
+
+ -
+
+
3 ms
+ passedpatterns_match_against_lists[0]
+
+ -
+
+
2 ms
+ passedescaped_literals[0]
+
+ -
+
+
3 ms
+ passedpatterns_can_be_evaluated[0]
+
+ -
+
+
7 ms
+ passedsimple_inline_or_statement_evaluates[0]
+
+ -
+
+
1 ms
+ passedescape_pattern_after_literal[0]
+
+ -
+
+
3 ms
+ passedlt_check_does_not_break_evaluation[0]
+
+ -
+
+
4 ms
+ passednegate_exists_check[0]
+
+ -
+
+
2 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[0]
+
+ -
+
+
1 ms
+ passedescape_pattern[0]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_none[0]
+
+ -
+
+
1 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[0]
+
+
+
+ -
+
+
42 ms
+ [1]
+
+ -
+
+
1 ms
+ passedescaped_literals2[1]
+
+ -
+
+
13 ms
+ passedmultiple_context_object_can_be_refered[1]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_all[1]
+
+ -
+
+
1 ms
+ passedescape_pattern_before_literal[1]
+
+ -
+
+
1 ms
+ passednegate_exists_check_primitive[1]
+
+ -
+
+
2 ms
+ passedroot_context_can_be_referred_in_predicate[1]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_both_side_of_operator[1]
+
+ -
+
+
3 ms
+ passedequality_check_does_not_break_evaluation[1]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_either_side_of_operator[1]
+
+ -
+
+
1 ms
+ passedpatterns_match_against_lists[1]
+
+ -
+
+
1 ms
+ passedescaped_literals[1]
+
+ -
+
+
2 ms
+ passedpatterns_can_be_evaluated[1]
+
+ -
+
+
6 ms
+ passedsimple_inline_or_statement_evaluates[1]
+
+ -
+
+
1 ms
+ passedescape_pattern_after_literal[1]
+
+ -
+
+
3 ms
+ passedlt_check_does_not_break_evaluation[1]
+
+ -
+
+
1 ms
+ passednegate_exists_check[1]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[1]
+
+ -
+
+
1 ms
+ passedescape_pattern[1]
+
+ -
+
+
0 ms
+ passedno_path_ref_in_filter_hit_none[1]
+
+ -
+
+
1 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[1]
+
+
+
+ -
+
+
144 ms
+ [2]
+
+ -
+
+
1 ms
+ passedescaped_literals2[2]
+
+ -
+
+
117 ms
+ passedmultiple_context_object_can_be_refered[2]
+
+ -
+
+
2 ms
+ passedno_path_ref_in_filter_hit_all[2]
+
+ -
+
+
1 ms
+ passedescape_pattern_before_literal[2]
+
+ -
+
+
2 ms
+ passednegate_exists_check_primitive[2]
+
+ -
+
+
2 ms
+ passedroot_context_can_be_referred_in_predicate[2]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_both_side_of_operator[2]
+
+ -
+
+
3 ms
+ passedequality_check_does_not_break_evaluation[2]
+
+ -
+
+
2 ms
+ passedpath_can_be_on_either_side_of_operator[2]
+
+ -
+
+
1 ms
+ passedpatterns_match_against_lists[2]
+
+ -
+
+
1 ms
+ passedescaped_literals[2]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated[2]
+
+ -
+
+
5 ms
+ passedsimple_inline_or_statement_evaluates[2]
+
+ -
+
+
0 ms
+ passedescape_pattern_after_literal[2]
+
+ -
+
+
2 ms
+ passedlt_check_does_not_break_evaluation[2]
+
+ -
+
+
1 ms
+ passednegate_exists_check[2]
+
+ -
+
+
2 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[2]
+
+ -
+
+
0 ms
+ passedescape_pattern[2]
+
+ -
+
+
0 ms
+ passedno_path_ref_in_filter_hit_none[2]
+
+ -
+
+
0 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[2]
+
+
+
+ -
+
+
53 ms
+ [3]
+
+ -
+
+
0 ms
+ passedescaped_literals2[3]
+
+ -
+
+
22 ms
+ passedmultiple_context_object_can_be_refered[3]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_all[3]
+
+ -
+
+
1 ms
+ passedescape_pattern_before_literal[3]
+
+ -
+
+
1 ms
+ passednegate_exists_check_primitive[3]
+
+ -
+
+
3 ms
+ passedroot_context_can_be_referred_in_predicate[3]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_both_side_of_operator[3]
+
+ -
+
+
2 ms
+ passedequality_check_does_not_break_evaluation[3]
+
+ -
+
+
2 ms
+ passedpath_can_be_on_either_side_of_operator[3]
+
+ -
+
+
1 ms
+ passedpatterns_match_against_lists[3]
+
+ -
+
+
0 ms
+ passedescaped_literals[3]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated[3]
+
+ -
+
+
7 ms
+ passedsimple_inline_or_statement_evaluates[3]
+
+ -
+
+
1 ms
+ passedescape_pattern_after_literal[3]
+
+ -
+
+
4 ms
+ passedlt_check_does_not_break_evaluation[3]
+
+ -
+
+
1 ms
+ passednegate_exists_check[3]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[3]
+
+ -
+
+
1 ms
+ passedescape_pattern[3]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_none[3]
+
+ -
+
+
2 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[3]
+
+
+
+ -
+
+
50 ms
+ [4]
+
+ -
+
+
23 ms
+ passedescaped_literals2[4]
+
+ -
+
+
7 ms
+ passedmultiple_context_object_can_be_refered[4]
+
+ -
+
+
1 ms
+ passedno_path_ref_in_filter_hit_all[4]
+
+ -
+
+
1 ms
+ passedescape_pattern_before_literal[4]
+
+ -
+
+
2 ms
+ passednegate_exists_check_primitive[4]
+
+ -
+
+
2 ms
+ passedroot_context_can_be_referred_in_predicate[4]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_both_side_of_operator[4]
+
+ -
+
+
2 ms
+ passedequality_check_does_not_break_evaluation[4]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_either_side_of_operator[4]
+
+ -
+
+
1 ms
+ passedpatterns_match_against_lists[4]
+
+ -
+
+
1 ms
+ passedescaped_literals[4]
+
+ -
+
+
2 ms
+ passedpatterns_can_be_evaluated[4]
+
+ -
+
+
2 ms
+ passedsimple_inline_or_statement_evaluates[4]
+
+ -
+
+
0 ms
+ passedescape_pattern_after_literal[4]
+
+ -
+
+
2 ms
+ passedlt_check_does_not_break_evaluation[4]
+
+ -
+
+
1 ms
+ passednegate_exists_check[4]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[4]
+
+ -
+
+
0 ms
+ passedescape_pattern[4]
+
+ -
+
+
0 ms
+ passedno_path_ref_in_filter_hit_none[4]
+
+ -
+
+
0 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[4]
+
+
+
+ -
+
+
312 ms
+ [5]
+
+ -
+
+
35 ms
+ passedescaped_literals2[5]
+
+ -
+
+
259 ms
+ passedmultiple_context_object_can_be_refered[5]
+
+ -
+
+
0 ms
+ passedno_path_ref_in_filter_hit_all[5]
+
+ -
+
+
0 ms
+ passedescape_pattern_before_literal[5]
+
+ -
+
+
1 ms
+ passednegate_exists_check_primitive[5]
+
+ -
+
+
2 ms
+ passedroot_context_can_be_referred_in_predicate[5]
+
+ -
+
+
0 ms
+ passedpath_can_be_on_both_side_of_operator[5]
+
+ -
+
+
2 ms
+ passedequality_check_does_not_break_evaluation[5]
+
+ -
+
+
1 ms
+ passedpath_can_be_on_either_side_of_operator[5]
+
+ -
+
+
0 ms
+ passedpatterns_match_against_lists[5]
+
+ -
+
+
0 ms
+ passedescaped_literals[5]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated[5]
+
+ -
+
+
5 ms
+ passedsimple_inline_or_statement_evaluates[5]
+
+ -
+
+
1 ms
+ passedescape_pattern_after_literal[5]
+
+ -
+
+
2 ms
+ passedlt_check_does_not_break_evaluation[5]
+
+ -
+
+
1 ms
+ passednegate_exists_check[5]
+
+ -
+
+
1 ms
+ passedpatterns_can_be_evaluated_with_ignore_case[5]
+
+ -
+
+
0 ms
+ passedescape_pattern[5]
+
+ -
+
+
0 ms
+ passedno_path_ref_in_filter_hit_none[5]
+
+ -
+
+
1 ms
+ passedfilter_evaluation_does_not_break_path_evaluation[5]
+
+
+
+
+
+ -
+
+
1 ms
+ Issue_487
+
+ -
+
+
1 ms
+ passedtest_read_with_comma_1
+
+ -
+
+
0 ms
+ passedtest_read_with_comma_2
+
+
+
+ -
+
+
3 ms
+ Issue_537
+
+ -
+
+
1 ms
+ passedtest_read
+
+ -
+
+
2 ms
+ passedtest_renameKey
+
+
+
+ -
+
+
2 ms
+ Issue_721
+
+ -
+
+
1 ms
+ passedtest_delete_1
+
+ -
+
+
1 ms
+ passedtest_delete_2
+
+
+
+ -
+
+
1 ms
+ Issue_762
+
+ -
+
+
1 ms
+ passedtestParseJsonValue
+
+
+
+ -
+
+
11 ms
+ Issue_786
+
+ -
+
+
11 ms
+ passedtest
+
+
+
+ -
+
+
45 ms
+ JacksonJsonNodeJsonProviderMapperSupportTest
+
+ -
+
+
37 ms
+ [0]
+
+ -
+
+
35 ms
+ passedmapMethod_withJacksonJsonNodeJsonProvider_shouldUsingJsonNodeForMappingValues[0]
+
+ -
+
+
1 ms
+ passedsetMethod_withJacksonJsonNodeJsonProvider_shouldAcceptJsonNode[0]
+
+ -
+
+
1 ms
+ passedreadMethod_withJacksonJsonNodeJsonProvider_shouldReturnJsonNode[0]
+
+
+
+ -
+
+
3 ms
+ [1]
+
+ -
+
+
1 ms
+ passedmapMethod_withJacksonJsonNodeJsonProvider_shouldUsingJsonNodeForMappingValues[1]
+
+ -
+
+
1 ms
+ passedsetMethod_withJacksonJsonNodeJsonProvider_shouldAcceptJsonNode[1]
+
+ -
+
+
1 ms
+ passedreadMethod_withJacksonJsonNodeJsonProvider_shouldReturnJsonNode[1]
+
+
+
+ -
+
+
5 ms
+ [2]
+
+ -
+
+
2 ms
+ passedmapMethod_withJacksonJsonNodeJsonProvider_shouldUsingJsonNodeForMappingValues[2]
+
+ -
+
+
2 ms
+ passedsetMethod_withJacksonJsonNodeJsonProvider_shouldAcceptJsonNode[2]
+
+ -
+
+
1 ms
+ passedreadMethod_withJacksonJsonNodeJsonProvider_shouldReturnJsonNode[2]
+
+
+
+
+
+ -
+
+
141 ms
+ JacksonJsonNodeJsonProviderTest
+
+ -
+
+
2 ms
+ passedlist_of_numbers
+
+ -
+
+
68 ms
+ passedtest_type_ref
+
+ -
+
+
2 ms
+ passedlongs_are_unwrapped
+
+ -
+
+
17 ms
+ passedbytes_json_can_be_parsed
+
+ -
+
+
4 ms
+ passedsmall_bigdecimals_are_unwrapped
+
+ -
+
+
2 ms
+ passedints_are_unwrapped
+
+ -
+
+
1 ms
+ passedalways_return_same_object
+
+ -
+
+
1 ms
+ passedjson_can_be_parsed
+
+ -
+
+
2 ms
+ passedsmall_bigintegers_are_unwrapped
+
+ -
+
+
2 ms
+ passedbigdecimals_are_unwrapped
+
+ -
+
+
8 ms
+ passedtest_type_ref_fail
+
+ -
+
+
3 ms
+ passedbigintegers_are_unwrapped
+
+ -
+
+
4 ms
+ passedmapPropertyWithPOJO
+
+ -
+
+
23 ms
+ passedsetPropertyWithPOJO
+
+ -
+
+
2 ms
+ passedstrings_are_unwrapped
+
+
+
+ -
+
+
20 ms
+ JacksonTest
+
+ -
+
+
3 ms
+ passedan_object_can_be_mapped_to_pojo
+
+ -
+
+
1 ms
+ passedsingle_quotes_work_with_in_filter
+
+ -
+
+
16 ms
+ passedjackson_converts_dates
+
+
+
+ -
+
+
102 ms
+ JakartaJsonProviderTest
+
+ -
+
+
20 ms
+ passedread_book_length
+
+ -
+
+
8 ms
+ passedadd_to_array_on_object
+
+ -
+
+
1 ms
+ passedmap_array_items_can_be_renamed
+
+ -
+
+
2 ms
+ passedsingle_match_value_can_be_mapped
+
+ -
+
+
2 ms
+ passedread_books_with_isbn
+
+ -
+
+
2 ms
+ passedread_book_length_using_translated_query
+
+ -
+
+
1 ms
+ passedadd_to_object
+
+ -
+
+
1 ms
+ passeda_path_can_be_renamed
+
+ -
+
+
5 ms
+ passedtest_delete_2
+
+ -
+
+
2 ms
+ passeda_path_can_be_deleted
+
+ -
+
+
3 ms
+ passedoperations_can_chained
+
+ -
+
+
2 ms
+ passedan_root_property_can_be_updated
+
+ -
+
+
2 ms
+ passedan_object_can_be_read_from_bytes
+
+ -
+
+
4 ms
+ passedan_array_criteria_can_be_updated
+
+ -
+
+
3 ms
+ passedobject_can_be_mapped
+
+ -
+
+
1 ms
+ passednon_existent_key_rename_not_allowed
+
+ -
+
+
4 ms
+ passedan_deep_scan_can_update
+
+ -
+
+
1 ms
+ passedresult_can_be_mapped_to_object
+
+ -
+
+
2 ms
+ passedissue_97
+
+ -
+
+
1 ms
+ passeda_filter_can_be_applied
+
+ -
+
+
1 ms
+ passedadd_to_array
+
+ -
+
+
0 ms
+ passedan_object_can_be_read
+
+ -
+
+
3 ms
+ passedmulti_match_path_can_be_mapped
+
+ -
+
+
6 ms
+ passedan_array_slice_can_be_updated
+
+ -
+
+
3 ms
+ passedmulti_prop_delete
+
+ -
+
+
3 ms
+ passedan_array_criteria_with_multiple_results_can_be_deleted
+
+ -
+
+
1 ms
+ passeda_property_can_be_read
+
+ -
+
+
1 ms
+ passedadd_to_object_on_array
+
+ -
+
+
1 ms
+ passedan_array_index_can_be_updated
+
+ -
+
+
2 ms
+ passedan_array_criteria_can_be_deleted
+
+ -
+
+
12 ms
+ passedmulti_prop_update
+
+ -
+
+
2 ms
+ passedan_filter_can_update
+
+
+
+ -
+
+
8 ms
+ JsonOrgJsonProviderTest
+
+ -
+
+
2 ms
+ passedread_book_length
+
+ -
+
+
1 ms
+ passedread_books_with_isbn
+
+ -
+
+
1 ms
+ passedread_book_length_using_translated_query
+
+ -
+
+
2 ms
+ passedtest_getPropertyKeys_empty_nest_object
+
+ -
+
+
1 ms
+ passedtest_getPropertyKeys_empty_object
+
+ -
+
+
1 ms
+ passedresult_can_be_mapped_to_object
+
+ -
+
+
0 ms
+ passeda_filter_can_be_applied
+
+ -
+
+
0 ms
+ passedan_object_can_be_read
+
+ -
+
+
0 ms
+ passeda_property_can_be_read
+
+
+
+ -
+
+
20 ms
+ JsonProviderTest
+
+ -
+
+
2 ms
+ [0]
+
+ -
+
+
1 ms
+ passedints_are_unwrapped[0]
+
+ -
+
+
1 ms
+ passedintegers_are_unwrapped[0]
+
+ -
+
+
0 ms
+ passedstrings_are_unwrapped[0]
+
+
+
+ -
+
+
3 ms
+ [1]
+
+ -
+
+
1 ms
+ passedints_are_unwrapped[1]
+
+ -
+
+
1 ms
+ passedintegers_are_unwrapped[1]
+
+ -
+
+
1 ms
+ passedstrings_are_unwrapped[1]
+
+
+
+ -
+
+
4 ms
+ [2]
+
+ -
+
+
2 ms
+ passedints_are_unwrapped[2]
+
+ -
+
+
1 ms
+ passedintegers_are_unwrapped[2]
+
+ -
+
+
1 ms
+ passedstrings_are_unwrapped[2]
+
+
+
+ -
+
+
4 ms
+ [3]
+
+ -
+
+
1 ms
+ passedints_are_unwrapped[3]
+
+ -
+
+
2 ms
+ passedintegers_are_unwrapped[3]
+
+ -
+
+
1 ms
+ passedstrings_are_unwrapped[3]
+
+
+
+ -
+
+
3 ms
+ [4]
+
+ -
+
+
1 ms
+ passedints_are_unwrapped[4]
+
+ -
+
+
1 ms
+ passedintegers_are_unwrapped[4]
+
+ -
+
+
1 ms
+ passedstrings_are_unwrapped[4]
+
+
+
+ -
+
+
4 ms
+ [5]
+
+ -
+
+
2 ms
+ passedints_are_unwrapped[5]
+
+ -
+
+
1 ms
+ passedintegers_are_unwrapped[5]
+
+ -
+
+
1 ms
+ passedstrings_are_unwrapped[5]
+
+
+
+
+
+ -
+
+
89 ms
+ JsonProviderTestObjectMapping
+
+ -
+
+
22 ms
+ [0]
+
+ -
+
+
3 ms
+ passedlist_of_numbers[0]
+
+ -
+
+
19 ms
+ passedtest_type_ref[0]
+
+
+
+ -
+
+
7 ms
+ [1]
+
+ -
+
+
2 ms
+ passedlist_of_numbers[1]
+
+ -
+
+
5 ms
+ passedtest_type_ref[1]
+
+
+
+ -
+
+
5 ms
+ [2]
+
+ -
+
+
2 ms
+ passedlist_of_numbers[2]
+
+ -
+
+
3 ms
+ passedtest_type_ref[2]
+
+
+
+ -
+
+
55 ms
+ [3]
+
+ -
+
+
1 ms
+ passedlist_of_numbers[3]
+
+ -
+
+
54 ms
+ passedtest_type_ref[3]
+
+
+
+
+
+ -
+
+
4 ms
+ MapperTest
+
+ -
+
+
1 ms
+ passeda_String_can_be_converted_to_a_BigDecimal
+
+ -
+
+
1 ms
+ passeda_Long_can_be_converted_to_a_Date
+
+ -
+
+
0 ms
+ passeda_String_can_be_converted_to_a_BigInteger
+
+ -
+
+
1 ms
+ passedan_String_can_be_converted_to_a_Long
+
+ -
+
+
0 ms
+ passedan_Integer_can_be_converted_to_a_Long
+
+ -
+
+
0 ms
+ passeda_Boolean_can_be_converted_to_a_primitive_boolean
+
+ -
+
+
0 ms
+ passeda_BigDecimal_can_be_converted_to_a_Long
+
+ -
+
+
1 ms
+ passedan_Integer_can_be_converted_to_a_Double
+
+ -
+
+
0 ms
+ passedan_Integer_can_be_converted_to_a_String
+
+
+
+ -
+
+
18 ms
+ MultiPropTest
+
+ -
+
+
4 ms
+ passedmulti_prop_can_be_read_from_root
+
+ -
+
+
2 ms
+ passednon_leaf_multi_props_can_be_required
+
+ -
+
+
1 ms
+ passedmulti_props_can_be_non_leafs
+
+ -
+
+
2 ms
+ passedmulti_props_can_be_defaulted_to_null
+
+ -
+
+
2 ms
+ passeddeep_scan_does_not_affect_non_leaf_multi_props
+
+ -
+
+
1 ms
+ passedmulti_props_with_post_filter
+
+ -
+
+
2 ms
+ passedmulti_props_can_be_in_the_middle
+
+ -
+
+
3 ms
+ passedmulti_props_can_be_required
+
+ -
+
+
1 ms
+ passednonexistent_non_leaf_multi_props_ignored
+
+
+
+ -
+
+
11 ms
+ OptionsTest
+
+ -
+
+
0 ms
+ passeda_definite_path_is_not_returned_as_list_by_default
+
+ -
+
+
1 ms
+ passedwhen_property_is_required_exception_is_thrown_2
+
+ -
+
+
2 ms
+ passeda_definite_path_can_be_returned_as_list
+
+ -
+
+
1 ms
+ passedisbn_is_defaulted_when_option_is_provided
+
+ -
+
+
1 ms
+ passeda_leafs_is_not_defaulted_to_null
+
+ -
+
+
1 ms
+ passeda_leafs_can_be_defaulted_to_null
+
+ -
+
+
0 ms
+ passeda_path_evaluation_is_returned_as_VALUE_by_default
+
+ -
+
+
1 ms
+ passedan_indefinite_path_can_be_returned_as_list
+
+ -
+
+
1 ms
+ passedwhen_property_is_required_exception_is_thrown
+
+ -
+
+
2 ms
+ passedissue_suppress_exceptions_does_not_break_indefinite_evaluation
+
+ -
+
+
0 ms
+ passeda_path_evaluation_can_be_returned_as_PATH_LIST
+
+ -
+
+
1 ms
+ passedmulti_properties_are_merged_by_default
+
+
+
+ -
+
+
27 ms
+ PathCompilerTest
+
+ -
+
+
2 ms
+ ignoreda_square_bracket_may_not_follow_a_period
+
+ -
+
+
0 ms
+ passeda_bracket_notation_property_token_can_be_compiled
+
+ -
+
+
1 ms
+ passedan_inline_criteria_can_be_parsed
+
+ -
+
+
0 ms
+ passeda_function_can_be_compiled
+
+ -
+
+
2 ms
+ passeda_placeholder_criteria_can_be_parsed
+
+ -
+
+
1 ms
+ passeda_property_may_not_contain_blanks
+
+ -
+
+
0 ms
+ passedproperty_must_be_separated_by_commas
+
+ -
+
+
1 ms
+ passedan_array_index_path_can_be_compiled
+
+ -
+
+
0 ms
+ passeda_path_may_not_end_with_period_2
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_and_in_regex
+
+ -
+
+
1 ms
+ passeda_root_path_must_be_followed_by_period_or_bracket
+
+ -
+
+
0 ms
+ passeda_path_may_not_end_with_period
+
+ -
+
+
0 ms
+ passeda_path_may_not_end_with_scan_2
+
+ -
+
+
1 ms
+ passedissue_predicate_brackets_must_change_priorities
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_single_quotes_escaped
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_bracket_in_regex
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_double_quotes
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_escaped_backslash_in_prop
+
+ -
+
+
1 ms
+ passeda_multi_property_token_can_be_compiled
+
+ -
+
+
1 ms
+ passedan_array_slice_path_can_be_compiled
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_square_bracket_in_prop
+
+ -
+
+
1 ms
+ passeda_root_path_can_be_compiled
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_and_in_prop
+
+ -
+
+
1 ms
+ passedtrailing_comma_after_list_is_not_accepted
+
+ -
+
+
0 ms
+ ignoreda_path_must_start_with_$_or_at
+
+ -
+
+
0 ms
+ passeda_property_chain_can_be_compiled
+
+ -
+
+
1 ms
+ passeda_wildcard_can_be_compiled
+
+ -
+
+
2 ms
+ passedissue_predicate_or_has_lower_priority_than_and
+
+ -
+
+
1 ms
+ passeda_wildcard_can_follow_a_property
+
+ -
+
+
0 ms
+ passeda_property_token_can_be_compiled
+
+ -
+
+
1 ms
+ passeda_path_may_not_end_with_scan
+
+ -
+
+
1 ms
+ passedissue_predicate_can_have_single_quotes
+
+ -
+
+
1 ms
+ passedarray_indexes_must_be_separated_by_commas
+
+ -
+
+
0 ms
+ passedaccept_only_a_single_comma_between_indexes
+
+ -
+
+
0 ms
+ passeda_scan_token_can_be_parsed
+
+
+
+ -
+
+
4 ms
+ PredicateTest
+
+ -
+
+
4 ms
+ passedpredicates_filters_can_be_applied
+
+
+
+ -
+
+
13 ms
+ ProviderInTest
+
+ -
+
+
2 ms
+ passedtestJsonPathQuotesJsonOrg
+
+ -
+
+
1 ms
+ passedtestJsonPathQuotesJacksonJsonNode
+
+ -
+
+
1 ms
+ passedtestJsonPathQuotesJsonSmart
+
+ -
+
+
1 ms
+ passedtestJsonPathQuotesGson
+
+ -
+
+
2 ms
+ passedtestJsonPathQuotesJackson
+
+ -
+
+
6 ms
+ passedtestJsonPathQuotesJakarta
+
+
+
+ -
+
+
9 ms
+ ReadContextTest
+
+ -
+
+
9 ms
+ passedjson_can_be_fetched_as_string
+
+
+
+ -
+
+
6 ms
+ ReturnTypeTest
+
+ -
+
+
1 ms
+ passedassert_arrays_can_be_read
+
+ -
+
+
1 ms
+ passedassert_strings_can_be_read
+
+ -
+
+
1 ms
+ passedclass_cast_exception_is_thrown_when_return_type_is_not_expected
+
+ -
+
+
0 ms
+ passedassert_ints_can_be_read
+
+ -
+
+
0 ms
+ passedassert_longs_can_be_read
+
+ -
+
+
1 ms
+ passedassert_null_values_can_be_read
+
+ -
+
+
0 ms
+ passedassert_maps_can_be_read
+
+ -
+
+
1 ms
+ passeda_path_evaluation_can_be_returned_as_PATH_LIST
+
+ -
+
+
1 ms
+ passedassert_boolean_values_can_be_read
+
+
+
+ -
+
+
4 ms
+ ScientificNotationTest
+
+ -
+
+
2 ms
+ passedtestScientificNotation
+
+ -
+
+
2 ms
+ passedtestScientificNotation_lt_gt
+
+
+
+ -
+
+
28 ms
+ TapestryJsonProviderTest
+
+ -
+
+
25 ms
+ passedresult_can_be_mapped_to_object
+
+ -
+
+
1 ms
+ passeda_filter_can_be_applied
+
+ -
+
+
1 ms
+ passedan_object_can_be_read
+
+ -
+
+
1 ms
+ passeda_property_can_be_read
+
+
+
+ -
+
+
1 ms
+ TestSuppressExceptions
+
+ -
+
+
1 ms
+ passedtestSuppressExceptionsIsRespectedPath
+
+ -
+
+
0 ms
+ passedtestSuppressExceptionsIsRespected
+
+
+
+ -
+
+
57 ms
+ WriteTest
+
+ -
+
+
1 ms
+ passedadd_to_array_on_object
+
+ -
+
+
1 ms
+ passeditem_can_be_added_to_root_array
+
+ -
+
+
1 ms
+ passedkeys_in_root_containing_map_can_be_renamed
+
+ -
+
+
1 ms
+ passedroot_object_can_not_be_updated
+
+ -
+
+
1 ms
+ passedmap_array_items_can_be_renamed
+
+ -
+
+
1 ms
+ passedsingle_match_value_can_be_mapped
+
+ -
+
+
3 ms
+ passedmulti_prop_update_not_all_defined
+
+ -
+
+
1 ms
+ passedan_array_can_be_updated
+
+ -
+
+
1 ms
+ passedadd_to_object
+
+ -
+
+
2 ms
+ passedan_array_child_property_can_be_updated
+
+ -
+
+
1 ms
+ passeda_path_can_be_renamed
+
+ -
+
+
1 ms
+ passedkey_val_can_be_added_to_root_object
+
+ -
+
+
6 ms
+ passeda_path_can_be_deleted
+
+ -
+
+
2 ms
+ passedoperations_can_chained
+
+ -
+
+
1 ms
+ passedan_root_property_can_be_updated
+
+ -
+
+
1 ms
+ passednon_map_array_items_cannot_be_renamed
+
+ -
+
+
1 ms
+ passedan_array_criteria_can_be_updated
+
+ -
+
+
5 ms
+ passedobject_can_be_mapped
+
+ -
+
+
3 ms
+ passedrootCannotBeMapped
+
+ -
+
+
1 ms
+ passednon_existent_key_rename_not_allowed
+
+ -
+
+
1 ms
+ passedan_deep_scan_can_update
+
+ -
+
+
1 ms
+ passedadd_to_array
+
+ -
+
+
1 ms
+ passedmulti_match_path_can_be_mapped
+
+ -
+
+
1 ms
+ passedmultiple_properties_cannot_be_renamed
+
+ -
+
+
1 ms
+ passedan_array_slice_can_be_updated
+
+ -
+
+
0 ms
+ passedmulti_prop_delete
+
+ -
+
+
10 ms
+ passedan_array_criteria_with_multiple_results_can_be_deleted
+
+ -
+
+
1 ms
+ passedadd_to_object_on_array
+
+ -
+
+
1 ms
+ passedan_array_index_can_be_updated
+
+ -
+
+
1 ms
+ passedan_array_criteria_can_be_deleted
+
+ -
+
+
3 ms
+ passedmulti_prop_update
+
+ -
+
+
1 ms
+ passedan_filter_can_update
+
+
+
+ -
+
+
13 ms
+ issue_613
+
+ -
+
+
10 ms
+ passedissue_613_lt_lte_test
+
+ -
+
+
2 ms
+ passedissue_613_gt_gte_test
+
+ -
+
+
1 ms
+ passedissue_613_eq_ne_test
+
+
+
+ -
+
+
1 ms
+ JsonContextTest
+
+ -
+
+
1 ms
+ passedcached_path_with_predicates
+
+
+
+ -
+
+
30 ms
+ UtilsTest
+
+ -
+
+
19 ms
+ passedtestNotNullThrow
+
+ -
+
+
0 ms
+ passedtestNotEmpty
+
+ -
+
+
1 ms
+ passedtestNotEmptyThrowNull
+
+ -
+
+
1 ms
+ passedtestHex
+
+ -
+
+
1 ms
+ passedtestJoin
+
+ -
+
+
0 ms
+ passedtestToString
+
+ -
+
+
1 ms
+ passedtestUnescapeThrow
+
+ -
+
+
1 ms
+ passedtestOnlyOneIsTrueNonThrow
+
+ -
+
+
0 ms
+ passedtestOnlyOneIsTrueThrow1
+
+ -
+
+
1 ms
+ passedtestOnlyOneIsTrueThrow2
+
+ -
+
+
1 ms
+ passedtestUnescape
+
+ -
+
+
1 ms
+ passedtestCloseQuietly
+
+ -
+
+
1 ms
+ passedtestConcat
+
+ -
+
+
0 ms
+ passedtestEscape
+
+ -
+
+
0 ms
+ passedtestIsTrue
+
+ -
+
+
1 ms
+ passedtestIndexOf
+
+ -
+
+
1 ms
+ passedtestNotEmptyThrowLength0
+
+ -
+
+
0 ms
+ passedtestIsEmpty
+
+ -
+
+
0 ms
+ passedtestNotNull
+
+ -
+
+
0 ms
+ passedtestIsTrueThrow
+
+
+
+ -
+
+
2 ms
+ PatternFlagTest
+
+ -
+
+
1 ms
+ [0]
+
+ -
+
+
1 ms
+ passedtestParseFlags[0]
+
+
+
+ -
+
+
0 ms
+ [1]
+
+ -
+
+
0 ms
+ passedtestParseFlags[1]
+
+
+
+ -
+
+
0 ms
+ [2]
+
+ -
+
+
0 ms
+ passedtestParseFlags[2]
+
+
+
+ -
+
+
0 ms
+ [3]
+
+ -
+
+
0 ms
+ passedtestParseFlags[3]
+
+
+
+ -
+
+
0 ms
+ [4]
+
+ -
+
+
0 ms
+ passedtestParseFlags[4]
+
+
+
+ -
+
+
0 ms
+ [5]
+
+ -
+
+
0 ms
+ passedtestParseFlags[5]
+
+
+
+ -
+
+
0 ms
+ [6]
+
+ -
+
+
0 ms
+ passedtestParseFlags[6]
+
+
+
+ -
+
+
0 ms
+ [7]
+
+ -
+
+
0 ms
+ passedtestParseFlags[7]
+
+
+
+ -
+
+
0 ms
+ [8]
+
+ -
+
+
0 ms
+ passedtestParseFlags[8]
+
+
+
+ -
+
+
0 ms
+ [9]
+
+ -
+
+
0 ms
+ passedtestParseFlags[9]
+
+
+
+ -
+
+
0 ms
+ [10]
+
+ -
+
+
0 ms
+ passedtestParseFlags[10]
+
+
+
+ -
+
+
1 ms
+ [11]
+
+ -
+
+
1 ms
+ passedtestParseFlags[11]
+
+
+
+
+
+ -
+
+
17 ms
+ RegexpEvaluatorTest
+
+ -
+
+
2 ms
+ [Regexp /true|false/ for 'true' node should evaluate to true]
+
+ -
+
+
2 ms
+ passedshould_evaluate_regular_expression[Regexp /true|false/ for 'true' node should evaluate to true]
+
+
+
+ -
+
+
2 ms
+ [Regexp /9.*9/ for 9979 node should evaluate to true]
+
+ -
+
+
2 ms
+ passedshould_evaluate_regular_expression[Regexp /9.*9/ for 9979 node should evaluate to true]
+
+
+
+ -
+
+
1 ms
+ [Regexp /fa.*se/ for false node should evaluate to true]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /fa.*se/ for false node should evaluate to true]
+
+
+
+ -
+
+
0 ms
+ [Regexp /Eval.*or/ for java.lang.String node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /Eval.*or/ for java.lang.String node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /JsonNode/ for { 'some': 'JsonNode' } node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /JsonNode/ for { 'some': 'JsonNode' } node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /PathNode/ for $ node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /PathNode/ for $ node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /Undefined/ for com.jayway.jsonpath.internal.filter.ValueNodes$UndefinedNode@76a36b71 node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /Undefined/ for com.jayway.jsonpath.internal.filter.ValueNodes$UndefinedNode@76a36b71 node should evaluate to false]
+
+
+
+ -
+
+
1 ms
+ [Regexp /NullNode/ for null node should evaluate to false]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /NullNode/ for null node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /test/i for 'tEsT' node should evaluate to true]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /test/i for 'tEsT' node should evaluate to true]
+
+
+
+ -
+
+
0 ms
+ [Regexp /test/ for 'tEsT' node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /test/ for 'tEsT' node should evaluate to false]
+
+
+
+ -
+
+
1 ms
+ [Regexp /�/ui for '\u00FE' node should evaluate to true]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /�/ui for '\u00FE' node should evaluate to true]
+
+
+
+ -
+
+
0 ms
+ [Regexp /�/ for '\u00FE' node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /�/ for '\u00FE' node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /�/i for '\u00FE' node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /�/i for '\u00FE' node should evaluate to false]
+
+
+
+ -
+
+
1 ms
+ [Regexp /test# code/ for 'test' node should evaluate to false]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /test# code/ for 'test' node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /test# code/x for 'test' node should evaluate to true]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /test# code/x for 'test' node should evaluate to true]
+
+
+
+ -
+
+
3 ms
+ [Regexp /.*test.*/d for 'my\rtest' node should evaluate to true]
+
+ -
+
+
3 ms
+ passedshould_evaluate_regular_expression[Regexp /.*test.*/d for 'my\rtest' node should evaluate to true]
+
+
+
+ -
+
+
0 ms
+ [Regexp /.*test.*/ for 'my\rtest' node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /.*test.*/ for 'my\rtest' node should evaluate to false]
+
+
+
+ -
+
+
0 ms
+ [Regexp /.*tEst.*/is for 'test\ntest' node should evaluate to true]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /.*tEst.*/is for 'test\ntest' node should evaluate to true]
+
+
+
+ -
+
+
0 ms
+ [Regexp /.*tEst.*/i for 'test\ntest' node should evaluate to false]
+
+ -
+
+
0 ms
+ passedshould_evaluate_regular_expression[Regexp /.*tEst.*/i for 'test\ntest' node should evaluate to false]
+
+
+
+ -
+
+
4 ms
+ [Regexp /^\w+$/U for '\u00FE' node should evaluate to true]
+
+ -
+
+
4 ms
+ passedshould_evaluate_regular_expression[Regexp /^\w+$/U for '\u00FE' node should evaluate to true]
+
+
+
+ -
+
+
1 ms
+ [Regexp /^\w+$/ for '\u00FE' node should evaluate to false]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /^\w+$/ for '\u00FE' node should evaluate to false]
+
+
+
+ -
+
+
1 ms
+ [Regexp /^test$\ntest$/m for 'test\ntest' node should evaluate to true]
+
+ -
+
+
1 ms
+ passedshould_evaluate_regular_expression[Regexp /^test$\ntest$/m for 'test\ntest' node should evaluate to true]
+
+
+
+
+
+ -
+
+
0 ms
+ RelationalOperatorTest
+
+ -
+
+
0 ms
+ passedtestFromStringWithTurkishLocale
+
+ -
+
+
0 ms
+ passedtestFromStringWithEnglishLocale
+
+
+
+ -
+
+
151 ms
+ Issue191
+
+ -
+
+
44 ms
+ passedtestResultSetNumericComputationTail
+
+ -
+
+
35 ms
+ passedtestResultSetNumericComputationRecursiveReplacement
+
+ -
+
+
17 ms
+ passedtestConcatWithNumericValueAsString
+
+ -
+
+
17 ms
+ passedtestResultSetNumericComputation
+
+ -
+
+
15 ms
+ passedtestConcatResultSet
+
+ -
+
+
23 ms
+ passedtestMultipleResultSetSums
+
+
+
+ -
+
+
2 ms
+ Issue234
+
+ -
+
+
2 ms
+ passedtestIssue234
+
+
+
+ -
+
+
2 ms
+ Issue273
+
+ -
+
+
1 ms
+ passedtestGetPropertyFromObject
+
+ -
+
+
1 ms
+ passedtestGetPropertyFromArray
+
+
+
+ -
+
+
4 ms
+ Issue612
+
+ -
+
+
2 ms
+ passedtest
+
+ -
+
+
2 ms
+ passedtest2
+
+
+
+ -
+
+
2 ms
+ Issue629
+
+ -
+
+
1 ms
+ passedtestUncloseParenthesisWithNestedCall
+
+ -
+
+
1 ms
+ passedtestUncloseParenthesis
+
+
+
+ -
+
+
4 ms
+ Issue680
+
+ -
+
+
1 ms
+ passedtestIssue680concat_2
+
+ -
+
+
2 ms
+ passedtestIssue680min
+
+ -
+
+
1 ms
+ passedtestIssue680concat
+
+
+
+ -
+
+
3 ms
+ JSONEntityPathFunctionTest
+
+ -
+
+
1 ms
+ passedtestPredicateWithFunctionCallSingleMatch
+
+ -
+
+
0 ms
+ passedtestLengthOfTextArray
+
+ -
+
+
1 ms
+ passedtestLengthOfStructure
+
+ -
+
+
1 ms
+ passedtestPredicateWithFunctionCallTwoMatches
+
+ -
+
+
0 ms
+ passedtestLengthOfNumberArray
+
+
+
+ -
+
+
23 ms
+ KeySetFunctionTest
+
+ -
+
+
23 ms
+ passedtestKeySet
+
+
+
+ -
+
+
73 ms
+ NestedFunctionTest
+
+ -
+
+
8 ms
+ [0]
+
+ -
+
+
2 ms
+ passedtestAppendNumber[0]
+
+ -
+
+
1 ms
+ passedtestArrayAverageFunctionCallWithParameters[0]
+
+ -
+
+
1 ms
+ passedtestParameterAverageFunctionCall[0]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCall[0]
+
+ -
+
+
1 ms
+ passedtestSimpleLiteralArgument[0]
+
+ -
+
+
0 ms
+ passedtestErrantCloseBracketNegative[0]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[0]
+
+ -
+
+
0 ms
+ passedtestErrantCloseBraceNegative[0]
+
+ -
+
+
1 ms
+ passedtestStringConcat[0]
+
+ -
+
+
0 ms
+ passedtestAppendTextAndNumberThenSum[0]
+
+ -
+
+
1 ms
+ passedtestStringConcatWithJSONParameter[0]
+
+ -
+
+
0 ms
+ passedtestUnclosedFunctionCallNegative[0]
+
+ -
+
+
0 ms
+ passedtestStringAndNumberConcat[0]
+
+
+
+ -
+
+
11 ms
+ [1]
+
+ -
+
+
1 ms
+ passedtestAppendNumber[1]
+
+ -
+
+
1 ms
+ passedtestArrayAverageFunctionCallWithParameters[1]
+
+ -
+
+
2 ms
+ passedtestParameterAverageFunctionCall[1]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCall[1]
+
+ -
+
+
1 ms
+ passedtestSimpleLiteralArgument[1]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBracketNegative[1]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[1]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBraceNegative[1]
+
+ -
+
+
0 ms
+ passedtestStringConcat[1]
+
+ -
+
+
1 ms
+ passedtestAppendTextAndNumberThenSum[1]
+
+ -
+
+
0 ms
+ passedtestStringConcatWithJSONParameter[1]
+
+ -
+
+
1 ms
+ passedtestUnclosedFunctionCallNegative[1]
+
+ -
+
+
1 ms
+ passedtestStringAndNumberConcat[1]
+
+
+
+ -
+
+
12 ms
+ [2]
+
+ -
+
+
1 ms
+ passedtestAppendNumber[2]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCallWithParameters[2]
+
+ -
+
+
0 ms
+ passedtestParameterAverageFunctionCall[2]
+
+ -
+
+
1 ms
+ passedtestArrayAverageFunctionCall[2]
+
+ -
+
+
1 ms
+ passedtestSimpleLiteralArgument[2]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBracketNegative[2]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[2]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBraceNegative[2]
+
+ -
+
+
1 ms
+ passedtestStringConcat[2]
+
+ -
+
+
1 ms
+ passedtestAppendTextAndNumberThenSum[2]
+
+ -
+
+
2 ms
+ passedtestStringConcatWithJSONParameter[2]
+
+ -
+
+
1 ms
+ passedtestUnclosedFunctionCallNegative[2]
+
+ -
+
+
1 ms
+ passedtestStringAndNumberConcat[2]
+
+
+
+ -
+
+
24 ms
+ [3]
+
+ -
+
+
6 ms
+ passedtestAppendNumber[3]
+
+ -
+
+
2 ms
+ passedtestArrayAverageFunctionCallWithParameters[3]
+
+ -
+
+
3 ms
+ passedtestParameterAverageFunctionCall[3]
+
+ -
+
+
2 ms
+ passedtestArrayAverageFunctionCall[3]
+
+ -
+
+
2 ms
+ passedtestSimpleLiteralArgument[3]
+
+ -
+
+
2 ms
+ passedtestErrantCloseBracketNegative[3]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[3]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBraceNegative[3]
+
+ -
+
+
1 ms
+ passedtestStringConcat[3]
+
+ -
+
+
1 ms
+ passedtestAppendTextAndNumberThenSum[3]
+
+ -
+
+
1 ms
+ passedtestStringConcatWithJSONParameter[3]
+
+ -
+
+
0 ms
+ passedtestUnclosedFunctionCallNegative[3]
+
+ -
+
+
2 ms
+ passedtestStringAndNumberConcat[3]
+
+
+
+ -
+
+
5 ms
+ [4]
+
+ -
+
+
1 ms
+ passedtestAppendNumber[4]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCallWithParameters[4]
+
+ -
+
+
0 ms
+ passedtestParameterAverageFunctionCall[4]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCall[4]
+
+ -
+
+
1 ms
+ passedtestSimpleLiteralArgument[4]
+
+ -
+
+
0 ms
+ passedtestErrantCloseBracketNegative[4]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[4]
+
+ -
+
+
0 ms
+ passedtestErrantCloseBraceNegative[4]
+
+ -
+
+
0 ms
+ passedtestStringConcat[4]
+
+ -
+
+
1 ms
+ passedtestAppendTextAndNumberThenSum[4]
+
+ -
+
+
1 ms
+ passedtestStringConcatWithJSONParameter[4]
+
+ -
+
+
0 ms
+ passedtestUnclosedFunctionCallNegative[4]
+
+ -
+
+
0 ms
+ passedtestStringAndNumberConcat[4]
+
+
+
+ -
+
+
13 ms
+ [5]
+
+ -
+
+
1 ms
+ passedtestAppendNumber[5]
+
+ -
+
+
1 ms
+ passedtestArrayAverageFunctionCallWithParameters[5]
+
+ -
+
+
1 ms
+ passedtestParameterAverageFunctionCall[5]
+
+ -
+
+
0 ms
+ passedtestArrayAverageFunctionCall[5]
+
+ -
+
+
2 ms
+ passedtestSimpleLiteralArgument[5]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBracketNegative[5]
+
+ -
+
+
1 ms
+ passedtestJsonInnerArgumentArray[5]
+
+ -
+
+
1 ms
+ passedtestErrantCloseBraceNegative[5]
+
+ -
+
+
1 ms
+ passedtestStringConcat[5]
+
+ -
+
+
1 ms
+ passedtestAppendTextAndNumberThenSum[5]
+
+ -
+
+
1 ms
+ passedtestStringConcatWithJSONParameter[5]
+
+ -
+
+
0 ms
+ passedtestUnclosedFunctionCallNegative[5]
+
+ -
+
+
2 ms
+ passedtestStringAndNumberConcat[5]
+
+
+
+
+
+ -
+
+
48 ms
+ NumericPathFunctionTest
+
+ -
+
+
5 ms
+ [0]
+
+ -
+
+
1 ms
+ passedtestAverageOfEmptyListNegative[0]
+
+ -
+
+
0 ms
+ passedtestMinOfDouble[0]
+
+ -
+
+
0 ms
+ passedtestMaxOfDouble[0]
+
+ -
+
+
1 ms
+ passedtestMaxOfEmptyListNegative[0]
+
+ -
+
+
0 ms
+ passedtestStddevOfEmptyListNegative[0]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[0]
+
+ -
+
+
0 ms
+ passedtestAverageOfDoubles[0]
+
+ -
+
+
0 ms
+ passedtestStdDevOfDouble[0]
+
+ -
+
+
1 ms
+ passedtestSumOfEmptyListNegative[0]
+
+ -
+
+
1 ms
+ passedtestMinOfEmptyListNegative[0]
+
+
+
+ -
+
+
10 ms
+ [1]
+
+ -
+
+
1 ms
+ passedtestAverageOfEmptyListNegative[1]
+
+ -
+
+
0 ms
+ passedtestMinOfDouble[1]
+
+ -
+
+
1 ms
+ passedtestMaxOfDouble[1]
+
+ -
+
+
1 ms
+ passedtestMaxOfEmptyListNegative[1]
+
+ -
+
+
2 ms
+ passedtestStddevOfEmptyListNegative[1]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[1]
+
+ -
+
+
1 ms
+ passedtestAverageOfDoubles[1]
+
+ -
+
+
1 ms
+ passedtestStdDevOfDouble[1]
+
+ -
+
+
1 ms
+ passedtestSumOfEmptyListNegative[1]
+
+ -
+
+
1 ms
+ passedtestMinOfEmptyListNegative[1]
+
+
+
+ -
+
+
5 ms
+ [2]
+
+ -
+
+
0 ms
+ passedtestAverageOfEmptyListNegative[2]
+
+ -
+
+
0 ms
+ passedtestMinOfDouble[2]
+
+ -
+
+
1 ms
+ passedtestMaxOfDouble[2]
+
+ -
+
+
1 ms
+ passedtestMaxOfEmptyListNegative[2]
+
+ -
+
+
0 ms
+ passedtestStddevOfEmptyListNegative[2]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[2]
+
+ -
+
+
1 ms
+ passedtestAverageOfDoubles[2]
+
+ -
+
+
0 ms
+ passedtestStdDevOfDouble[2]
+
+ -
+
+
0 ms
+ passedtestSumOfEmptyListNegative[2]
+
+ -
+
+
1 ms
+ passedtestMinOfEmptyListNegative[2]
+
+
+
+ -
+
+
7 ms
+ [3]
+
+ -
+
+
1 ms
+ passedtestAverageOfEmptyListNegative[3]
+
+ -
+
+
1 ms
+ passedtestMinOfDouble[3]
+
+ -
+
+
0 ms
+ passedtestMaxOfDouble[3]
+
+ -
+
+
0 ms
+ passedtestMaxOfEmptyListNegative[3]
+
+ -
+
+
1 ms
+ passedtestStddevOfEmptyListNegative[3]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[3]
+
+ -
+
+
1 ms
+ passedtestAverageOfDoubles[3]
+
+ -
+
+
1 ms
+ passedtestStdDevOfDouble[3]
+
+ -
+
+
1 ms
+ passedtestSumOfEmptyListNegative[3]
+
+ -
+
+
0 ms
+ passedtestMinOfEmptyListNegative[3]
+
+
+
+ -
+
+
9 ms
+ [4]
+
+ -
+
+
0 ms
+ passedtestAverageOfEmptyListNegative[4]
+
+ -
+
+
1 ms
+ passedtestMinOfDouble[4]
+
+ -
+
+
1 ms
+ passedtestMaxOfDouble[4]
+
+ -
+
+
1 ms
+ passedtestMaxOfEmptyListNegative[4]
+
+ -
+
+
0 ms
+ passedtestStddevOfEmptyListNegative[4]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[4]
+
+ -
+
+
1 ms
+ passedtestAverageOfDoubles[4]
+
+ -
+
+
1 ms
+ passedtestStdDevOfDouble[4]
+
+ -
+
+
1 ms
+ passedtestSumOfEmptyListNegative[4]
+
+ -
+
+
2 ms
+ passedtestMinOfEmptyListNegative[4]
+
+
+
+ -
+
+
12 ms
+ [5]
+
+ -
+
+
1 ms
+ passedtestAverageOfEmptyListNegative[5]
+
+ -
+
+
1 ms
+ passedtestMinOfDouble[5]
+
+ -
+
+
1 ms
+ passedtestMaxOfDouble[5]
+
+ -
+
+
1 ms
+ passedtestMaxOfEmptyListNegative[5]
+
+ -
+
+
2 ms
+ passedtestStddevOfEmptyListNegative[5]
+
+ -
+
+
1 ms
+ passedtestSumOfDouble[5]
+
+ -
+
+
1 ms
+ passedtestAverageOfDoubles[5]
+
+ -
+
+
1 ms
+ passedtestStdDevOfDouble[5]
+
+ -
+
+
2 ms
+ passedtestSumOfEmptyListNegative[5]
+
+ -
+
+
1 ms
+ passedtestMinOfEmptyListNegative[5]
+
+
+
+
+
+ -
+
+
9 ms
+ SequentialPathFunctionTest
+
+ -
+
+
3 ms
+ passedtestFirstOfText
+
+ -
+
+
1 ms
+ passedtestFirstOfNumbers
+
+ -
+
+
1 ms
+ passedtestLastOfNumbers
+
+ -
+
+
2 ms
+ passedtestIndexOfText
+
+ -
+
+
2 ms
+ passedtestIndexOfNumbers
+
+ -
+
+
0 ms
+ passedtestLastOfText
+
+
+
+ -
+
+
0 ms
+ PathTokenTest
+
+ -
+
+
0 ms
+ passedis_upstream_definite_in_complex_case
+
+ -
+
+
0 ms
+ passedis_upstream_definite_in_simple_case
+
+
+
+ -
+
+
18 ms
+ ArraySlicingTest
+
+ -
+
+
15 ms
+ passedget_between_index_2
+
+ -
+
+
1 ms
+ passedget_between_index_3
+
+ -
+
+
0 ms
+ passedget_by_position
+
+ -
+
+
1 ms
+ passedget_from_tail
+
+ -
+
+
1 ms
+ passedget_between_index
+
+ -
+
+
0 ms
+ passedget_from_index
+
+ -
+
+
0 ms
+ passedget_from_tail_index
+
+ -
+
+
0 ms
+ passedget_indexes
+
+ -
+
+
0 ms
+ passedget_between_index_out_of_bounds
+
+
+
+ -
+
+
15 ms
+ ComplianceTest
+
+ -
+
+
10 ms
+ passedtest_four
+
+ -
+
+
0 ms
+ passedtest_one
+
+ -
+
+
1 ms
+ passedtest_two
+
+ -
+
+
4 ms
+ passedtest_three
+
+
+
+ -
+
+
23 ms
+ FilterTest
+
+ -
+
+
1 ms
+ passedlte_filters_evaluates
+
+ -
+
+
1 ms
+ passedfilters_can_be_combined
+
+ -
+
+
2 ms
+ passedarrays_of_objects_can_be_filtered
+
+ -
+
+
1 ms
+ passedcombine_filter_deep_criteria
+
+ -
+
+
0 ms
+ passedne_filters_evaluates
+
+ -
+
+
1 ms
+ passednin_filters_evaluates
+
+ -
+
+
1 ms
+ passednot_empty_filter_evaluates
+
+ -
+
+
1 ms
+ passedlt_filters_evaluates
+
+ -
+
+
0 ms
+ passedcontains_filter_evaluates_on_string
+
+ -
+
+
0 ms
+ passedcontains_filter_evaluates_on_array
+
+ -
+
+
1 ms
+ passedsize_filters_evaluates
+
+ -
+
+
3 ms
+ passedarrays_of_maps_can_be_filtered
+
+ -
+
+
1 ms
+ passedgte_filters_evaluates
+
+ -
+
+
2 ms
+ passedall_filters_evaluates
+
+ -
+
+
1 ms
+ passedfilters_can_contain_json_path_expressions
+
+ -
+
+
2 ms
+ passedin_filters_evaluates
+
+ -
+
+
1 ms
+ passedexists_filters_evaluates
+
+ -
+
+
1 ms
+ passedpattern_filters_evaluates
+
+ -
+
+
1 ms
+ passedgt_filters_evaluates
+
+ -
+
+
2 ms
+ passedtype_filters_evaluates
+
+
+
+ -
+
+
65 ms
+ IssuesTest
+
+ -
+
+
4 ms
+ passedissue_28_int
+
+ -
+
+
0 ms
+ passeda_test
+
+ -
+
+
0 ms
+ passedarray_root
+
+ -
+
+
1 ms
+ passedfull_ones_can_be_filtered
+
+ -
+
+
1 ms
+ passedusing_square_bracket_literal_path
+
+ -
+
+
1 ms
+ passedgithub_89
+
+ -
+
+
3 ms
+ passedissue_129
+
+ -
+
+
1 ms
+ passedissue_11b
+
+ -
+
+
6 ms
+ passedissue_131
+
+ -
+
+
1 ms
+ passedissue_143
+
+ -
+
+
1 ms
+ passedissue_151
+
+ -
+
+
3 ms
+ passedissue_170
+
+ -
+
+
1 ms
+ passedissue_171
+
+ -
+
+
0 ms
+ passedissue_22b
+
+ -
+
+
1 ms
+ passedissue_22c
+
+ -
+
+
1 ms
+ passedissue_309
+
+ -
+
+
3 ms
+ passedissue_378
+
+ -
+
+
1 ms
+ passedissue_11
+
+ -
+
+
1 ms
+ passedissue_15
+
+ -
+
+
0 ms
+ passedissue_22
+
+ -
+
+
3 ms
+ passedissue_24
+
+ -
+
+
0 ms
+ passedissue_26
+
+ -
+
+
1 ms
+ passedissue_30
+
+ -
+
+
0 ms
+ passedissue_32
+
+ -
+
+
1 ms
+ passedissue_33
+
+ -
+
+
1 ms
+ passedissue_36
+
+ -
+
+
0 ms
+ passedissue_37
+
+ -
+
+
0 ms
+ passedissue_38
+
+ -
+
+
1 ms
+ passedissue_39
+
+ -
+
+
0 ms
+ passedissue_42
+
+ -
+
+
1 ms
+ passedissue_43
+
+ -
+
+
0 ms
+ passedissue_45
+
+ -
+
+
4 ms
+ passedissue_46
+
+ -
+
+
1 ms
+ passedissue_60
+
+ -
+
+
1 ms
+ passedissue_71
+
+ -
+
+
1 ms
+ passedissue_76
+
+ -
+
+
2 ms
+ passedissue_79
+
+ -
+
+
1 ms
+ passedissue_90
+
+ -
+
+
3 ms
+ passedissue_97
+
+ -
+
+
1 ms
+ passedissue_99
+
+ -
+
+
1 ms
+ passedissue_29_a
+
+ -
+
+
1 ms
+ passedissue_29_b
+
+ -
+
+
3 ms
+ passedissue_94_1
+
+ -
+
+
0 ms
+ passedissue_94_2
+
+ -
+
+
1 ms
+ passedissue_28_boolean
+
+ -
+
+
0 ms
+ passedissue_114_a
+
+ -
+
+
1 ms
+ passedissue_114_b
+
+ -
+
+
1 ms
+ passedissue_114_c
+
+ -
+
+
1 ms
+ passedissue_114_d
+
+ -
+
+
1 ms
+ passedissue_131_2
+
+ -
+
+
1 ms
+ passedissue_131_3
+
+ -
+
+
1 ms
+ passedissue_620_1
+
+ -
+
+
0 ms
+ passedissue_620_2
+
+ -
+
+
1 ms
+ passedstack_overflow_question_1
+
+ -
+
+
0 ms
+ passedissue_28_string
+
+ -
+
+
0 ms
+ passedissue_x
+
+
+
+ -
+
+
25 ms
+ JsonPathTest
+
+ -
+
+
1 ms
+ passedall_books_with_category_reference
+
+ -
+
+
1 ms
+ passedread_store_book_wildcard
+
+ -
+
+
0 ms
+ passednull_object_in_path
+
+ -
+
+
0 ms
+ passeddot_in_predicate_works
+
+ -
+
+
0 ms
+ passedfilter_an_array_on_index
+
+ -
+
+
1 ms
+ passedbracket_notation_can_be_used_in_path
+
+ -
+
+
2 ms
+ passedread_store_book_filter_by_isbn
+
+ -
+
+
1 ms
+ passedread_store_book_pull_first_2
+
+ -
+
+
0 ms
+ passedall_store_properties
+
+ -
+
+
1 ms
+ passeddots_in_predicate_works
+
+ -
+
+
0 ms
+ passedmissing_prop
+
+ -
+
+
0 ms
+ passedall_prices_in_store
+
+ -
+
+
1 ms
+ passedread_store_book_author
+
+ -
+
+
0 ms
+ passedfilter_an_array
+
+ -
+
+
1 ms
+ passedread_store_book_1
+
+ -
+
+
1 ms
+ passedinvalid_paths_throw_invalid_path_exception
+
+ -
+
+
1 ms
+ passedall_members_of_all_documents
+
+ -
+
+
7 ms
+ passedexists_filter_with_nested_path
+
+ -
+
+
2 ms
+ passedaccess_index_out_of_bounds_does_not_throw_exception
+
+ -
+
+
0 ms
+ passedread_path_with_colon
+
+ -
+
+
1 ms
+ passedall_books
+
+ -
+
+
0 ms
+ passedread_store_book_index_0_and_1
+
+ -
+
+
0 ms
+ passedprevent_stack_overflow_error_when_unclosed_property
+
+ -
+
+
0 ms
+ passedbracket_notation_with_dots
+
+ -
+
+
1 ms
+ passedarray_start_expands
+
+ -
+
+
1 ms
+ passedall_authors
+
+ -
+
+
1 ms
+ passedall_books_cheaper_than_10
+
+ -
+
+
0 ms
+ passedread_document_from_root
+
+ -
+
+
1 ms
+ passedaccess_array_by_index_from_tail
+
+
+
+ -
+
+
1 ms
+ JsonProviderTest
+
+ -
+
+
1 ms
+ passedparse_array
+
+ -
+
+
0 ms
+ passedparse_document
+
+
+
+ -
+
+
8 ms
+ NullHandlingTest
+
+ -
+
+
1 ms
+ passedlast_token_defaults_to_null
+
+ -
+
+
1 ms
+ passednot_defined_property_throws_PathNotFoundException
+
+ -
+
+
1 ms
+ passedpath
+
+ -
+
+
1 ms
+ passedpath2
+
+ -
+
+
1 ms
+ passednull_property_returns_null
+
+ -
+
+
3 ms
+ passedthe_age_of_all_with_age_defined
+
+
+
+ -
+
+
3 ms
+ ArrayIndexFilterTest
+
+ -
+
+
1 ms
+ passedtail_grabs_correct
+
+ -
+
+
0 ms
+ passedhead_grabs_correct
+
+ -
+
+
1 ms
+ passedcan_access_items_from_end_with_negative_index
+
+ -
+
+
0 ms
+ passedhead_does_not_throw_when_index_out_of_bounds
+
+ -
+
+
1 ms
+ passedtail_does_not_throw_when_index_out_of_bounds
+
+ -
+
+
0 ms
+ passedhead_tail_grabs_correct
+
+
+
+ -
+
+
3 ms
+ ArrayPathTokenTest
+
+ -
+
+
1 ms
+ passedarray_can_be_sliced_from_2_from_tail
+
+ -
+
+
0 ms
+ passedarray_can_be_sliced_between
+
+ -
+
+
1 ms
+ passedarray_can_be_sliced_to_2
+
+ -
+
+
0 ms
+ passedarray_can_select_multiple_indexes
+
+ -
+
+
0 ms
+ passedarray_can_be_sliced_from_2
+
+ -
+
+
1 ms
+ passedarray_can_be_sliced_to_2_from_tail
+
+
+
+ -
+
+
4 ms
+ PredicatePathTokenTest
+
+ -
+
+
1 ms
+ passeda_filter_predicate_can_be_evaluated_on_decimal_criteria
+
+ -
+
+
0 ms
+ passeda_filter_predicate_can_be_evaluated_on_string_criteria
+
+ -
+
+
1 ms
+ passedmultiple_criteria_can_be_used
+
+ -
+
+
0 ms
+ passedboolean_criteria_evaluates
+
+ -
+
+
1 ms
+ passeda_filter_predicate_can_be_evaluated_on_int_criteria
+
+ -
+
+
1 ms
+ passedfield_existence_can_be_checked
+
+
+
+ -
+
+
3 ms
+ PropertyPathTokenTest
+
+ -
+
+
1 ms
+ passedmap_value_can_be_read_from_map
+
+ -
+
+
1 ms
+ passedmap_value_can_be_read_from_child_map
+
+ -
+
+
0 ms
+ passedproperty_not_found_deep
+
+ -
+
+
1 ms
+ passedmap_value_can_be_read_from_array
+
+ -
+
+
0 ms
+ passedproperty_not_found
+
+ -
+
+
0 ms
+ passedproperty_not_found_option_throw
+
+
+
+ -
+
+
6 ms
+ ScanPathTokenTest
+
+ -
+
+
1 ms
+ passeda_document_can_be_scanned_for_existence
+
+ -
+
+
2 ms
+ passeda_document_can_be_scanned_for_wildcard
+
+ -
+
+
0 ms
+ passeda_document_can_be_scanned_for_property
+
+ -
+
+
1 ms
+ passeda_document_can_be_scanned_for_wildcard2
+
+ -
+
+
0 ms
+ passeda_document_can_be_scanned_for_wildcard3
+
+ -
+
+
0 ms
+ passeda_document_can_be_scanned_for_property_path
+
+ -
+
+
2 ms
+ passeda_document_can_be_scanned_for_predicate_match
+
+
+
+ -
+
+
2 ms
+ TestInternal3
+
+ -
+
+
1 ms
+ passeda_definite_array_item_property_can_be_evaluated
+
+ -
+
+
1 ms
+ passeda_wildcard_array_item_property_can_be_evaluated
+
+ -
+
+
0 ms
+ passeda_root_object_can_be_evaluated
+
+
+
+
+
+
+
+
+
diff --git a/Test Results - Tests_in_'json-path-parent_json-path-assert'.html b/Test Results - Tests_in_'json-path-parent_json-path-assert'.html
new file mode 100644
index 00000000..48e421c7
--- /dev/null
+++ b/Test Results - Tests_in_'json-path-parent_json-path-assert'.html
@@ -0,0 +1,1144 @@
+
+
+
+
+ Test Results — Tests in 'json-path-parent.json-path-assert'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
433 ms
+ JsonAssertTest
+
+ -
+
+
251 ms
+ passedassert_that_invalid_path_is_thrown
+
+ -
+
+
30 ms
+ passedends_with_evalueates
+
+ -
+
+
6 ms
+ passedlinks_document
+
+ -
+
+
1 ms
+ passeda_document_can_be_expected_not_to_contain_a_path
+
+ -
+
+
19 ms
+ passedlist_content_can_be_asserted_with_matcher
+
+ -
+
+
3 ms
+ passedtestAssertEqualsInteger
+
+ -
+
+
3 ms
+ passedpath_including_wildcard_path_followed_by_another_path_concatenates_results_to_list
+
+ -
+
+
3 ms
+ passeda_value_can_asserted_to_be_null
+
+ -
+
+
4 ms
+ passedtestAssertEqualsIntegerInvalidField
+
+ -
+
+
1 ms
+ passedtestNotDefined
+
+ -
+
+
82 ms
+ passedassert_gears
+
+ -
+
+
4 ms
+ passedan_empty_collection
+
+ -
+
+
3 ms
+ passedlist_content_can_be_asserted_with_nested_matcher
+
+ -
+
+
2 ms
+ passedhas_path
+
+ -
+
+
9 ms
+ passedmap_content_can_be_asserted_with_matcher
+
+ -
+
+
2 ms
+ passedinvalid_path
+
+ -
+
+
1 ms
+ passeda_path_can_be_asserted_with_matcher
+
+ -
+
+
5 ms
+ passedtestAssertEqualsIntegerInvalidExpected
+
+ -
+
+
1 ms
+ passedfailed_error_message
+
+ -
+
+
3 ms
+ passeda_path_can_be_asserted_equal_to
+
+
+
+ -
+
+
1 ms
+ DemoTest
+
+ -
+
+
1 ms
+ ignoredshouldFailOnTypedJsonString
+
+ -
+
+
0 ms
+ ignoredshouldFailOnJsonFile
+
+ -
+
+
0 ms
+ ignoredshouldFailOnNonExistingJsonPath
+
+ -
+
+
0 ms
+ ignoredshouldFailOnInvalidJsonString
+
+ -
+
+
0 ms
+ ignoredshouldFailOnTypedJsonFile
+
+ -
+
+
0 ms
+ ignoredshouldFailOnExistingJsonPathAlternative
+
+ -
+
+
0 ms
+ ignoredshouldFailOnExistingJsonPath
+
+ -
+
+
0 ms
+ ignoredshouldFailOnTypedInvalidJsonString
+
+ -
+
+
0 ms
+ ignoredshouldFailOnInvalidJsonFile
+
+ -
+
+
0 ms
+ ignoredshouldFailOnTypedInvalidJsonFile
+
+ -
+
+
0 ms
+ ignoredshouldFailOnJsonString
+
+
+
+ -
+
+
19 ms
+ HasNoJsonPathTest
+
+ -
+
+
13 ms
+ passedshouldBeDescriptive
+
+ -
+
+
3 ms
+ passedshouldNotMatchExplicitNull
+
+ -
+
+
1 ms
+ passedshouldNotMatchExistingJsonPath
+
+ -
+
+
2 ms
+ passedshouldMatchMissingJsonPath
+
+
+
+ -
+
+
30 ms
+ IsJsonFileTest
+
+ -
+
+
12 ms
+ passedshouldNotMatchJsonFileEvaluatedToFalse
+
+ -
+
+
5 ms
+ passedshouldMatchJsonFileEvaluatedToTrue
+
+ -
+
+
6 ms
+ passedshouldDescribeMismatchOfValidJson
+
+ -
+
+
2 ms
+ passedshouldBeDescriptive
+
+ -
+
+
2 ms
+ passedshouldDescribeMismatchOfInvalidJson
+
+ -
+
+
3 ms
+ passedshouldNotMatchInvalidJsonFile
+
+
+
+ -
+
+
5 ms
+ IsJsonStringTest
+
+ -
+
+
1 ms
+ passedshouldMatchJsonStringEvaluatedToTrue
+
+ -
+
+
1 ms
+ passedshouldNotMatchInvalidJsonString
+
+ -
+
+
1 ms
+ passedshouldNotMatchJsonStringEvaluatedToFalse
+
+ -
+
+
0 ms
+ passedshouldDescribeMismatchOfValidJson
+
+ -
+
+
1 ms
+ passedshouldBeDescriptive
+
+ -
+
+
1 ms
+ passedshouldDescribeMismatchOfInvalidJson
+
+
+
+ -
+
+
32 ms
+ IsJsonTest
+
+ -
+
+
10 ms
+ passedshouldMatchOnEmptyJsonObject
+
+ -
+
+
1 ms
+ passedshouldMatchOnEmptyJsonArray
+
+ -
+
+
1 ms
+ passedshouldMatchJsonStringEvaluatedToTrue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonObjectEvaluatedToTrue
+
+ -
+
+
4 ms
+ passedshouldNotMatchJsonFileEvaluatedToFalse
+
+ -
+
+
2 ms
+ passedshouldNotMatchNonExistingJsonFile
+
+ -
+
+
1 ms
+ passedshouldMatchValidJson
+
+ -
+
+
1 ms
+ passedshouldNotMatchJsonStringEvaluatedToFalse
+
+ -
+
+
3 ms
+ passedshouldMatchJsonFileEvaluatedToTrue
+
+ -
+
+
1 ms
+ passedshouldDescribeMismatchOfValidJson
+
+ -
+
+
1 ms
+ passedshouldBeDescriptive
+
+ -
+
+
0 ms
+ passedshouldNotMatchJsonObjectEvaluatedToFalse
+
+ -
+
+
1 ms
+ passedshouldDescribeMismatchOfInvalidJson
+
+ -
+
+
1 ms
+ passedshouldMatchOnJsonArray
+
+ -
+
+
2 ms
+ passedshouldNotMatchInvalidJson
+
+ -
+
+
2 ms
+ passedshouldMatchOnJsonObject
+
+
+
+ -
+
+
35 ms
+ JsonPathMatchersTest
+
+ -
+
+
6 ms
+ passedshouldMatchJsonPathToBooleanValue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathToIntegerValue
+
+ -
+
+
2 ms
+ passedshouldNotMatchNonExistingJsonPath
+
+ -
+
+
2 ms
+ passedwillMatchIndefiniteJsonPathsEvaluatedToEmptyLists
+
+ -
+
+
1 ms
+ passedshouldNotMatchInvalidJsonWithPath
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathOnReadContext
+
+ -
+
+
3 ms
+ passedshouldMatchJsonPathToNullValue
+
+ -
+
+
7 ms
+ passedshouldMatchJsonPathToEmptyJsonArray
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathToEmptyJsonObject
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathToDoubleValue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathToStringValue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathToJsonObject
+
+ -
+
+
3 ms
+ passedshouldMatchJsonPathOnFile
+
+ -
+
+
1 ms
+ passedshouldNotMatchInvalidJsonWithPathAndValue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathOnParsedJsonObject
+
+ -
+
+
2 ms
+ passedshouldMatchJsonPathToJsonArray
+
+ -
+
+
1 ms
+ passedshouldNotMatchJsonPathOnNonExistingFile
+
+
+
+ -
+
+
13 ms
+ WithJsonPathTest
+
+ -
+
+
3 ms
+ passedshouldNotMatchNonExistingStringJsonPath
+
+ -
+
+
2 ms
+ passedshouldNotMatchNonExistingJsonPath
+
+ -
+
+
3 ms
+ passedshouldDescribeMismatchOfEvaluation
+
+ -
+
+
0 ms
+ passedshouldNotMatchOnInvalidJson
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathEvaluatedToCollectionValue
+
+ -
+
+
1 ms
+ passedshouldMatchExistingStringJsonPath
+
+ -
+
+
0 ms
+ passedshouldBeDescriptive
+
+ -
+
+
0 ms
+ passedshouldMatchJsonPathEvaluatedToIntegerValue
+
+ -
+
+
1 ms
+ passedshouldMatchExistingCompiledJsonPath
+
+ -
+
+
1 ms
+ passedshouldDescribeMismatchOfPathNotFound
+
+ -
+
+
0 ms
+ passedshouldFailOnInvalidJsonPath
+
+ -
+
+
0 ms
+ passedshouldMatchJsonPathEvaluatedToDoubleValue
+
+ -
+
+
1 ms
+ passedshouldMatchJsonPathEvaluatedToStringValue
+
+
+
+ -
+
+
3 ms
+ WithoutJsonPathTest
+
+ -
+
+
1 ms
+ passedshouldMatchNonExistingJsonPath
+
+ -
+
+
1 ms
+ passedshouldBeDescriptive
+
+ -
+
+
1 ms
+ passedshouldNotMatchExistingJsonPath
+
+
+
+
+
+
+
+
+
diff --git a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java
index 01c7db03..6dca7db2 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java
@@ -16,6 +16,7 @@ package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.*;
+import com.jayway.jsonpath.internal.PathEvaluator;
import com.jayway.jsonpath.internal.path.PathCompiler;
import com.jayway.jsonpath.spi.json.JsonProvider;
@@ -139,6 +140,23 @@ public class JsonPath {
return path.isDefinite();
}
+
+// public boolean isFunctionPath() {
+// return path.isFunctionPath();
+// }
+//
+// public boolean isRootPath() {
+// return path.isRootPath();
+// }
+
+ public EvaluationContext evaluate(Object document, Object rootDocument, Configuration configuration) {
+ return evaluate(document, rootDocument, configuration, false);
+ }
+
+ public EvaluationContext evaluate(Object document, Object rootDocument, Configuration configuration, boolean forUpdate) {
+ EvaluationContext evaluationContext = null;
+ return resultByConfiguration(document, configuration, evaluationContext);
+ }
/**
* Applies this JsonPath to the provided json document.
* Note that the document must be identified as either a List or Map by
@@ -165,46 +183,8 @@ public class JsonPath {
*/
@SuppressWarnings("unchecked")
public T read(Object jsonObject, Configuration configuration) {
- boolean optAsPathList = configuration.containsOption(AS_PATH_LIST);
- boolean optAlwaysReturnList = configuration.containsOption(Option.ALWAYS_RETURN_LIST);
- boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
-
- if (path.isFunctionPath()) {
- if (optAsPathList || optAlwaysReturnList) {
- if (optSuppressExceptions) {
- return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
- }
- throw new JsonPathException("Options " + AS_PATH_LIST + " and " + ALWAYS_RETURN_LIST + " are not allowed when using path functions!");
- }
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
- if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
- return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
- }
- return evaluationContext.getValue(true);
- } else if (optAsPathList) {
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
- if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
- return (T) configuration.jsonProvider().createArray();
- }
- return (T) evaluationContext.getPath();
- } else {
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
- if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
- if (optAlwaysReturnList) {
- return (T) configuration.jsonProvider().createArray();
- } else {
- return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
- }
- }
- Object res = evaluationContext.getValue(false);
- if (optAlwaysReturnList && path.isDefinite()) {
- Object array = configuration.jsonProvider().createArray();
- configuration.jsonProvider().setArrayIndex(array, 0, res);
- return (T) array;
- } else {
- return (T) res;
- }
- }
+ PathEvaluator evaluator = new PathEvaluator(path, configuration);
+ return evaluator.evaluate(jsonObject);
}
/**
@@ -218,7 +198,7 @@ public class JsonPath {
public T set(Object jsonObject, Object newVal, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
@@ -246,7 +226,7 @@ public class JsonPath {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
notNull(mapFunction, "mapFunction can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
@@ -273,7 +253,7 @@ public class JsonPath {
public T delete(Object jsonObject, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
@@ -300,7 +280,7 @@ public class JsonPath {
public T add(Object jsonObject, Object value, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
@@ -329,7 +309,7 @@ public class JsonPath {
notNull(jsonObject, "json can not be null");
notEmpty(key, "key can not be null or empty");
notNull(configuration, "configuration can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
@@ -348,7 +328,7 @@ public class JsonPath {
notNull(jsonObject, "json can not be null");
notEmpty(newKeyName, "newKeyName can not be null or empty");
notNull(configuration, "configuration can not be null");
- EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
+ EvaluationContext evaluationContext = evaluate(jsonObject, jsonObject, configuration, true);
for (PathRef updateOperation : evaluationContext.updateOperations()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
try {
@@ -554,17 +534,17 @@ public class JsonPath {
/**
* Creates a new JsonPath and applies it to the provided Json object
*
- * @param jsonURL url pointing to json doc
+ // * @param jsonURL url pointing to json doc
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param expected return type
* @return list of objects matched by the given path
*/
- @SuppressWarnings({"unchecked"})
+// @SuppressWarnings({"unchecked"})
@Deprecated
- public static T read(URL jsonURL, String jsonPath, Predicate... filters) throws IOException {
- return new ParseContextImpl().parse(jsonURL).read(jsonPath, filters);
- }
+// public static T read(URL jsonURL, String jsonPath, Predicate... filters) throws IOException {
+// return new ParseContextImpl().parse(jsonURL).read(jsonPath, filters);
+// }
/**
* Creates a new JsonPath and applies it to the provided Json object
diff --git a/json-path/src/main/java/com/jayway/jsonpath/PathEvaluator.java b/json-path/src/main/java/com/jayway/jsonpath/PathEvaluator.java
new file mode 100644
index 00000000..33fa3366
--- /dev/null
+++ b/json-path/src/main/java/com/jayway/jsonpath/PathEvaluator.java
@@ -0,0 +1,35 @@
+package com.jayway.jsonpath.internal;
+
+import com.jayway.jsonpath.Configuration;
+import static com.jayway.jsonpath.internal.Utils.*;
+import static com.jayway.jsonpath.Option.AS_PATH_LIST;
+
+public class PathEvaluator {
+
+ private final Path path;
+ private final Configuration configuration;
+
+ public PathEvaluator(Path path, Configuration configuration) {
+ notNull(path, "path can not be null");
+ notNull(configuration, "configuration can not be null");
+ this.path = path;
+ this.configuration = configuration;
+ }
+
+ public T evaluate(Object jsonObject) {
+ boolean optAsPathList = configuration.containsOption(AS_PATH_LIST);
+ EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
+
+
+ return resultByConfiguration(jsonObject, evaluationContext);
+ }
+
+ private T resultByConfiguration(Object jsonObject, EvaluationContext evaluationContext) {
+ if(configuration.containsOption(AS_PATH_LIST)){
+ return (T)evaluationContext.getPathList();
+ } else {
+ return (T) jsonObject;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java
index 322a1719..8afba610 100755
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java
@@ -375,27 +375,28 @@ public class EvaluatorFactory {
private static class NoneOfEvaluator implements Evaluator {
@Override
public boolean evaluate(ValueNode left, ValueNode right, Predicate.PredicateContext ctx) {
- ValueListNode rightValueListNode;
- if (right.isJsonNode()) {
- ValueNode vn = right.asJsonNode().asValueListNode(ctx);
+ ValueListNode rightValueListNode = extractValueListNode(right, ctx);
+ ValueListNode leftValueListNode = extractValueListNode(left, ctx);
+
+ return areAllElementsDifferent(leftValueListNode, rightValueListNode);
+ }
+
+ private ValueListNode extractValueListNode(ValueNode node, Predicate.PredicateContext ctx) {
+ if (node.isJsonNode()) {
+ ValueNode vn = node.asJsonNode().asValueListNode(ctx);
if (vn.isUndefinedNode()) {
- return false;
+ return null; // or handle undefined case accordingly
} else {
- rightValueListNode = vn.asValueListNode();
+ return vn.asValueListNode();
}
} else {
- rightValueListNode = right.asValueListNode();
+ return node.asValueListNode();
}
- ValueListNode leftValueListNode;
- if (left.isJsonNode()) {
- ValueNode vn = left.asJsonNode().asValueListNode(ctx);
- if (vn.isUndefinedNode()) {
- return false;
- } else {
- leftValueListNode = vn.asValueListNode();
- }
- } else {
- leftValueListNode = left.asValueListNode();
+ }
+
+ private boolean areAllElementsDifferent(ValueListNode leftValueListNode, ValueListNode rightValueListNode) {
+ if (leftValueListNode == null || rightValueListNode == null) {
+ return false; // or handle the case where one of the lists is null
}
for (ValueNode leftValueNode : leftValueListNode) {
@@ -405,7 +406,9 @@ public class EvaluatorFactory {
}
}
}
+
return true;
}
+
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java
index cdf0dd97..b9b6529f 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java
@@ -135,26 +135,44 @@ public abstract class ValueNode {
}
private static boolean isJson(Object o) {
- if(o == null || !(o instanceof String)){
+ if (o == null || !(o instanceof String)) {
return false;
}
+
String str = o.toString().trim();
+
if (str.length() <= 1) {
return false;
}
+
char c0 = str.charAt(0);
char c1 = str.charAt(str.length() - 1);
- if ((c0 == '[' && c1 == ']') || (c0 == '{' && c1 == '}')){
- try {
- new JSONParser(JSONParser.MODE_PERMISSIVE).parse(str);
- return true;
- } catch(Exception e){
- return false;
- }
+
+ if (isJsonArray(c0, c1) || isJsonObject(c0, c1)) {
+ return isValidJson(str);
}
+
return false;
}
+ private static boolean isJsonArray(char c0, char c1) {
+ return c0 == '[' && c1 == ']';
+ }
+
+ private static boolean isJsonObject(char c0, char c1) {
+ return c0 == '{' && c1 == '}';
+ }
+
+ private static boolean isValidJson(String str) {
+ try {
+ new JSONParser(JSONParser.MODE_PERMISSIVE).parse(str);
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+
//----------------------------------------------------
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java
index 36d7da77..0be65205 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java
@@ -13,7 +13,7 @@ import java.util.List;
public class PassthruPathFunction implements PathFunction {
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
return model;
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java
index ac3a353b..6e0e98b4 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java
@@ -32,5 +32,5 @@ public interface PathFunction {
* @param parameters
* @return result
*/
- Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters);
+ Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters);
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java
index ed39d4a8..aa2bbbdc 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java
@@ -16,7 +16,7 @@ import java.util.List;
*/
public class Append implements PathFunction {
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
JsonProvider jsonProvider = ctx.configuration().jsonProvider();
if (parameters != null && parameters.size() > 0) {
for (Parameter param : parameters) {
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java
index 049d6de0..847e6a95 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java
@@ -14,7 +14,7 @@ import java.util.List;
public class KeySetFunction implements PathFunction {
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
if (ctx.configuration().jsonProvider().isMap(model)) {
return ctx.configuration().jsonProvider().getPropertyKeys(model);
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java
index cbc9f7bc..3d74cd29 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java
@@ -23,7 +23,7 @@ public abstract class AbstractAggregation implements PathFunction {
* @param value
* The numerical value to process next
*/
- protected abstract void next(Number value);
+ protected abstract void processNumericValue(Number value);
/**
* Obtains the value generated via the series of next value calls
@@ -31,31 +31,37 @@ public abstract class AbstractAggregation implements PathFunction {
* @return
* A numerical answer based on the input value provided
*/
- protected abstract Number getValue();
+ protected abstract Number getAggregatedValue();
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
int count = 0;
- if(ctx.configuration().jsonProvider().isArray(model)){
- Iterable> objects = ctx.configuration().jsonProvider().toIterable(model);
- for (Object obj : objects) {
- if (obj instanceof Number) {
- Number value = (Number) obj;
+ if (ctx.configuration().jsonProvider().isArray(model)) {
+ Iterable> arrayElements = ctx.configuration().jsonProvider().toIterable(model);
+
+ for (Object arrayElement : arrayElements) {
+ if (arrayElement instanceof Number) {
+ Number numericValue = (Number) arrayElement;
count++;
- next(value);
+ processNumericValue(numericValue);
}
}
}
+
if (parameters != null) {
- for (Number value : Parameter.toList(Number.class, ctx, parameters)) {
+ for (Number parameterValue : Parameter.toList(Number.class, ctx, parameters)) {
count++;
- next(value);
+ processNumericValue(parameterValue);
}
}
+
if (count != 0) {
- return getValue();
+ return getAggregatedValue();
}
+
throw new JsonPathException("Aggregation function attempted to calculate value using empty array");
}
+
+
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java
index f4c6788e..83959975 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java
@@ -11,13 +11,13 @@ public class Average extends AbstractAggregation {
private Double count = 0d;
@Override
- protected void next(Number value) {
+ protected void processNumericValue(Number value) {
count++;
summation += value.doubleValue();
}
@Override
- protected Number getValue() {
+ protected Number getAggregatedValue() {
if (count != 0d) {
return summation / count;
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java
index 27570bf6..35298722 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java
@@ -9,14 +9,14 @@ public class Max extends AbstractAggregation {
private Double max = Double.MIN_VALUE;
@Override
- protected void next(Number value) {
+ protected void processNumericValue(Number value) {
if (max < value.doubleValue()) {
max = value.doubleValue();
}
}
@Override
- protected Number getValue() {
+ protected Number getAggregatedValue() {
return max;
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java
index 3c57e5f2..125f9849 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java
@@ -9,14 +9,14 @@ public class Min extends AbstractAggregation {
private Double min = Double.MAX_VALUE;
@Override
- protected void next(Number value) {
+ protected void processNumericValue(Number value) {
if (min > value.doubleValue()) {
min = value.doubleValue();
}
}
@Override
- protected Number getValue() {
+ protected Number getAggregatedValue() {
return min;
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java
index 0a83d8a8..799d4f7d 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java
@@ -11,14 +11,14 @@ public class StandardDeviation extends AbstractAggregation {
private Double count = 0d;
@Override
- protected void next(Number value) {
+ protected void processNumericValue(Number value) {
sum += value.doubleValue();
sumSq += value.doubleValue() * value.doubleValue();
count++;
}
@Override
- protected Number getValue() {
+ protected Number getAggregatedValue() {
return Math.sqrt(sumSq/count - sum*sum/count/count);
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java
index 3996bb43..8a7002e6 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java
@@ -9,12 +9,12 @@ public class Sum extends AbstractAggregation {
private Double summation = 0d;
@Override
- protected void next(Number value) {
+ protected void processNumericValue(Number value) {
summation += value.doubleValue();
}
@Override
- protected Number getValue() {
+ protected Number getAggregatedValue() {
return summation;
}
}
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java
index 24c87e13..dd5b8153 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java
@@ -19,7 +19,7 @@ public abstract class AbstractSequenceAggregation implements PathFunction {
protected abstract int targetIndex(EvaluationContext ctx, List parameters);
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
if(ctx.configuration().jsonProvider().isArray(model)){
Iterable> objects = ctx.configuration().jsonProvider().toIterable(model);
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java
index d499afef..725805cd 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java
@@ -14,7 +14,7 @@ import java.util.List;
*/
public class Concatenate implements PathFunction {
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
StringBuilder result = new StringBuilder();
if(ctx.configuration().jsonProvider().isArray(model)){
Iterable> objects = ctx.configuration().jsonProvider().toIterable(model);
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java b/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java
index ea8ab1ff..b0c8d2fc 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java
@@ -40,7 +40,7 @@ public class Length implements PathFunction {
* @return
*/
@Override
- public Object invoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
+ public Object aggregateAndInvoke(String currentPath, PathRef parent, Object model, EvaluationContext ctx, List parameters) {
if (null != parameters && parameters.size() > 0) {
// Set the tail of the first parameter, when its not a function path parameter (which wouldn't make sense
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java
index 0f449895..85c95f57 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java
@@ -38,7 +38,7 @@ public class FunctionPathToken extends PathToken {
public void evaluate(String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) {
PathFunction pathFunction = PathFunctionFactory.newFunction(functionName);
evaluateParameters(currentPath, parent, model, ctx);
- Object result = pathFunction.invoke(currentPath, parent, model, ctx, functionParams);
+ Object result = pathFunction.aggregateAndInvoke(currentPath, parent, model, ctx, functionParams);
ctx.addResult(currentPath + "." + functionName, parent, result);
cleanWildcardPathToken();
if (!isLeaf()) {
diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java
index 34cf1402..b1eb7e66 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java
@@ -215,7 +215,7 @@ public abstract class PathToken {
}
public void invoke(PathFunction pathFunction, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) {
- ctx.addResult(currentPath, parent, pathFunction.invoke(currentPath, parent, model, ctx, null));
+ ctx.addResult(currentPath, parent, pathFunction.aggregateAndInvoke(currentPath, parent, model, ctx, null));
}
public abstract void evaluate(String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx);
diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java
index ae165927..9a54dcbb 100644
--- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java
+++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java
@@ -212,18 +212,42 @@ public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider {
@Override
public int length(Object obj) {
+ JsonLengthCalculator lengthCalculator = getLengthCalculator(obj);
+ return lengthCalculator.calculateLength(obj);
+ }
+
+ private JsonLengthCalculator getLengthCalculator(Object obj) {
if (isArray(obj)) {
- return toJsonArray(obj).size();
+ return new JsonArrayLengthCalculator();
} else if (isMap(obj)) {
- return toJsonObject(obj).size();
+ return new JsonObjectLengthCalculator();
} else {
+ return new TextNodeLengthCalculator();
+ }
+ }
+
+ public class JsonArrayLengthCalculator implements JsonLengthCalculator {
+ @Override
+ public int calculateLength(Object obj) {
+ return toJsonArray(obj).size();
+ }
+ }
+ public class JsonObjectLengthCalculator implements JsonLengthCalculator {
+ @Override
+ public int calculateLength(Object obj) {
+ return toJsonObject(obj).size();
+ }
+ }
+
+ public class TextNodeLengthCalculator implements JsonLengthCalculator {
+ @Override
+ public int calculateLength(Object obj) {
if (obj instanceof TextNode) {
TextNode element = (TextNode) obj;
return element.size();
}
+ throw new JsonPathException("length operation cannot be applied to " + (obj != null ? obj.getClass().getName() : "null"));
}
- throw new JsonPathException("length operation can not applied to " + (obj != null ? obj.getClass().getName()
- : "null"));
}
@Override
diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonLengthCalculator.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonLengthCalculator.java
new file mode 100644
index 00000000..1056cdb0
--- /dev/null
+++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonLengthCalculator.java
@@ -0,0 +1,5 @@
+package com.jayway.jsonpath.spi.json;
+
+public interface JsonLengthCalculator {
+ int calculateLength(Object obj);
+}
diff --git a/json-path/src/test/java/com/jayway/jsonpath/internal/JettisonProviderTest.java b/json-path/src/test/java/com/jayway/jsonpath/internal/JettisonProviderTest.java
new file mode 100644
index 00000000..266877cc
--- /dev/null
+++ b/json-path/src/test/java/com/jayway/jsonpath/internal/JettisonProviderTest.java
@@ -0,0 +1,34 @@
+//package com.jayway.jsonpath.internal;
+//
+//import com.jayway.jsonpath.spi.json.JettisonProvider;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//import static org.junit.Assert.assertEquals;
+//import static org.junit.Assert.assertTrue;
+//
+//public class JettisonProviderTest {
+//
+// private JettisonProvider jsonProvider;
+//
+// @Before
+// public void setUp() {
+// jsonProvider = new JettisonProvider();
+// }
+//
+// @Test
+// public void parseValidJsonString() {
+// //Input json
+// String jsonString = "{\"name\":\"Vishesh\",\"age\":21}";
+//
+// // When parsing a valid JSON string
+// Object result = jsonProvider.parse(jsonString);
+//
+// assertTrue(jsonProvider.isMap(result));
+//
+// // expected values
+// assertEquals("Vishesh", jsonProvider.getMapValue(result, "name"));
+// assertEquals(21, jsonProvider.getMapValue(result, "age"));
+// }
+//
+//}
diff --git a/json-path/src/test/java/com/jayway/jsonpath/internal/JsonOrgJsonProviderTest.java b/json-path/src/test/java/com/jayway/jsonpath/internal/JsonOrgJsonProviderTest.java
new file mode 100644
index 00000000..d6558328
--- /dev/null
+++ b/json-path/src/test/java/com/jayway/jsonpath/internal/JsonOrgJsonProviderTest.java
@@ -0,0 +1,46 @@
+//package com.jayway.jsonpath.internal;
+//
+//import com.jayway.jsonpath.spi.json.JsonOrgJsonProvider;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//import java.io.ByteArrayInputStream;
+//import java.io.InputStream;
+//import java.nio.charset.StandardCharsets;
+//
+//import static org.junit.Assert.assertEquals;
+//import static org.junit.Assert.assertTrue;
+//
+//public class JsonOrgJsonProviderTest {
+// private JsonOrgJsonProvider jsonProvider;
+// @Before
+// public void setUp() {
+// jsonProvider = new JsonOrgJsonProvider();
+// }
+// @Test
+// public void parseValidJsonString() {
+// //input json
+// String jsonString = "{\"name\":\"Raj\",\"age\":31}";
+//
+// // When parsing a valid JSON string
+// Object result = jsonProvider.parse(jsonString);
+//
+// assertTrue(jsonProvider.isMap(result));
+// assertEquals("Raj", jsonProvider.getMapValue(result, "name"));
+// assertEquals(31, jsonProvider.getMapValue(result, "age"));
+// }
+// @Test
+// public void parseValidJsonInputStream() {
+//
+// String jsonString = "{\"name\":\"Raj\",\"age\":31}";
+// InputStream jsonStream = new ByteArrayInputStream(jsonString.getBytes(StandardCharsets.UTF_8));
+//
+// // When parsing valid JSON from an InputStream
+// Object result = jsonProvider.parse(jsonStream, StandardCharsets.UTF_8.name());
+//
+// assertTrue(jsonProvider.isMap(result));
+// // expected values
+// assertEquals("Raj", jsonProvider.getMapValue(result, "name"));
+// assertEquals(31, jsonProvider.getMapValue(result, "age"));
+// }
+//}
diff --git a/json-path/src/test/java/com/jayway/jsonpath/internal/TapestryMappingProviderTest.java b/json-path/src/test/java/com/jayway/jsonpath/internal/TapestryMappingProviderTest.java
new file mode 100644
index 00000000..725b5577
--- /dev/null
+++ b/json-path/src/test/java/com/jayway/jsonpath/internal/TapestryMappingProviderTest.java
@@ -0,0 +1,42 @@
+//package com.jayway.jsonpath.internal;
+//
+//import com.jayway.jsonpath.Configuration;
+//import com.jayway.jsonpath.TypeRef;
+//import com.jayway.jsonpath.spi.mapper.TapestryMappingProvider;
+//import org.junit.Before;
+//import org.junit.Test;
+//
+//import java.util.List;
+//
+//import static org.junit.Assert.assertNull;
+//import static org.junit.Assert.fail;
+//
+//public class TapestryMappingProviderTest {
+// private TapestryMappingProvider mappingProvider;
+// private Configuration configuration;
+// @Before
+// public void setUp() {
+// mappingProvider = new TapestryMappingProvider();
+// configuration = Configuration.defaultConfiguration();
+// }
+// @Test
+// public void mapNullSourceToNullTarget() {
+// Object source = null;
+//
+// Object result = mappingProvider.map(source, List.class, configuration);
+//
+// //result should be null
+// assertNull(result);
+// }
+// @Test
+// public void mapArrayToJsonRef() {
+// String[] source = new String[]{"Red", "Green", "Blue"};
+//
+// try {
+// Object result = mappingProvider.map(source, new TypeRef>() {}, configuration);
+// fail("Expected UnsupportedOperationException");
+// } catch (UnsupportedOperationException e) {
+// // UnsupportedOperationException should be thrown
+// }
+// }
+//}