From cf658fa33b6b9eebfb1bd61c93817534ffbb87aa Mon Sep 17 00:00:00 2001 From: Lloyd Hilaiel Date: Sat, 15 Feb 2014 09:33:14 +0100 Subject: move tests down directory --- test/CMakeLists.txt | 23 - ...c_difficult_json_c_test_case_with_comments.json | 1 - ...ficult_json_c_test_case_with_comments.json.gold | 36 - test/cases/ac_simple_with_comments.json | 11 - test/cases/ac_simple_with_comments.json.gold | 9 - test/cases/ag_false_then_garbage.json | 1 - test/cases/ag_false_then_garbage.json.gold | 2 - test/cases/ag_null_then_garbage.json | 1 - test/cases/ag_null_then_garbage.json.gold | 2 - test/cases/ag_true_then_garbage.json | 1 - test/cases/ag_true_then_garbage.json.gold | 2 - test/cases/am_eof.json | 1 - test/cases/am_eof.json.gold | 4 - test/cases/am_integers.json | 1 - test/cases/am_integers.json.gold | 3 - test/cases/am_multiple.json | 3 - test/cases/am_multiple.json.gold | 5 - test/cases/am_stuff.json | 7 - test/cases/am_stuff.json.gold | 14 - test/cases/ap_array_open.json | 1 - test/cases/ap_array_open.json.gold | 2 - test/cases/ap_eof_str.json | 1 - test/cases/ap_eof_str.json.gold | 1 - test/cases/ap_map_open.json | 1 - test/cases/ap_map_open.json.gold | 2 - test/cases/ap_partial_ok.json | 1 - test/cases/ap_partial_ok.json.gold | 4 - test/cases/array.json | 6 - test/cases/array.json.gold | 22 - test/cases/array_close.json | 1 - test/cases/array_close.json.gold | 2 - test/cases/bignums.json | 1 - test/cases/bignums.json.gold | 5 - test/cases/bogus_char.json | 4 - test/cases/bogus_char.json.gold | 10 - test/cases/codepoints_from_unicode_org.json | 1 - test/cases/codepoints_from_unicode_org.json.gold | 2 - test/cases/deep_arrays.json | 1 - test/cases/deep_arrays.json.gold | 2049 -------------------- test/cases/difficult_json_c_test_case.json | 1 - test/cases/difficult_json_c_test_case.json.gold | 36 - test/cases/doubles.json | 1 - test/cases/doubles.json.gold | 7 - test/cases/doubles_in_array.json | 1 - test/cases/doubles_in_array.json.gold | 8 - test/cases/empty_array.json | 1 - test/cases/empty_array.json.gold | 3 - test/cases/empty_string.json | 1 - test/cases/empty_string.json.gold | 2 - test/cases/escaped_bulgarian.json | 4 - test/cases/escaped_bulgarian.json.gold | 7 - test/cases/escaped_foobar.json | 1 - test/cases/escaped_foobar.json.gold | 2 - test/cases/false.json | 1 - test/cases/false.json.gold | 2 - test/cases/fg_false_then_garbage.json | 1 - test/cases/fg_false_then_garbage.json.gold | 3 - test/cases/fg_issue_7.json | 1 - test/cases/fg_issue_7.json.gold | 3 - test/cases/fg_null_then_garbage.json | 1 - test/cases/fg_null_then_garbage.json.gold | 3 - test/cases/fg_true_then_garbage.json | 1 - test/cases/fg_true_then_garbage.json.gold | 3 - test/cases/four_byte_utf8.json | 2 - test/cases/four_byte_utf8.json.gold | 5 - test/cases/high_overflow.json | 1 - test/cases/high_overflow.json.gold | 2 - test/cases/integers.json | 3 - test/cases/integers.json.gold | 14 - test/cases/invalid_utf8.json | 1 - test/cases/invalid_utf8.json.gold | 3 - test/cases/isolated_surrogate_marker.json | 1 - test/cases/isolated_surrogate_marker.json.gold | 2 - test/cases/leading_zero_in_number.json | 1 - test/cases/leading_zero_in_number.json.gold | 5 - test/cases/lonely_minus_sign.json | 7 - test/cases/lonely_minus_sign.json.gold | 9 - test/cases/lonely_number.json | 1 - test/cases/lonely_number.json.gold | 2 - test/cases/low_overflow.json | 1 - test/cases/low_overflow.json.gold | 2 - test/cases/map_close.json | 1 - test/cases/map_close.json.gold | 2 - .../cases/missing_integer_after_decimal_point.json | 1 - .../missing_integer_after_decimal_point.json.gold | 2 - test/cases/missing_integer_after_exponent.json | 1 - .../cases/missing_integer_after_exponent.json.gold | 2 - test/cases/multiple.json | 3 - test/cases/multiple.json.gold | 4 - test/cases/non_utf8_char_in_string.json | 1 - test/cases/non_utf8_char_in_string.json.gold | 8 - test/cases/np_partial_bad.json | 1 - test/cases/np_partial_bad.json.gold | 5 - test/cases/null.json | 1 - test/cases/null.json.gold | 2 - test/cases/nulls_and_bools.json | 5 - test/cases/nulls_and_bools.json.gold | 9 - test/cases/simple.json | 5 - test/cases/simple.json.gold | 9 - test/cases/simple_with_comments.json | 11 - test/cases/simple_with_comments.json.gold | 5 - test/cases/string_invalid_escape.json | 1 - test/cases/string_invalid_escape.json.gold | 3 - test/cases/string_invalid_hex_char.json | 1 - test/cases/string_invalid_hex_char.json.gold | 2 - test/cases/string_with_escapes.json | 3 - test/cases/string_with_escapes.json.gold | 7 - test/cases/string_with_invalid_newline.json | 2 - test/cases/string_with_invalid_newline.json.gold | 2 - test/cases/three_byte_utf8.json | 1 - test/cases/three_byte_utf8.json.gold | 7 - test/cases/true.json | 1 - test/cases/true.json.gold | 2 - test/cases/unescaped_bulgarian.json | 1 - test/cases/unescaped_bulgarian.json.gold | 4 - test/cases/zerobyte.json | 1 - test/cases/zerobyte.json.gold | Bin 28 -> 0 bytes test/parsing/CMakeLists.txt | 23 + ...c_difficult_json_c_test_case_with_comments.json | 1 + ...ficult_json_c_test_case_with_comments.json.gold | 36 + test/parsing/cases/ac_simple_with_comments.json | 11 + .../cases/ac_simple_with_comments.json.gold | 9 + test/parsing/cases/ag_false_then_garbage.json | 1 + test/parsing/cases/ag_false_then_garbage.json.gold | 2 + test/parsing/cases/ag_null_then_garbage.json | 1 + test/parsing/cases/ag_null_then_garbage.json.gold | 2 + test/parsing/cases/ag_true_then_garbage.json | 1 + test/parsing/cases/ag_true_then_garbage.json.gold | 2 + test/parsing/cases/am_eof.json | 1 + test/parsing/cases/am_eof.json.gold | 4 + test/parsing/cases/am_integers.json | 1 + test/parsing/cases/am_integers.json.gold | 3 + test/parsing/cases/am_multiple.json | 3 + test/parsing/cases/am_multiple.json.gold | 5 + test/parsing/cases/am_stuff.json | 7 + test/parsing/cases/am_stuff.json.gold | 14 + test/parsing/cases/ap_array_open.json | 1 + test/parsing/cases/ap_array_open.json.gold | 2 + test/parsing/cases/ap_eof_str.json | 1 + test/parsing/cases/ap_eof_str.json.gold | 1 + test/parsing/cases/ap_map_open.json | 1 + test/parsing/cases/ap_map_open.json.gold | 2 + test/parsing/cases/ap_partial_ok.json | 1 + test/parsing/cases/ap_partial_ok.json.gold | 4 + test/parsing/cases/array.json | 6 + test/parsing/cases/array.json.gold | 22 + test/parsing/cases/array_close.json | 1 + test/parsing/cases/array_close.json.gold | 2 + test/parsing/cases/bignums.json | 1 + test/parsing/cases/bignums.json.gold | 5 + test/parsing/cases/bogus_char.json | 4 + test/parsing/cases/bogus_char.json.gold | 10 + .../parsing/cases/codepoints_from_unicode_org.json | 1 + .../cases/codepoints_from_unicode_org.json.gold | 2 + test/parsing/cases/deep_arrays.json | 1 + test/parsing/cases/deep_arrays.json.gold | 2049 ++++++++++++++++++++ test/parsing/cases/difficult_json_c_test_case.json | 1 + .../cases/difficult_json_c_test_case.json.gold | 36 + test/parsing/cases/doubles.json | 1 + test/parsing/cases/doubles.json.gold | 7 + test/parsing/cases/doubles_in_array.json | 1 + test/parsing/cases/doubles_in_array.json.gold | 8 + test/parsing/cases/empty_array.json | 1 + test/parsing/cases/empty_array.json.gold | 3 + test/parsing/cases/empty_string.json | 1 + test/parsing/cases/empty_string.json.gold | 2 + test/parsing/cases/escaped_bulgarian.json | 4 + test/parsing/cases/escaped_bulgarian.json.gold | 7 + test/parsing/cases/escaped_foobar.json | 1 + test/parsing/cases/escaped_foobar.json.gold | 2 + test/parsing/cases/false.json | 1 + test/parsing/cases/false.json.gold | 2 + test/parsing/cases/fg_false_then_garbage.json | 1 + test/parsing/cases/fg_false_then_garbage.json.gold | 3 + test/parsing/cases/fg_issue_7.json | 1 + test/parsing/cases/fg_issue_7.json.gold | 3 + test/parsing/cases/fg_null_then_garbage.json | 1 + test/parsing/cases/fg_null_then_garbage.json.gold | 3 + test/parsing/cases/fg_true_then_garbage.json | 1 + test/parsing/cases/fg_true_then_garbage.json.gold | 3 + test/parsing/cases/four_byte_utf8.json | 2 + test/parsing/cases/four_byte_utf8.json.gold | 5 + test/parsing/cases/high_overflow.json | 1 + test/parsing/cases/high_overflow.json.gold | 2 + test/parsing/cases/integers.json | 3 + test/parsing/cases/integers.json.gold | 14 + test/parsing/cases/invalid_utf8.json | 1 + test/parsing/cases/invalid_utf8.json.gold | 3 + test/parsing/cases/isolated_surrogate_marker.json | 1 + .../cases/isolated_surrogate_marker.json.gold | 2 + test/parsing/cases/leading_zero_in_number.json | 1 + .../parsing/cases/leading_zero_in_number.json.gold | 5 + test/parsing/cases/lonely_minus_sign.json | 7 + test/parsing/cases/lonely_minus_sign.json.gold | 9 + test/parsing/cases/lonely_number.json | 1 + test/parsing/cases/lonely_number.json.gold | 2 + test/parsing/cases/low_overflow.json | 1 + test/parsing/cases/low_overflow.json.gold | 2 + test/parsing/cases/map_close.json | 1 + test/parsing/cases/map_close.json.gold | 2 + .../cases/missing_integer_after_decimal_point.json | 1 + .../missing_integer_after_decimal_point.json.gold | 2 + .../cases/missing_integer_after_exponent.json | 1 + .../cases/missing_integer_after_exponent.json.gold | 2 + test/parsing/cases/multiple.json | 3 + test/parsing/cases/multiple.json.gold | 4 + test/parsing/cases/non_utf8_char_in_string.json | 1 + .../cases/non_utf8_char_in_string.json.gold | 8 + test/parsing/cases/np_partial_bad.json | 1 + test/parsing/cases/np_partial_bad.json.gold | 5 + test/parsing/cases/null.json | 1 + test/parsing/cases/null.json.gold | 2 + test/parsing/cases/nulls_and_bools.json | 5 + test/parsing/cases/nulls_and_bools.json.gold | 9 + test/parsing/cases/simple.json | 5 + test/parsing/cases/simple.json.gold | 9 + test/parsing/cases/simple_with_comments.json | 11 + test/parsing/cases/simple_with_comments.json.gold | 5 + test/parsing/cases/string_invalid_escape.json | 1 + test/parsing/cases/string_invalid_escape.json.gold | 3 + test/parsing/cases/string_invalid_hex_char.json | 1 + .../cases/string_invalid_hex_char.json.gold | 2 + test/parsing/cases/string_with_escapes.json | 3 + test/parsing/cases/string_with_escapes.json.gold | 7 + .../parsing/cases/string_with_invalid_newline.json | 2 + .../cases/string_with_invalid_newline.json.gold | 2 + test/parsing/cases/three_byte_utf8.json | 1 + test/parsing/cases/three_byte_utf8.json.gold | 7 + test/parsing/cases/true.json | 1 + test/parsing/cases/true.json.gold | 2 + test/parsing/cases/unescaped_bulgarian.json | 1 + test/parsing/cases/unescaped_bulgarian.json.gold | 4 + test/parsing/cases/zerobyte.json | 1 + test/parsing/cases/zerobyte.json.gold | Bin 0 -> 28 bytes test/parsing/run_tests.sh | 94 + test/parsing/yajl_test.c | 281 +++ test/run_tests.sh | 94 - test/yajl_test.c | 281 --- 238 files changed, 2891 insertions(+), 2891 deletions(-) delete mode 100644 test/CMakeLists.txt delete mode 100644 test/cases/ac_difficult_json_c_test_case_with_comments.json delete mode 100644 test/cases/ac_difficult_json_c_test_case_with_comments.json.gold delete mode 100644 test/cases/ac_simple_with_comments.json delete mode 100644 test/cases/ac_simple_with_comments.json.gold delete mode 100644 test/cases/ag_false_then_garbage.json delete mode 100644 test/cases/ag_false_then_garbage.json.gold delete mode 100644 test/cases/ag_null_then_garbage.json delete mode 100644 test/cases/ag_null_then_garbage.json.gold delete mode 100644 test/cases/ag_true_then_garbage.json delete mode 100644 test/cases/ag_true_then_garbage.json.gold delete mode 100644 test/cases/am_eof.json delete mode 100644 test/cases/am_eof.json.gold delete mode 100644 test/cases/am_integers.json delete mode 100644 test/cases/am_integers.json.gold delete mode 100644 test/cases/am_multiple.json delete mode 100644 test/cases/am_multiple.json.gold delete mode 100644 test/cases/am_stuff.json delete mode 100644 test/cases/am_stuff.json.gold delete mode 100644 test/cases/ap_array_open.json delete mode 100644 test/cases/ap_array_open.json.gold delete mode 100644 test/cases/ap_eof_str.json delete mode 100644 test/cases/ap_eof_str.json.gold delete mode 100644 test/cases/ap_map_open.json delete mode 100644 test/cases/ap_map_open.json.gold delete mode 100644 test/cases/ap_partial_ok.json delete mode 100644 test/cases/ap_partial_ok.json.gold delete mode 100644 test/cases/array.json delete mode 100644 test/cases/array.json.gold delete mode 100644 test/cases/array_close.json delete mode 100644 test/cases/array_close.json.gold delete mode 100644 test/cases/bignums.json delete mode 100644 test/cases/bignums.json.gold delete mode 100644 test/cases/bogus_char.json delete mode 100644 test/cases/bogus_char.json.gold delete mode 100644 test/cases/codepoints_from_unicode_org.json delete mode 100644 test/cases/codepoints_from_unicode_org.json.gold delete mode 100644 test/cases/deep_arrays.json delete mode 100644 test/cases/deep_arrays.json.gold delete mode 100644 test/cases/difficult_json_c_test_case.json delete mode 100644 test/cases/difficult_json_c_test_case.json.gold delete mode 100644 test/cases/doubles.json delete mode 100644 test/cases/doubles.json.gold delete mode 100644 test/cases/doubles_in_array.json delete mode 100644 test/cases/doubles_in_array.json.gold delete mode 100644 test/cases/empty_array.json delete mode 100644 test/cases/empty_array.json.gold delete mode 100644 test/cases/empty_string.json delete mode 100644 test/cases/empty_string.json.gold delete mode 100644 test/cases/escaped_bulgarian.json delete mode 100644 test/cases/escaped_bulgarian.json.gold delete mode 100644 test/cases/escaped_foobar.json delete mode 100644 test/cases/escaped_foobar.json.gold delete mode 100644 test/cases/false.json delete mode 100644 test/cases/false.json.gold delete mode 100644 test/cases/fg_false_then_garbage.json delete mode 100644 test/cases/fg_false_then_garbage.json.gold delete mode 100644 test/cases/fg_issue_7.json delete mode 100644 test/cases/fg_issue_7.json.gold delete mode 100644 test/cases/fg_null_then_garbage.json delete mode 100644 test/cases/fg_null_then_garbage.json.gold delete mode 100644 test/cases/fg_true_then_garbage.json delete mode 100644 test/cases/fg_true_then_garbage.json.gold delete mode 100644 test/cases/four_byte_utf8.json delete mode 100644 test/cases/four_byte_utf8.json.gold delete mode 100644 test/cases/high_overflow.json delete mode 100644 test/cases/high_overflow.json.gold delete mode 100644 test/cases/integers.json delete mode 100644 test/cases/integers.json.gold delete mode 100644 test/cases/invalid_utf8.json delete mode 100644 test/cases/invalid_utf8.json.gold delete mode 100644 test/cases/isolated_surrogate_marker.json delete mode 100644 test/cases/isolated_surrogate_marker.json.gold delete mode 100644 test/cases/leading_zero_in_number.json delete mode 100644 test/cases/leading_zero_in_number.json.gold delete mode 100644 test/cases/lonely_minus_sign.json delete mode 100644 test/cases/lonely_minus_sign.json.gold delete mode 100644 test/cases/lonely_number.json delete mode 100644 test/cases/lonely_number.json.gold delete mode 100644 test/cases/low_overflow.json delete mode 100644 test/cases/low_overflow.json.gold delete mode 100644 test/cases/map_close.json delete mode 100644 test/cases/map_close.json.gold delete mode 100644 test/cases/missing_integer_after_decimal_point.json delete mode 100644 test/cases/missing_integer_after_decimal_point.json.gold delete mode 100644 test/cases/missing_integer_after_exponent.json delete mode 100644 test/cases/missing_integer_after_exponent.json.gold delete mode 100644 test/cases/multiple.json delete mode 100644 test/cases/multiple.json.gold delete mode 100644 test/cases/non_utf8_char_in_string.json delete mode 100644 test/cases/non_utf8_char_in_string.json.gold delete mode 100644 test/cases/np_partial_bad.json delete mode 100644 test/cases/np_partial_bad.json.gold delete mode 100644 test/cases/null.json delete mode 100644 test/cases/null.json.gold delete mode 100644 test/cases/nulls_and_bools.json delete mode 100644 test/cases/nulls_and_bools.json.gold delete mode 100644 test/cases/simple.json delete mode 100644 test/cases/simple.json.gold delete mode 100644 test/cases/simple_with_comments.json delete mode 100644 test/cases/simple_with_comments.json.gold delete mode 100644 test/cases/string_invalid_escape.json delete mode 100644 test/cases/string_invalid_escape.json.gold delete mode 100644 test/cases/string_invalid_hex_char.json delete mode 100644 test/cases/string_invalid_hex_char.json.gold delete mode 100644 test/cases/string_with_escapes.json delete mode 100644 test/cases/string_with_escapes.json.gold delete mode 100644 test/cases/string_with_invalid_newline.json delete mode 100644 test/cases/string_with_invalid_newline.json.gold delete mode 100644 test/cases/three_byte_utf8.json delete mode 100644 test/cases/three_byte_utf8.json.gold delete mode 100644 test/cases/true.json delete mode 100644 test/cases/true.json.gold delete mode 100644 test/cases/unescaped_bulgarian.json delete mode 100644 test/cases/unescaped_bulgarian.json.gold delete mode 100644 test/cases/zerobyte.json delete mode 100644 test/cases/zerobyte.json.gold create mode 100644 test/parsing/CMakeLists.txt create mode 100644 test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json create mode 100644 test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold create mode 100644 test/parsing/cases/ac_simple_with_comments.json create mode 100644 test/parsing/cases/ac_simple_with_comments.json.gold create mode 100644 test/parsing/cases/ag_false_then_garbage.json create mode 100644 test/parsing/cases/ag_false_then_garbage.json.gold create mode 100644 test/parsing/cases/ag_null_then_garbage.json create mode 100644 test/parsing/cases/ag_null_then_garbage.json.gold create mode 100644 test/parsing/cases/ag_true_then_garbage.json create mode 100644 test/parsing/cases/ag_true_then_garbage.json.gold create mode 100644 test/parsing/cases/am_eof.json create mode 100644 test/parsing/cases/am_eof.json.gold create mode 100644 test/parsing/cases/am_integers.json create mode 100644 test/parsing/cases/am_integers.json.gold create mode 100644 test/parsing/cases/am_multiple.json create mode 100644 test/parsing/cases/am_multiple.json.gold create mode 100644 test/parsing/cases/am_stuff.json create mode 100644 test/parsing/cases/am_stuff.json.gold create mode 100644 test/parsing/cases/ap_array_open.json create mode 100644 test/parsing/cases/ap_array_open.json.gold create mode 100644 test/parsing/cases/ap_eof_str.json create mode 100644 test/parsing/cases/ap_eof_str.json.gold create mode 100644 test/parsing/cases/ap_map_open.json create mode 100644 test/parsing/cases/ap_map_open.json.gold create mode 100644 test/parsing/cases/ap_partial_ok.json create mode 100644 test/parsing/cases/ap_partial_ok.json.gold create mode 100644 test/parsing/cases/array.json create mode 100644 test/parsing/cases/array.json.gold create mode 100644 test/parsing/cases/array_close.json create mode 100644 test/parsing/cases/array_close.json.gold create mode 100644 test/parsing/cases/bignums.json create mode 100644 test/parsing/cases/bignums.json.gold create mode 100644 test/parsing/cases/bogus_char.json create mode 100644 test/parsing/cases/bogus_char.json.gold create mode 100644 test/parsing/cases/codepoints_from_unicode_org.json create mode 100644 test/parsing/cases/codepoints_from_unicode_org.json.gold create mode 100644 test/parsing/cases/deep_arrays.json create mode 100644 test/parsing/cases/deep_arrays.json.gold create mode 100644 test/parsing/cases/difficult_json_c_test_case.json create mode 100644 test/parsing/cases/difficult_json_c_test_case.json.gold create mode 100644 test/parsing/cases/doubles.json create mode 100644 test/parsing/cases/doubles.json.gold create mode 100644 test/parsing/cases/doubles_in_array.json create mode 100644 test/parsing/cases/doubles_in_array.json.gold create mode 100644 test/parsing/cases/empty_array.json create mode 100644 test/parsing/cases/empty_array.json.gold create mode 100644 test/parsing/cases/empty_string.json create mode 100644 test/parsing/cases/empty_string.json.gold create mode 100644 test/parsing/cases/escaped_bulgarian.json create mode 100644 test/parsing/cases/escaped_bulgarian.json.gold create mode 100644 test/parsing/cases/escaped_foobar.json create mode 100644 test/parsing/cases/escaped_foobar.json.gold create mode 100644 test/parsing/cases/false.json create mode 100644 test/parsing/cases/false.json.gold create mode 100644 test/parsing/cases/fg_false_then_garbage.json create mode 100644 test/parsing/cases/fg_false_then_garbage.json.gold create mode 100644 test/parsing/cases/fg_issue_7.json create mode 100644 test/parsing/cases/fg_issue_7.json.gold create mode 100644 test/parsing/cases/fg_null_then_garbage.json create mode 100644 test/parsing/cases/fg_null_then_garbage.json.gold create mode 100644 test/parsing/cases/fg_true_then_garbage.json create mode 100644 test/parsing/cases/fg_true_then_garbage.json.gold create mode 100644 test/parsing/cases/four_byte_utf8.json create mode 100644 test/parsing/cases/four_byte_utf8.json.gold create mode 100644 test/parsing/cases/high_overflow.json create mode 100644 test/parsing/cases/high_overflow.json.gold create mode 100644 test/parsing/cases/integers.json create mode 100644 test/parsing/cases/integers.json.gold create mode 100644 test/parsing/cases/invalid_utf8.json create mode 100644 test/parsing/cases/invalid_utf8.json.gold create mode 100644 test/parsing/cases/isolated_surrogate_marker.json create mode 100644 test/parsing/cases/isolated_surrogate_marker.json.gold create mode 100644 test/parsing/cases/leading_zero_in_number.json create mode 100644 test/parsing/cases/leading_zero_in_number.json.gold create mode 100644 test/parsing/cases/lonely_minus_sign.json create mode 100644 test/parsing/cases/lonely_minus_sign.json.gold create mode 100644 test/parsing/cases/lonely_number.json create mode 100644 test/parsing/cases/lonely_number.json.gold create mode 100644 test/parsing/cases/low_overflow.json create mode 100644 test/parsing/cases/low_overflow.json.gold create mode 100644 test/parsing/cases/map_close.json create mode 100644 test/parsing/cases/map_close.json.gold create mode 100644 test/parsing/cases/missing_integer_after_decimal_point.json create mode 100644 test/parsing/cases/missing_integer_after_decimal_point.json.gold create mode 100644 test/parsing/cases/missing_integer_after_exponent.json create mode 100644 test/parsing/cases/missing_integer_after_exponent.json.gold create mode 100644 test/parsing/cases/multiple.json create mode 100644 test/parsing/cases/multiple.json.gold create mode 100644 test/parsing/cases/non_utf8_char_in_string.json create mode 100644 test/parsing/cases/non_utf8_char_in_string.json.gold create mode 100644 test/parsing/cases/np_partial_bad.json create mode 100644 test/parsing/cases/np_partial_bad.json.gold create mode 100644 test/parsing/cases/null.json create mode 100644 test/parsing/cases/null.json.gold create mode 100644 test/parsing/cases/nulls_and_bools.json create mode 100644 test/parsing/cases/nulls_and_bools.json.gold create mode 100644 test/parsing/cases/simple.json create mode 100644 test/parsing/cases/simple.json.gold create mode 100644 test/parsing/cases/simple_with_comments.json create mode 100644 test/parsing/cases/simple_with_comments.json.gold create mode 100644 test/parsing/cases/string_invalid_escape.json create mode 100644 test/parsing/cases/string_invalid_escape.json.gold create mode 100644 test/parsing/cases/string_invalid_hex_char.json create mode 100644 test/parsing/cases/string_invalid_hex_char.json.gold create mode 100644 test/parsing/cases/string_with_escapes.json create mode 100644 test/parsing/cases/string_with_escapes.json.gold create mode 100644 test/parsing/cases/string_with_invalid_newline.json create mode 100644 test/parsing/cases/string_with_invalid_newline.json.gold create mode 100644 test/parsing/cases/three_byte_utf8.json create mode 100644 test/parsing/cases/three_byte_utf8.json.gold create mode 100644 test/parsing/cases/true.json create mode 100644 test/parsing/cases/true.json.gold create mode 100644 test/parsing/cases/unescaped_bulgarian.json create mode 100644 test/parsing/cases/unescaped_bulgarian.json.gold create mode 100644 test/parsing/cases/zerobyte.json create mode 100644 test/parsing/cases/zerobyte.json.gold create mode 100755 test/parsing/run_tests.sh create mode 100644 test/parsing/yajl_test.c delete mode 100755 test/run_tests.sh delete mode 100644 test/yajl_test.c diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index 153288c..0000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2007-2011, Lloyd Hilaiel -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -SET (SRCS yajl_test.c) - -# use the library we build, duh. -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/include) -LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) - -ADD_EXECUTABLE(yajl_test ${SRCS}) - -TARGET_LINK_LIBRARIES(yajl_test yajl_s) diff --git a/test/cases/ac_difficult_json_c_test_case_with_comments.json b/test/cases/ac_difficult_json_c_test_case_with_comments.json deleted file mode 100644 index 2463c71..0000000 --- a/test/cases/ac_difficult_json_c_test_case_with_comments.json +++ /dev/null @@ -1 +0,0 @@ -{ "glossary": { /* you */ "title": /**/ "example glossary", /*should*/"GlossDiv": { "title": /*never*/"S", /*ever*/"GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", /*see*/"GlossSeeAlso"/*this*/:/*coming*/[/*out*/"GML"/*of*/,/*the*/"XML"/*parser!*/, "markup"] /*hey*/}/*ho*/]/*hey*/}/*ho*/} } // and the parser won't even get this far, so chill. /* hah! diff --git a/test/cases/ac_difficult_json_c_test_case_with_comments.json.gold b/test/cases/ac_difficult_json_c_test_case_with_comments.json.gold deleted file mode 100644 index c3adc11..0000000 --- a/test/cases/ac_difficult_json_c_test_case_with_comments.json.gold +++ /dev/null @@ -1,36 +0,0 @@ -map open '{' -key: 'glossary' -map open '{' -key: 'title' -string: 'example glossary' -key: 'GlossDiv' -map open '{' -key: 'title' -string: 'S' -key: 'GlossList' -array open '[' -map open '{' -key: 'ID' -string: 'SGML' -key: 'SortAs' -string: 'SGML' -key: 'GlossTerm' -string: 'Standard Generalized Markup Language' -key: 'Acronym' -string: 'SGML' -key: 'Abbrev' -string: 'ISO 8879:1986' -key: 'GlossDef' -string: 'A meta-markup language, used to create markup languages such as DocBook.' -key: 'GlossSeeAlso' -array open '[' -string: 'GML' -string: 'XML' -string: 'markup' -array close ']' -map close '}' -array close ']' -map close '}' -map close '}' -map close '}' -memory leaks: 0 diff --git a/test/cases/ac_simple_with_comments.json b/test/cases/ac_simple_with_comments.json deleted file mode 100644 index 3b79bba..0000000 --- a/test/cases/ac_simple_with_comments.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "this": "is", // ignore this - "really": "simple", - /* ignore -this -too * / -** // -(/ -******/ - "json": "right?" -} diff --git a/test/cases/ac_simple_with_comments.json.gold b/test/cases/ac_simple_with_comments.json.gold deleted file mode 100644 index 80fcad2..0000000 --- a/test/cases/ac_simple_with_comments.json.gold +++ /dev/null @@ -1,9 +0,0 @@ -map open '{' -key: 'this' -string: 'is' -key: 'really' -string: 'simple' -key: 'json' -string: 'right?' -map close '}' -memory leaks: 0 diff --git a/test/cases/ag_false_then_garbage.json b/test/cases/ag_false_then_garbage.json deleted file mode 100644 index 78f4e96..0000000 --- a/test/cases/ag_false_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -falsex \ No newline at end of file diff --git a/test/cases/ag_false_then_garbage.json.gold b/test/cases/ag_false_then_garbage.json.gold deleted file mode 100644 index e55fa1f..0000000 --- a/test/cases/ag_false_then_garbage.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -bool: false -memory leaks: 0 diff --git a/test/cases/ag_null_then_garbage.json b/test/cases/ag_null_then_garbage.json deleted file mode 100644 index 7b65b35..0000000 --- a/test/cases/ag_null_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -nullx diff --git a/test/cases/ag_null_then_garbage.json.gold b/test/cases/ag_null_then_garbage.json.gold deleted file mode 100644 index 94ad0fa..0000000 --- a/test/cases/ag_null_then_garbage.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -null -memory leaks: 0 diff --git a/test/cases/ag_true_then_garbage.json b/test/cases/ag_true_then_garbage.json deleted file mode 100644 index 9151612..0000000 --- a/test/cases/ag_true_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -truex \ No newline at end of file diff --git a/test/cases/ag_true_then_garbage.json.gold b/test/cases/ag_true_then_garbage.json.gold deleted file mode 100644 index 0858bf7..0000000 --- a/test/cases/ag_true_then_garbage.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -bool: true -memory leaks: 0 diff --git a/test/cases/am_eof.json b/test/cases/am_eof.json deleted file mode 100644 index 43a772f..0000000 --- a/test/cases/am_eof.json +++ /dev/null @@ -1 +0,0 @@ -{ "123": diff --git a/test/cases/am_eof.json.gold b/test/cases/am_eof.json.gold deleted file mode 100644 index 5a9708b..0000000 --- a/test/cases/am_eof.json.gold +++ /dev/null @@ -1,4 +0,0 @@ -map open '{' -key: '123' -parse error: premature EOF -memory leaks: 0 diff --git a/test/cases/am_integers.json b/test/cases/am_integers.json deleted file mode 100644 index 856809b..0000000 --- a/test/cases/am_integers.json +++ /dev/null @@ -1 +0,0 @@ -1221 21 diff --git a/test/cases/am_integers.json.gold b/test/cases/am_integers.json.gold deleted file mode 100644 index 7b8a953..0000000 --- a/test/cases/am_integers.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -integer: 1221 -integer: 21 -memory leaks: 0 diff --git a/test/cases/am_multiple.json b/test/cases/am_multiple.json deleted file mode 100644 index b573db0..0000000 --- a/test/cases/am_multiple.json +++ /dev/null @@ -1,3 +0,0 @@ - -{} -{} diff --git a/test/cases/am_multiple.json.gold b/test/cases/am_multiple.json.gold deleted file mode 100644 index bf705d4..0000000 --- a/test/cases/am_multiple.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -map open '{' -map close '}' -map open '{' -map close '}' -memory leaks: 0 diff --git a/test/cases/am_stuff.json b/test/cases/am_stuff.json deleted file mode 100644 index 89c607d..0000000 --- a/test/cases/am_stuff.json +++ /dev/null @@ -1,7 +0,0 @@ -{} -[] -[] -"sdfasd" -123 -{ "123" : 123 } -3.1e124 diff --git a/test/cases/am_stuff.json.gold b/test/cases/am_stuff.json.gold deleted file mode 100644 index bf3a5bb..0000000 --- a/test/cases/am_stuff.json.gold +++ /dev/null @@ -1,14 +0,0 @@ -map open '{' -map close '}' -array open '[' -array close ']' -array open '[' -array close ']' -string: 'sdfasd' -integer: 123 -map open '{' -key: '123' -integer: 123 -map close '}' -double: 3.1e+124 -memory leaks: 0 diff --git a/test/cases/ap_array_open.json b/test/cases/ap_array_open.json deleted file mode 100644 index 558ed37..0000000 --- a/test/cases/ap_array_open.json +++ /dev/null @@ -1 +0,0 @@ -[ diff --git a/test/cases/ap_array_open.json.gold b/test/cases/ap_array_open.json.gold deleted file mode 100644 index 478b6b9..0000000 --- a/test/cases/ap_array_open.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -array open '[' -memory leaks: 0 diff --git a/test/cases/ap_eof_str.json b/test/cases/ap_eof_str.json deleted file mode 100644 index 6a21793..0000000 --- a/test/cases/ap_eof_str.json +++ /dev/null @@ -1 +0,0 @@ -"abc \ No newline at end of file diff --git a/test/cases/ap_eof_str.json.gold b/test/cases/ap_eof_str.json.gold deleted file mode 100644 index 736730b..0000000 --- a/test/cases/ap_eof_str.json.gold +++ /dev/null @@ -1 +0,0 @@ -memory leaks: 0 diff --git a/test/cases/ap_map_open.json b/test/cases/ap_map_open.json deleted file mode 100644 index 98232c6..0000000 --- a/test/cases/ap_map_open.json +++ /dev/null @@ -1 +0,0 @@ -{ diff --git a/test/cases/ap_map_open.json.gold b/test/cases/ap_map_open.json.gold deleted file mode 100644 index ab1f33d..0000000 --- a/test/cases/ap_map_open.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -map open '{' -memory leaks: 0 diff --git a/test/cases/ap_partial_ok.json b/test/cases/ap_partial_ok.json deleted file mode 100644 index 2fbd027..0000000 --- a/test/cases/ap_partial_ok.json +++ /dev/null @@ -1 +0,0 @@ -[ "foo", "bar" diff --git a/test/cases/ap_partial_ok.json.gold b/test/cases/ap_partial_ok.json.gold deleted file mode 100644 index 9f754c7..0000000 --- a/test/cases/ap_partial_ok.json.gold +++ /dev/null @@ -1,4 +0,0 @@ -array open '[' -string: 'foo' -string: 'bar' -memory leaks: 0 diff --git a/test/cases/array.json b/test/cases/array.json deleted file mode 100644 index f76058d..0000000 --- a/test/cases/array.json +++ /dev/null @@ -1,6 +0,0 @@ -["foo", - "bar", "baz", - true,false,null,{"key":"value"}, - [null,null,null,[]], - "\n\r\\" -] diff --git a/test/cases/array.json.gold b/test/cases/array.json.gold deleted file mode 100644 index 477559d..0000000 --- a/test/cases/array.json.gold +++ /dev/null @@ -1,22 +0,0 @@ -array open '[' -string: 'foo' -string: 'bar' -string: 'baz' -bool: true -bool: false -null -map open '{' -key: 'key' -string: 'value' -map close '}' -array open '[' -null -null -null -array open '[' -array close ']' -array close ']' -string: ' - \' -array close ']' -memory leaks: 0 diff --git a/test/cases/array_close.json b/test/cases/array_close.json deleted file mode 100644 index 079b579..0000000 --- a/test/cases/array_close.json +++ /dev/null @@ -1 +0,0 @@ -] diff --git a/test/cases/array_close.json.gold b/test/cases/array_close.json.gold deleted file mode 100644 index 972fd39..0000000 --- a/test/cases/array_close.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -parse error: unallowed token at this point in JSON text -memory leaks: 0 diff --git a/test/cases/bignums.json b/test/cases/bignums.json deleted file mode 100644 index 75aca9a..0000000 --- a/test/cases/bignums.json +++ /dev/null @@ -1 +0,0 @@ -[ 9223372036854775807, -9223372036854775807 ] diff --git a/test/cases/bignums.json.gold b/test/cases/bignums.json.gold deleted file mode 100644 index 8bb3b1e..0000000 --- a/test/cases/bignums.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -array open '[' -integer: 9223372036854775807 -integer: -9223372036854775807 -array close ']' -memory leaks: 0 diff --git a/test/cases/bogus_char.json b/test/cases/bogus_char.json deleted file mode 100644 index 8163bd8..0000000 --- a/test/cases/bogus_char.json +++ /dev/null @@ -1,4 +0,0 @@ -["this","is","what","should","be", - "a happy bit of json", - "but someone, misspelled \"true\"", ture, - "who says JSON is easy for humans to generate?"] diff --git a/test/cases/bogus_char.json.gold b/test/cases/bogus_char.json.gold deleted file mode 100644 index 0c68a49..0000000 --- a/test/cases/bogus_char.json.gold +++ /dev/null @@ -1,10 +0,0 @@ -array open '[' -string: 'this' -string: 'is' -string: 'what' -string: 'should' -string: 'be' -string: 'a happy bit of json' -string: 'but someone, misspelled "true"' -lexical error: invalid string in json text. -memory leaks: 0 diff --git a/test/cases/codepoints_from_unicode_org.json b/test/cases/codepoints_from_unicode_org.json deleted file mode 100644 index f91f3be..0000000 --- a/test/cases/codepoints_from_unicode_org.json +++ /dev/null @@ -1 +0,0 @@ -"\u004d\u0430\u4e8c\ud800\udf02" diff --git a/test/cases/codepoints_from_unicode_org.json.gold b/test/cases/codepoints_from_unicode_org.json.gold deleted file mode 100644 index f359a1b..0000000 --- a/test/cases/codepoints_from_unicode_org.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -string: 'Mа二𐌂' -memory leaks: 0 diff --git a/test/cases/deep_arrays.json b/test/cases/deep_arrays.json deleted file mode 100644 index 82d1b0d..0000000 --- a/test/cases/deep_arrays.json +++ /dev/null @@ -1 +0,0 @@ -[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/test/cases/deep_arrays.json.gold b/test/cases/deep_arrays.json.gold deleted file mode 100644 index 4d5cd99..0000000 --- a/test/cases/deep_arrays.json.gold +++ /dev/null @@ -1,2049 +0,0 @@ -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array open '[' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -array close ']' -memory leaks: 0 diff --git a/test/cases/difficult_json_c_test_case.json b/test/cases/difficult_json_c_test_case.json deleted file mode 100644 index 6998f55..0000000 --- a/test/cases/difficult_json_c_test_case.json +++ /dev/null @@ -1 +0,0 @@ -{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML", "markup"] } ] } } } diff --git a/test/cases/difficult_json_c_test_case.json.gold b/test/cases/difficult_json_c_test_case.json.gold deleted file mode 100644 index c3adc11..0000000 --- a/test/cases/difficult_json_c_test_case.json.gold +++ /dev/null @@ -1,36 +0,0 @@ -map open '{' -key: 'glossary' -map open '{' -key: 'title' -string: 'example glossary' -key: 'GlossDiv' -map open '{' -key: 'title' -string: 'S' -key: 'GlossList' -array open '[' -map open '{' -key: 'ID' -string: 'SGML' -key: 'SortAs' -string: 'SGML' -key: 'GlossTerm' -string: 'Standard Generalized Markup Language' -key: 'Acronym' -string: 'SGML' -key: 'Abbrev' -string: 'ISO 8879:1986' -key: 'GlossDef' -string: 'A meta-markup language, used to create markup languages such as DocBook.' -key: 'GlossSeeAlso' -array open '[' -string: 'GML' -string: 'XML' -string: 'markup' -array close ']' -map close '}' -array close ']' -map close '}' -map close '}' -map close '}' -memory leaks: 0 diff --git a/test/cases/doubles.json b/test/cases/doubles.json deleted file mode 100644 index 626f21c..0000000 --- a/test/cases/doubles.json +++ /dev/null @@ -1 +0,0 @@ -[ 0.1e2, 1e1, 3.141569, 10000000000000e-10] diff --git a/test/cases/doubles.json.gold b/test/cases/doubles.json.gold deleted file mode 100644 index c0ea726..0000000 --- a/test/cases/doubles.json.gold +++ /dev/null @@ -1,7 +0,0 @@ -array open '[' -double: 10 -double: 10 -double: 3.14157 -double: 1000 -array close ']' -memory leaks: 0 diff --git a/test/cases/doubles_in_array.json b/test/cases/doubles_in_array.json deleted file mode 100644 index 06bf727..0000000 --- a/test/cases/doubles_in_array.json +++ /dev/null @@ -1 +0,0 @@ -[0.00011999999999999999, 6E-06, 6E-06, 1E-06, 1E-06] diff --git a/test/cases/doubles_in_array.json.gold b/test/cases/doubles_in_array.json.gold deleted file mode 100644 index 57f5b9a..0000000 --- a/test/cases/doubles_in_array.json.gold +++ /dev/null @@ -1,8 +0,0 @@ -array open '[' -double: 0.00012 -double: 6e-06 -double: 6e-06 -double: 1e-06 -double: 1e-06 -array close ']' -memory leaks: 0 diff --git a/test/cases/empty_array.json b/test/cases/empty_array.json deleted file mode 100644 index 0637a08..0000000 --- a/test/cases/empty_array.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/test/cases/empty_array.json.gold b/test/cases/empty_array.json.gold deleted file mode 100644 index f069c8f..0000000 --- a/test/cases/empty_array.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -array open '[' -array close ']' -memory leaks: 0 diff --git a/test/cases/empty_string.json b/test/cases/empty_string.json deleted file mode 100644 index e16c76d..0000000 --- a/test/cases/empty_string.json +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/test/cases/empty_string.json.gold b/test/cases/empty_string.json.gold deleted file mode 100644 index c197bba..0000000 --- a/test/cases/empty_string.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -string: '' -memory leaks: 0 diff --git a/test/cases/escaped_bulgarian.json b/test/cases/escaped_bulgarian.json deleted file mode 100644 index 9ce1d1c..0000000 --- a/test/cases/escaped_bulgarian.json +++ /dev/null @@ -1,4 +0,0 @@ -["\u0414\u0430", - "\u041c\u0443", - "\u0415\u0431\u0430", - "\u041c\u0430\u0439\u043a\u0430\u0442\u0430"] diff --git a/test/cases/escaped_bulgarian.json.gold b/test/cases/escaped_bulgarian.json.gold deleted file mode 100644 index a0c9ae9..0000000 --- a/test/cases/escaped_bulgarian.json.gold +++ /dev/null @@ -1,7 +0,0 @@ -array open '[' -string: 'Да' -string: 'Му' -string: 'Еба' -string: 'Майката' -array close ']' -memory leaks: 0 diff --git a/test/cases/escaped_foobar.json b/test/cases/escaped_foobar.json deleted file mode 100644 index 2c0e25f..0000000 --- a/test/cases/escaped_foobar.json +++ /dev/null @@ -1 +0,0 @@ -"\u0066\u006f\u006f\u0062\u0061\u0072" diff --git a/test/cases/escaped_foobar.json.gold b/test/cases/escaped_foobar.json.gold deleted file mode 100644 index 5753c64..0000000 --- a/test/cases/escaped_foobar.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -string: 'foobar' -memory leaks: 0 diff --git a/test/cases/false.json b/test/cases/false.json deleted file mode 100644 index c508d53..0000000 --- a/test/cases/false.json +++ /dev/null @@ -1 +0,0 @@ -false diff --git a/test/cases/false.json.gold b/test/cases/false.json.gold deleted file mode 100644 index e55fa1f..0000000 --- a/test/cases/false.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -bool: false -memory leaks: 0 diff --git a/test/cases/fg_false_then_garbage.json b/test/cases/fg_false_then_garbage.json deleted file mode 100644 index 78f4e96..0000000 --- a/test/cases/fg_false_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -falsex \ No newline at end of file diff --git a/test/cases/fg_false_then_garbage.json.gold b/test/cases/fg_false_then_garbage.json.gold deleted file mode 100644 index fe8fc1a..0000000 --- a/test/cases/fg_false_then_garbage.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -bool: false -parse error: trailing garbage -memory leaks: 0 diff --git a/test/cases/fg_issue_7.json b/test/cases/fg_issue_7.json deleted file mode 100644 index 77152a9..0000000 --- a/test/cases/fg_issue_7.json +++ /dev/null @@ -1 +0,0 @@ -2009-10-20@20:38:21.539575 diff --git a/test/cases/fg_issue_7.json.gold b/test/cases/fg_issue_7.json.gold deleted file mode 100644 index 4d0de0f..0000000 --- a/test/cases/fg_issue_7.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -integer: 2009 -parse error: trailing garbage -memory leaks: 0 diff --git a/test/cases/fg_null_then_garbage.json b/test/cases/fg_null_then_garbage.json deleted file mode 100644 index 7b65b35..0000000 --- a/test/cases/fg_null_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -nullx diff --git a/test/cases/fg_null_then_garbage.json.gold b/test/cases/fg_null_then_garbage.json.gold deleted file mode 100644 index 349235c..0000000 --- a/test/cases/fg_null_then_garbage.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -null -parse error: trailing garbage -memory leaks: 0 diff --git a/test/cases/fg_true_then_garbage.json b/test/cases/fg_true_then_garbage.json deleted file mode 100644 index 31f9deb..0000000 --- a/test/cases/fg_true_then_garbage.json +++ /dev/null @@ -1 +0,0 @@ -truex diff --git a/test/cases/fg_true_then_garbage.json.gold b/test/cases/fg_true_then_garbage.json.gold deleted file mode 100644 index 73af6ce..0000000 --- a/test/cases/fg_true_then_garbage.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -bool: true -parse error: trailing garbage -memory leaks: 0 diff --git a/test/cases/four_byte_utf8.json b/test/cases/four_byte_utf8.json deleted file mode 100644 index 582c575..0000000 --- a/test/cases/four_byte_utf8.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "U+10ABCD": "􊯍" } - diff --git a/test/cases/four_byte_utf8.json.gold b/test/cases/four_byte_utf8.json.gold deleted file mode 100644 index f6260f2..0000000 --- a/test/cases/four_byte_utf8.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -map open '{' -key: 'U+10ABCD' -string: '􊯍' -map close '}' -memory leaks: 0 diff --git a/test/cases/high_overflow.json b/test/cases/high_overflow.json deleted file mode 100644 index 8136b73..0000000 --- a/test/cases/high_overflow.json +++ /dev/null @@ -1 +0,0 @@ -9223372036854775808 \ No newline at end of file diff --git a/test/cases/high_overflow.json.gold b/test/cases/high_overflow.json.gold deleted file mode 100644 index 19c4b77..0000000 --- a/test/cases/high_overflow.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -parse error: integer overflow -memory leaks: 0 diff --git a/test/cases/integers.json b/test/cases/integers.json deleted file mode 100644 index c50e4c9..0000000 --- a/test/cases/integers.json +++ /dev/null @@ -1,3 +0,0 @@ -[ 1,2,3,4,5,6,7, - 123456789 , -123456789, - 2147483647, -2147483647 ] diff --git a/test/cases/integers.json.gold b/test/cases/integers.json.gold deleted file mode 100644 index 7ac4bee..0000000 --- a/test/cases/integers.json.gold +++ /dev/null @@ -1,14 +0,0 @@ -array open '[' -integer: 1 -integer: 2 -integer: 3 -integer: 4 -integer: 5 -integer: 6 -integer: 7 -integer: 123456789 -integer: -123456789 -integer: 2147483647 -integer: -2147483647 -array close ']' -memory leaks: 0 diff --git a/test/cases/invalid_utf8.json b/test/cases/invalid_utf8.json deleted file mode 100644 index 12f1718..0000000 --- a/test/cases/invalid_utf8.json +++ /dev/null @@ -1 +0,0 @@ -["Да М Еба Майката"] diff --git a/test/cases/invalid_utf8.json.gold b/test/cases/invalid_utf8.json.gold deleted file mode 100644 index c0dec77..0000000 --- a/test/cases/invalid_utf8.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -array open '[' -lexical error: invalid bytes in UTF8 string. -memory leaks: 0 diff --git a/test/cases/isolated_surrogate_marker.json b/test/cases/isolated_surrogate_marker.json deleted file mode 100644 index 36959f4..0000000 --- a/test/cases/isolated_surrogate_marker.json +++ /dev/null @@ -1 +0,0 @@ -"\ud800" diff --git a/test/cases/isolated_surrogate_marker.json.gold b/test/cases/isolated_surrogate_marker.json.gold deleted file mode 100644 index cca172e..0000000 --- a/test/cases/isolated_surrogate_marker.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -string: '?' -memory leaks: 0 diff --git a/test/cases/leading_zero_in_number.json b/test/cases/leading_zero_in_number.json deleted file mode 100644 index 959f5ba..0000000 --- a/test/cases/leading_zero_in_number.json +++ /dev/null @@ -1 +0,0 @@ -{ "bad thing": 01 } diff --git a/test/cases/leading_zero_in_number.json.gold b/test/cases/leading_zero_in_number.json.gold deleted file mode 100644 index 1a1580d..0000000 --- a/test/cases/leading_zero_in_number.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -map open '{' -key: 'bad thing' -integer: 0 -parse error: after key and value, inside map, I expect ',' or '}' -memory leaks: 0 diff --git a/test/cases/lonely_minus_sign.json b/test/cases/lonely_minus_sign.json deleted file mode 100644 index 85f69bd..0000000 --- a/test/cases/lonely_minus_sign.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - "foo", true, - true, "blue", - "baby where are you?", "oh boo hoo!", - - -] - diff --git a/test/cases/lonely_minus_sign.json.gold b/test/cases/lonely_minus_sign.json.gold deleted file mode 100644 index d15ede9..0000000 --- a/test/cases/lonely_minus_sign.json.gold +++ /dev/null @@ -1,9 +0,0 @@ -array open '[' -string: 'foo' -bool: true -bool: true -string: 'blue' -string: 'baby where are you?' -string: 'oh boo hoo!' -lexical error: malformed number, a digit is required after the minus sign. -memory leaks: 0 diff --git a/test/cases/lonely_number.json b/test/cases/lonely_number.json deleted file mode 100644 index e2e107a..0000000 --- a/test/cases/lonely_number.json +++ /dev/null @@ -1 +0,0 @@ -123456789 \ No newline at end of file diff --git a/test/cases/lonely_number.json.gold b/test/cases/lonely_number.json.gold deleted file mode 100644 index 181fdfa..0000000 --- a/test/cases/lonely_number.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -integer: 123456789 -memory leaks: 0 diff --git a/test/cases/low_overflow.json b/test/cases/low_overflow.json deleted file mode 100644 index 9af921b..0000000 --- a/test/cases/low_overflow.json +++ /dev/null @@ -1 +0,0 @@ --9223372036854775808 \ No newline at end of file diff --git a/test/cases/low_overflow.json.gold b/test/cases/low_overflow.json.gold deleted file mode 100644 index 19c4b77..0000000 --- a/test/cases/low_overflow.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -parse error: integer overflow -memory leaks: 0 diff --git a/test/cases/map_close.json b/test/cases/map_close.json deleted file mode 100644 index 5c34318..0000000 --- a/test/cases/map_close.json +++ /dev/null @@ -1 +0,0 @@ -} diff --git a/test/cases/map_close.json.gold b/test/cases/map_close.json.gold deleted file mode 100644 index 972fd39..0000000 --- a/test/cases/map_close.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -parse error: unallowed token at this point in JSON text -memory leaks: 0 diff --git a/test/cases/missing_integer_after_decimal_point.json b/test/cases/missing_integer_after_decimal_point.json deleted file mode 100644 index 2369f4b..0000000 --- a/test/cases/missing_integer_after_decimal_point.json +++ /dev/null @@ -1 +0,0 @@ -10.e2 diff --git a/test/cases/missing_integer_after_decimal_point.json.gold b/test/cases/missing_integer_after_decimal_point.json.gold deleted file mode 100644 index c2e7e2e..0000000 --- a/test/cases/missing_integer_after_decimal_point.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -lexical error: malformed number, a digit is required after the decimal point. -memory leaks: 0 diff --git a/test/cases/missing_integer_after_exponent.json b/test/cases/missing_integer_after_exponent.json deleted file mode 100644 index a62b45d..0000000 --- a/test/cases/missing_integer_after_exponent.json +++ /dev/null @@ -1 +0,0 @@ -10e diff --git a/test/cases/missing_integer_after_exponent.json.gold b/test/cases/missing_integer_after_exponent.json.gold deleted file mode 100644 index 5089681..0000000 --- a/test/cases/missing_integer_after_exponent.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -lexical error: malformed number, a digit is required after the exponent. -memory leaks: 0 diff --git a/test/cases/multiple.json b/test/cases/multiple.json deleted file mode 100644 index b573db0..0000000 --- a/test/cases/multiple.json +++ /dev/null @@ -1,3 +0,0 @@ - -{} -{} diff --git a/test/cases/multiple.json.gold b/test/cases/multiple.json.gold deleted file mode 100644 index 0f6f3df..0000000 --- a/test/cases/multiple.json.gold +++ /dev/null @@ -1,4 +0,0 @@ -map open '{' -map close '}' -parse error: trailing garbage -memory leaks: 0 diff --git a/test/cases/non_utf8_char_in_string.json b/test/cases/non_utf8_char_in_string.json deleted file mode 100644 index 253a664..0000000 --- a/test/cases/non_utf8_char_in_string.json +++ /dev/null @@ -1 +0,0 @@ -{"CoreletAPIVersion":2,"CoreletType":"standalone","documentation":"A corelet that provides the capability to upload a folders contents into a users locker.","functions":[{"documentation":"Displays a dialog box that allows user to select a folder on the local system.","name":"ShowBrowseDialog","parameters":[{"documentation":"The callback function for results.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Uploads all mp3 files in the folder provided.","name":"UploadFolder","parameters":[{"documentation":"The path to upload mp3 files from.","name":"path","required":true,"type":"string"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Returns the server name to the current locker service.","name":"GetLockerService","parameters":[]},{"documentation":"Changes the name of the locker service.","name":"SetLockerService","parameters":[{"documentation":"The value of the locker service to set active.","name":"LockerService","required":true,"type":"string"}]},{"documentation":"Downloads locker files to the suggested folder.","name":"DownloadFile","parameters":[{"documentation":"The origin path of the locker file.","name":"path","required":true,"type":"string"},{"documentation":"The Window destination path of the locker file.","name":"destination","required":true,"type":"integer"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]}],"name":"LockerUploader","version":{"major":0,"micro":1,"minor":0},"versionString":"0.0.1"} \ No newline at end of file diff --git a/test/cases/non_utf8_char_in_string.json.gold b/test/cases/non_utf8_char_in_string.json.gold deleted file mode 100644 index 5e3c580..0000000 --- a/test/cases/non_utf8_char_in_string.json.gold +++ /dev/null @@ -1,8 +0,0 @@ -map open '{' -key: 'CoreletAPIVersion' -integer: 2 -key: 'CoreletType' -string: 'standalone' -key: 'documentation' -lexical error: invalid bytes in UTF8 string. -memory leaks: 0 diff --git a/test/cases/np_partial_bad.json b/test/cases/np_partial_bad.json deleted file mode 100644 index 2fbd027..0000000 --- a/test/cases/np_partial_bad.json +++ /dev/null @@ -1 +0,0 @@ -[ "foo", "bar" diff --git a/test/cases/np_partial_bad.json.gold b/test/cases/np_partial_bad.json.gold deleted file mode 100644 index b981bda..0000000 --- a/test/cases/np_partial_bad.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -array open '[' -string: 'foo' -string: 'bar' -parse error: premature EOF -memory leaks: 0 diff --git a/test/cases/null.json b/test/cases/null.json deleted file mode 100644 index 19765bd..0000000 --- a/test/cases/null.json +++ /dev/null @@ -1 +0,0 @@ -null diff --git a/test/cases/null.json.gold b/test/cases/null.json.gold deleted file mode 100644 index 94ad0fa..0000000 --- a/test/cases/null.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -null -memory leaks: 0 diff --git a/test/cases/nulls_and_bools.json b/test/cases/nulls_and_bools.json deleted file mode 100644 index 65eb01f..0000000 --- a/test/cases/nulls_and_bools.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "boolean, true": true, - "boolean, false": false, - "null": null -} diff --git a/test/cases/nulls_and_bools.json.gold b/test/cases/nulls_and_bools.json.gold deleted file mode 100644 index 51f990b..0000000 --- a/test/cases/nulls_and_bools.json.gold +++ /dev/null @@ -1,9 +0,0 @@ -map open '{' -key: 'boolean, true' -bool: true -key: 'boolean, false' -bool: false -key: 'null' -null -map close '}' -memory leaks: 0 diff --git a/test/cases/simple.json b/test/cases/simple.json deleted file mode 100644 index 9ed80c9..0000000 --- a/test/cases/simple.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "this": "is", - "really": "simple", - "json": "right?" -} diff --git a/test/cases/simple.json.gold b/test/cases/simple.json.gold deleted file mode 100644 index 80fcad2..0000000 --- a/test/cases/simple.json.gold +++ /dev/null @@ -1,9 +0,0 @@ -map open '{' -key: 'this' -string: 'is' -key: 'really' -string: 'simple' -key: 'json' -string: 'right?' -map close '}' -memory leaks: 0 diff --git a/test/cases/simple_with_comments.json b/test/cases/simple_with_comments.json deleted file mode 100644 index 3b79bba..0000000 --- a/test/cases/simple_with_comments.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "this": "is", // ignore this - "really": "simple", - /* ignore -this -too * / -** // -(/ -******/ - "json": "right?" -} diff --git a/test/cases/simple_with_comments.json.gold b/test/cases/simple_with_comments.json.gold deleted file mode 100644 index d222e9b..0000000 --- a/test/cases/simple_with_comments.json.gold +++ /dev/null @@ -1,5 +0,0 @@ -map open '{' -key: 'this' -string: 'is' -lexical error: probable comment found in input text, comments are not enabled. -memory leaks: 0 diff --git a/test/cases/string_invalid_escape.json b/test/cases/string_invalid_escape.json deleted file mode 100644 index c554182..0000000 --- a/test/cases/string_invalid_escape.json +++ /dev/null @@ -1 +0,0 @@ -["\n foo \/ bar \r\f\\\uffff\t\b\"\\ and you can't escape thi\s"] diff --git a/test/cases/string_invalid_escape.json.gold b/test/cases/string_invalid_escape.json.gold deleted file mode 100644 index 439df43..0000000 --- a/test/cases/string_invalid_escape.json.gold +++ /dev/null @@ -1,3 +0,0 @@ -array open '[' -lexical error: inside a string, '\' occurs before a character which it may not. -memory leaks: 0 diff --git a/test/cases/string_invalid_hex_char.json b/test/cases/string_invalid_hex_char.json deleted file mode 100644 index bde7ee9..0000000 --- a/test/cases/string_invalid_hex_char.json +++ /dev/null @@ -1 +0,0 @@ -"foo foo, blah blah \u0123 \u4567 \u89ab \uc/ef \uABCD \uEFFE bar baz bing" diff --git a/test/cases/string_invalid_hex_char.json.gold b/test/cases/string_invalid_hex_char.json.gold deleted file mode 100644 index 8498792..0000000 --- a/test/cases/string_invalid_hex_char.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -lexical error: invalid (non-hex) character occurs after '\u' inside string. -memory leaks: 0 diff --git a/test/cases/string_with_escapes.json b/test/cases/string_with_escapes.json deleted file mode 100644 index 59cc940..0000000 --- a/test/cases/string_with_escapes.json +++ /dev/null @@ -1,3 +0,0 @@ -["\n foo \/ bar \r\f\\\uffff\t\b\"\\", - "\"and this string has an escape at the beginning", - "and this string has no escapes" ] diff --git a/test/cases/string_with_escapes.json.gold b/test/cases/string_with_escapes.json.gold deleted file mode 100644 index 086a9dc..0000000 --- a/test/cases/string_with_escapes.json.gold +++ /dev/null @@ -1,7 +0,0 @@ -array open '[' -string: ' - foo / bar \￿ "\' -string: '"and this string has an escape at the beginning' -string: 'and this string has no escapes' -array close ']' -memory leaks: 0 diff --git a/test/cases/string_with_invalid_newline.json b/test/cases/string_with_invalid_newline.json deleted file mode 100644 index 0e3ea0d..0000000 --- a/test/cases/string_with_invalid_newline.json +++ /dev/null @@ -1,2 +0,0 @@ -"la di dah. this is a string, and I can do this, \n, but not this -" diff --git a/test/cases/string_with_invalid_newline.json.gold b/test/cases/string_with_invalid_newline.json.gold deleted file mode 100644 index c38bdef..0000000 --- a/test/cases/string_with_invalid_newline.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -lexical error: invalid character inside string. -memory leaks: 0 diff --git a/test/cases/three_byte_utf8.json b/test/cases/three_byte_utf8.json deleted file mode 100644 index 9c9e656..0000000 --- a/test/cases/three_byte_utf8.json +++ /dev/null @@ -1 +0,0 @@ -{"matzue": "松江", "asakusa": "浅草"} diff --git a/test/cases/three_byte_utf8.json.gold b/test/cases/three_byte_utf8.json.gold deleted file mode 100644 index 7d95fae..0000000 --- a/test/cases/three_byte_utf8.json.gold +++ /dev/null @@ -1,7 +0,0 @@ -map open '{' -key: 'matzue' -string: '松江' -key: 'asakusa' -string: '浅草' -map close '}' -memory leaks: 0 diff --git a/test/cases/true.json b/test/cases/true.json deleted file mode 100644 index 27ba77d..0000000 --- a/test/cases/true.json +++ /dev/null @@ -1 +0,0 @@ -true diff --git a/test/cases/true.json.gold b/test/cases/true.json.gold deleted file mode 100644 index 0858bf7..0000000 --- a/test/cases/true.json.gold +++ /dev/null @@ -1,2 +0,0 @@ -bool: true -memory leaks: 0 diff --git a/test/cases/unescaped_bulgarian.json b/test/cases/unescaped_bulgarian.json deleted file mode 100644 index f9a70a6..0000000 --- a/test/cases/unescaped_bulgarian.json +++ /dev/null @@ -1 +0,0 @@ -["Да Му Еба Майката"] diff --git a/test/cases/unescaped_bulgarian.json.gold b/test/cases/unescaped_bulgarian.json.gold deleted file mode 100644 index 8db076e..0000000 --- a/test/cases/unescaped_bulgarian.json.gold +++ /dev/null @@ -1,4 +0,0 @@ -array open '[' -string: 'Да Му Еба Майката' -array close ']' -memory leaks: 0 diff --git a/test/cases/zerobyte.json b/test/cases/zerobyte.json deleted file mode 100644 index 09c5044..0000000 --- a/test/cases/zerobyte.json +++ /dev/null @@ -1 +0,0 @@ -"\u0000" diff --git a/test/cases/zerobyte.json.gold b/test/cases/zerobyte.json.gold deleted file mode 100644 index b0c58fc..0000000 Binary files a/test/cases/zerobyte.json.gold and /dev/null differ diff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt new file mode 100644 index 0000000..153288c --- /dev/null +++ b/test/parsing/CMakeLists.txt @@ -0,0 +1,23 @@ +# Copyright (c) 2007-2011, Lloyd Hilaiel +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +SET (SRCS yajl_test.c) + +# use the library we build, duh. +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/include) +LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + +ADD_EXECUTABLE(yajl_test ${SRCS}) + +TARGET_LINK_LIBRARIES(yajl_test yajl_s) diff --git a/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json b/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json new file mode 100644 index 0000000..2463c71 --- /dev/null +++ b/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json @@ -0,0 +1 @@ +{ "glossary": { /* you */ "title": /**/ "example glossary", /*should*/"GlossDiv": { "title": /*never*/"S", /*ever*/"GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", /*see*/"GlossSeeAlso"/*this*/:/*coming*/[/*out*/"GML"/*of*/,/*the*/"XML"/*parser!*/, "markup"] /*hey*/}/*ho*/]/*hey*/}/*ho*/} } // and the parser won't even get this far, so chill. /* hah! diff --git a/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold b/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold new file mode 100644 index 0000000..c3adc11 --- /dev/null +++ b/test/parsing/cases/ac_difficult_json_c_test_case_with_comments.json.gold @@ -0,0 +1,36 @@ +map open '{' +key: 'glossary' +map open '{' +key: 'title' +string: 'example glossary' +key: 'GlossDiv' +map open '{' +key: 'title' +string: 'S' +key: 'GlossList' +array open '[' +map open '{' +key: 'ID' +string: 'SGML' +key: 'SortAs' +string: 'SGML' +key: 'GlossTerm' +string: 'Standard Generalized Markup Language' +key: 'Acronym' +string: 'SGML' +key: 'Abbrev' +string: 'ISO 8879:1986' +key: 'GlossDef' +string: 'A meta-markup language, used to create markup languages such as DocBook.' +key: 'GlossSeeAlso' +array open '[' +string: 'GML' +string: 'XML' +string: 'markup' +array close ']' +map close '}' +array close ']' +map close '}' +map close '}' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/ac_simple_with_comments.json b/test/parsing/cases/ac_simple_with_comments.json new file mode 100644 index 0000000..3b79bba --- /dev/null +++ b/test/parsing/cases/ac_simple_with_comments.json @@ -0,0 +1,11 @@ +{ + "this": "is", // ignore this + "really": "simple", + /* ignore +this +too * / +** // +(/ +******/ + "json": "right?" +} diff --git a/test/parsing/cases/ac_simple_with_comments.json.gold b/test/parsing/cases/ac_simple_with_comments.json.gold new file mode 100644 index 0000000..80fcad2 --- /dev/null +++ b/test/parsing/cases/ac_simple_with_comments.json.gold @@ -0,0 +1,9 @@ +map open '{' +key: 'this' +string: 'is' +key: 'really' +string: 'simple' +key: 'json' +string: 'right?' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/ag_false_then_garbage.json b/test/parsing/cases/ag_false_then_garbage.json new file mode 100644 index 0000000..78f4e96 --- /dev/null +++ b/test/parsing/cases/ag_false_then_garbage.json @@ -0,0 +1 @@ +falsex \ No newline at end of file diff --git a/test/parsing/cases/ag_false_then_garbage.json.gold b/test/parsing/cases/ag_false_then_garbage.json.gold new file mode 100644 index 0000000..e55fa1f --- /dev/null +++ b/test/parsing/cases/ag_false_then_garbage.json.gold @@ -0,0 +1,2 @@ +bool: false +memory leaks: 0 diff --git a/test/parsing/cases/ag_null_then_garbage.json b/test/parsing/cases/ag_null_then_garbage.json new file mode 100644 index 0000000..7b65b35 --- /dev/null +++ b/test/parsing/cases/ag_null_then_garbage.json @@ -0,0 +1 @@ +nullx diff --git a/test/parsing/cases/ag_null_then_garbage.json.gold b/test/parsing/cases/ag_null_then_garbage.json.gold new file mode 100644 index 0000000..94ad0fa --- /dev/null +++ b/test/parsing/cases/ag_null_then_garbage.json.gold @@ -0,0 +1,2 @@ +null +memory leaks: 0 diff --git a/test/parsing/cases/ag_true_then_garbage.json b/test/parsing/cases/ag_true_then_garbage.json new file mode 100644 index 0000000..9151612 --- /dev/null +++ b/test/parsing/cases/ag_true_then_garbage.json @@ -0,0 +1 @@ +truex \ No newline at end of file diff --git a/test/parsing/cases/ag_true_then_garbage.json.gold b/test/parsing/cases/ag_true_then_garbage.json.gold new file mode 100644 index 0000000..0858bf7 --- /dev/null +++ b/test/parsing/cases/ag_true_then_garbage.json.gold @@ -0,0 +1,2 @@ +bool: true +memory leaks: 0 diff --git a/test/parsing/cases/am_eof.json b/test/parsing/cases/am_eof.json new file mode 100644 index 0000000..43a772f --- /dev/null +++ b/test/parsing/cases/am_eof.json @@ -0,0 +1 @@ +{ "123": diff --git a/test/parsing/cases/am_eof.json.gold b/test/parsing/cases/am_eof.json.gold new file mode 100644 index 0000000..5a9708b --- /dev/null +++ b/test/parsing/cases/am_eof.json.gold @@ -0,0 +1,4 @@ +map open '{' +key: '123' +parse error: premature EOF +memory leaks: 0 diff --git a/test/parsing/cases/am_integers.json b/test/parsing/cases/am_integers.json new file mode 100644 index 0000000..856809b --- /dev/null +++ b/test/parsing/cases/am_integers.json @@ -0,0 +1 @@ +1221 21 diff --git a/test/parsing/cases/am_integers.json.gold b/test/parsing/cases/am_integers.json.gold new file mode 100644 index 0000000..7b8a953 --- /dev/null +++ b/test/parsing/cases/am_integers.json.gold @@ -0,0 +1,3 @@ +integer: 1221 +integer: 21 +memory leaks: 0 diff --git a/test/parsing/cases/am_multiple.json b/test/parsing/cases/am_multiple.json new file mode 100644 index 0000000..b573db0 --- /dev/null +++ b/test/parsing/cases/am_multiple.json @@ -0,0 +1,3 @@ + +{} +{} diff --git a/test/parsing/cases/am_multiple.json.gold b/test/parsing/cases/am_multiple.json.gold new file mode 100644 index 0000000..bf705d4 --- /dev/null +++ b/test/parsing/cases/am_multiple.json.gold @@ -0,0 +1,5 @@ +map open '{' +map close '}' +map open '{' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/am_stuff.json b/test/parsing/cases/am_stuff.json new file mode 100644 index 0000000..89c607d --- /dev/null +++ b/test/parsing/cases/am_stuff.json @@ -0,0 +1,7 @@ +{} +[] +[] +"sdfasd" +123 +{ "123" : 123 } +3.1e124 diff --git a/test/parsing/cases/am_stuff.json.gold b/test/parsing/cases/am_stuff.json.gold new file mode 100644 index 0000000..bf3a5bb --- /dev/null +++ b/test/parsing/cases/am_stuff.json.gold @@ -0,0 +1,14 @@ +map open '{' +map close '}' +array open '[' +array close ']' +array open '[' +array close ']' +string: 'sdfasd' +integer: 123 +map open '{' +key: '123' +integer: 123 +map close '}' +double: 3.1e+124 +memory leaks: 0 diff --git a/test/parsing/cases/ap_array_open.json b/test/parsing/cases/ap_array_open.json new file mode 100644 index 0000000..558ed37 --- /dev/null +++ b/test/parsing/cases/ap_array_open.json @@ -0,0 +1 @@ +[ diff --git a/test/parsing/cases/ap_array_open.json.gold b/test/parsing/cases/ap_array_open.json.gold new file mode 100644 index 0000000..478b6b9 --- /dev/null +++ b/test/parsing/cases/ap_array_open.json.gold @@ -0,0 +1,2 @@ +array open '[' +memory leaks: 0 diff --git a/test/parsing/cases/ap_eof_str.json b/test/parsing/cases/ap_eof_str.json new file mode 100644 index 0000000..6a21793 --- /dev/null +++ b/test/parsing/cases/ap_eof_str.json @@ -0,0 +1 @@ +"abc \ No newline at end of file diff --git a/test/parsing/cases/ap_eof_str.json.gold b/test/parsing/cases/ap_eof_str.json.gold new file mode 100644 index 0000000..736730b --- /dev/null +++ b/test/parsing/cases/ap_eof_str.json.gold @@ -0,0 +1 @@ +memory leaks: 0 diff --git a/test/parsing/cases/ap_map_open.json b/test/parsing/cases/ap_map_open.json new file mode 100644 index 0000000..98232c6 --- /dev/null +++ b/test/parsing/cases/ap_map_open.json @@ -0,0 +1 @@ +{ diff --git a/test/parsing/cases/ap_map_open.json.gold b/test/parsing/cases/ap_map_open.json.gold new file mode 100644 index 0000000..ab1f33d --- /dev/null +++ b/test/parsing/cases/ap_map_open.json.gold @@ -0,0 +1,2 @@ +map open '{' +memory leaks: 0 diff --git a/test/parsing/cases/ap_partial_ok.json b/test/parsing/cases/ap_partial_ok.json new file mode 100644 index 0000000..2fbd027 --- /dev/null +++ b/test/parsing/cases/ap_partial_ok.json @@ -0,0 +1 @@ +[ "foo", "bar" diff --git a/test/parsing/cases/ap_partial_ok.json.gold b/test/parsing/cases/ap_partial_ok.json.gold new file mode 100644 index 0000000..9f754c7 --- /dev/null +++ b/test/parsing/cases/ap_partial_ok.json.gold @@ -0,0 +1,4 @@ +array open '[' +string: 'foo' +string: 'bar' +memory leaks: 0 diff --git a/test/parsing/cases/array.json b/test/parsing/cases/array.json new file mode 100644 index 0000000..f76058d --- /dev/null +++ b/test/parsing/cases/array.json @@ -0,0 +1,6 @@ +["foo", + "bar", "baz", + true,false,null,{"key":"value"}, + [null,null,null,[]], + "\n\r\\" +] diff --git a/test/parsing/cases/array.json.gold b/test/parsing/cases/array.json.gold new file mode 100644 index 0000000..477559d --- /dev/null +++ b/test/parsing/cases/array.json.gold @@ -0,0 +1,22 @@ +array open '[' +string: 'foo' +string: 'bar' +string: 'baz' +bool: true +bool: false +null +map open '{' +key: 'key' +string: 'value' +map close '}' +array open '[' +null +null +null +array open '[' +array close ']' +array close ']' +string: ' + \' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/array_close.json b/test/parsing/cases/array_close.json new file mode 100644 index 0000000..079b579 --- /dev/null +++ b/test/parsing/cases/array_close.json @@ -0,0 +1 @@ +] diff --git a/test/parsing/cases/array_close.json.gold b/test/parsing/cases/array_close.json.gold new file mode 100644 index 0000000..972fd39 --- /dev/null +++ b/test/parsing/cases/array_close.json.gold @@ -0,0 +1,2 @@ +parse error: unallowed token at this point in JSON text +memory leaks: 0 diff --git a/test/parsing/cases/bignums.json b/test/parsing/cases/bignums.json new file mode 100644 index 0000000..75aca9a --- /dev/null +++ b/test/parsing/cases/bignums.json @@ -0,0 +1 @@ +[ 9223372036854775807, -9223372036854775807 ] diff --git a/test/parsing/cases/bignums.json.gold b/test/parsing/cases/bignums.json.gold new file mode 100644 index 0000000..8bb3b1e --- /dev/null +++ b/test/parsing/cases/bignums.json.gold @@ -0,0 +1,5 @@ +array open '[' +integer: 9223372036854775807 +integer: -9223372036854775807 +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/bogus_char.json b/test/parsing/cases/bogus_char.json new file mode 100644 index 0000000..8163bd8 --- /dev/null +++ b/test/parsing/cases/bogus_char.json @@ -0,0 +1,4 @@ +["this","is","what","should","be", + "a happy bit of json", + "but someone, misspelled \"true\"", ture, + "who says JSON is easy for humans to generate?"] diff --git a/test/parsing/cases/bogus_char.json.gold b/test/parsing/cases/bogus_char.json.gold new file mode 100644 index 0000000..0c68a49 --- /dev/null +++ b/test/parsing/cases/bogus_char.json.gold @@ -0,0 +1,10 @@ +array open '[' +string: 'this' +string: 'is' +string: 'what' +string: 'should' +string: 'be' +string: 'a happy bit of json' +string: 'but someone, misspelled "true"' +lexical error: invalid string in json text. +memory leaks: 0 diff --git a/test/parsing/cases/codepoints_from_unicode_org.json b/test/parsing/cases/codepoints_from_unicode_org.json new file mode 100644 index 0000000..f91f3be --- /dev/null +++ b/test/parsing/cases/codepoints_from_unicode_org.json @@ -0,0 +1 @@ +"\u004d\u0430\u4e8c\ud800\udf02" diff --git a/test/parsing/cases/codepoints_from_unicode_org.json.gold b/test/parsing/cases/codepoints_from_unicode_org.json.gold new file mode 100644 index 0000000..f359a1b --- /dev/null +++ b/test/parsing/cases/codepoints_from_unicode_org.json.gold @@ -0,0 +1,2 @@ +string: 'Mа二𐌂' +memory leaks: 0 diff --git a/test/parsing/cases/deep_arrays.json b/test/parsing/cases/deep_arrays.json new file mode 100644 index 0000000..82d1b0d --- /dev/null +++ b/test/parsing/cases/deep_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/test/parsing/cases/deep_arrays.json.gold b/test/parsing/cases/deep_arrays.json.gold new file mode 100644 index 0000000..4d5cd99 --- /dev/null +++ b/test/parsing/cases/deep_arrays.json.gold @@ -0,0 +1,2049 @@ +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array open '[' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/difficult_json_c_test_case.json b/test/parsing/cases/difficult_json_c_test_case.json new file mode 100644 index 0000000..6998f55 --- /dev/null +++ b/test/parsing/cases/difficult_json_c_test_case.json @@ -0,0 +1 @@ +{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML", "markup"] } ] } } } diff --git a/test/parsing/cases/difficult_json_c_test_case.json.gold b/test/parsing/cases/difficult_json_c_test_case.json.gold new file mode 100644 index 0000000..c3adc11 --- /dev/null +++ b/test/parsing/cases/difficult_json_c_test_case.json.gold @@ -0,0 +1,36 @@ +map open '{' +key: 'glossary' +map open '{' +key: 'title' +string: 'example glossary' +key: 'GlossDiv' +map open '{' +key: 'title' +string: 'S' +key: 'GlossList' +array open '[' +map open '{' +key: 'ID' +string: 'SGML' +key: 'SortAs' +string: 'SGML' +key: 'GlossTerm' +string: 'Standard Generalized Markup Language' +key: 'Acronym' +string: 'SGML' +key: 'Abbrev' +string: 'ISO 8879:1986' +key: 'GlossDef' +string: 'A meta-markup language, used to create markup languages such as DocBook.' +key: 'GlossSeeAlso' +array open '[' +string: 'GML' +string: 'XML' +string: 'markup' +array close ']' +map close '}' +array close ']' +map close '}' +map close '}' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/doubles.json b/test/parsing/cases/doubles.json new file mode 100644 index 0000000..626f21c --- /dev/null +++ b/test/parsing/cases/doubles.json @@ -0,0 +1 @@ +[ 0.1e2, 1e1, 3.141569, 10000000000000e-10] diff --git a/test/parsing/cases/doubles.json.gold b/test/parsing/cases/doubles.json.gold new file mode 100644 index 0000000..c0ea726 --- /dev/null +++ b/test/parsing/cases/doubles.json.gold @@ -0,0 +1,7 @@ +array open '[' +double: 10 +double: 10 +double: 3.14157 +double: 1000 +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/doubles_in_array.json b/test/parsing/cases/doubles_in_array.json new file mode 100644 index 0000000..06bf727 --- /dev/null +++ b/test/parsing/cases/doubles_in_array.json @@ -0,0 +1 @@ +[0.00011999999999999999, 6E-06, 6E-06, 1E-06, 1E-06] diff --git a/test/parsing/cases/doubles_in_array.json.gold b/test/parsing/cases/doubles_in_array.json.gold new file mode 100644 index 0000000..57f5b9a --- /dev/null +++ b/test/parsing/cases/doubles_in_array.json.gold @@ -0,0 +1,8 @@ +array open '[' +double: 0.00012 +double: 6e-06 +double: 6e-06 +double: 1e-06 +double: 1e-06 +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/empty_array.json b/test/parsing/cases/empty_array.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/test/parsing/cases/empty_array.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/parsing/cases/empty_array.json.gold b/test/parsing/cases/empty_array.json.gold new file mode 100644 index 0000000..f069c8f --- /dev/null +++ b/test/parsing/cases/empty_array.json.gold @@ -0,0 +1,3 @@ +array open '[' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/empty_string.json b/test/parsing/cases/empty_string.json new file mode 100644 index 0000000..e16c76d --- /dev/null +++ b/test/parsing/cases/empty_string.json @@ -0,0 +1 @@ +"" diff --git a/test/parsing/cases/empty_string.json.gold b/test/parsing/cases/empty_string.json.gold new file mode 100644 index 0000000..c197bba --- /dev/null +++ b/test/parsing/cases/empty_string.json.gold @@ -0,0 +1,2 @@ +string: '' +memory leaks: 0 diff --git a/test/parsing/cases/escaped_bulgarian.json b/test/parsing/cases/escaped_bulgarian.json new file mode 100644 index 0000000..9ce1d1c --- /dev/null +++ b/test/parsing/cases/escaped_bulgarian.json @@ -0,0 +1,4 @@ +["\u0414\u0430", + "\u041c\u0443", + "\u0415\u0431\u0430", + "\u041c\u0430\u0439\u043a\u0430\u0442\u0430"] diff --git a/test/parsing/cases/escaped_bulgarian.json.gold b/test/parsing/cases/escaped_bulgarian.json.gold new file mode 100644 index 0000000..a0c9ae9 --- /dev/null +++ b/test/parsing/cases/escaped_bulgarian.json.gold @@ -0,0 +1,7 @@ +array open '[' +string: 'Да' +string: 'Му' +string: 'Еба' +string: 'Майката' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/escaped_foobar.json b/test/parsing/cases/escaped_foobar.json new file mode 100644 index 0000000..2c0e25f --- /dev/null +++ b/test/parsing/cases/escaped_foobar.json @@ -0,0 +1 @@ +"\u0066\u006f\u006f\u0062\u0061\u0072" diff --git a/test/parsing/cases/escaped_foobar.json.gold b/test/parsing/cases/escaped_foobar.json.gold new file mode 100644 index 0000000..5753c64 --- /dev/null +++ b/test/parsing/cases/escaped_foobar.json.gold @@ -0,0 +1,2 @@ +string: 'foobar' +memory leaks: 0 diff --git a/test/parsing/cases/false.json b/test/parsing/cases/false.json new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/test/parsing/cases/false.json @@ -0,0 +1 @@ +false diff --git a/test/parsing/cases/false.json.gold b/test/parsing/cases/false.json.gold new file mode 100644 index 0000000..e55fa1f --- /dev/null +++ b/test/parsing/cases/false.json.gold @@ -0,0 +1,2 @@ +bool: false +memory leaks: 0 diff --git a/test/parsing/cases/fg_false_then_garbage.json b/test/parsing/cases/fg_false_then_garbage.json new file mode 100644 index 0000000..78f4e96 --- /dev/null +++ b/test/parsing/cases/fg_false_then_garbage.json @@ -0,0 +1 @@ +falsex \ No newline at end of file diff --git a/test/parsing/cases/fg_false_then_garbage.json.gold b/test/parsing/cases/fg_false_then_garbage.json.gold new file mode 100644 index 0000000..fe8fc1a --- /dev/null +++ b/test/parsing/cases/fg_false_then_garbage.json.gold @@ -0,0 +1,3 @@ +bool: false +parse error: trailing garbage +memory leaks: 0 diff --git a/test/parsing/cases/fg_issue_7.json b/test/parsing/cases/fg_issue_7.json new file mode 100644 index 0000000..77152a9 --- /dev/null +++ b/test/parsing/cases/fg_issue_7.json @@ -0,0 +1 @@ +2009-10-20@20:38:21.539575 diff --git a/test/parsing/cases/fg_issue_7.json.gold b/test/parsing/cases/fg_issue_7.json.gold new file mode 100644 index 0000000..4d0de0f --- /dev/null +++ b/test/parsing/cases/fg_issue_7.json.gold @@ -0,0 +1,3 @@ +integer: 2009 +parse error: trailing garbage +memory leaks: 0 diff --git a/test/parsing/cases/fg_null_then_garbage.json b/test/parsing/cases/fg_null_then_garbage.json new file mode 100644 index 0000000..7b65b35 --- /dev/null +++ b/test/parsing/cases/fg_null_then_garbage.json @@ -0,0 +1 @@ +nullx diff --git a/test/parsing/cases/fg_null_then_garbage.json.gold b/test/parsing/cases/fg_null_then_garbage.json.gold new file mode 100644 index 0000000..349235c --- /dev/null +++ b/test/parsing/cases/fg_null_then_garbage.json.gold @@ -0,0 +1,3 @@ +null +parse error: trailing garbage +memory leaks: 0 diff --git a/test/parsing/cases/fg_true_then_garbage.json b/test/parsing/cases/fg_true_then_garbage.json new file mode 100644 index 0000000..31f9deb --- /dev/null +++ b/test/parsing/cases/fg_true_then_garbage.json @@ -0,0 +1 @@ +truex diff --git a/test/parsing/cases/fg_true_then_garbage.json.gold b/test/parsing/cases/fg_true_then_garbage.json.gold new file mode 100644 index 0000000..73af6ce --- /dev/null +++ b/test/parsing/cases/fg_true_then_garbage.json.gold @@ -0,0 +1,3 @@ +bool: true +parse error: trailing garbage +memory leaks: 0 diff --git a/test/parsing/cases/four_byte_utf8.json b/test/parsing/cases/four_byte_utf8.json new file mode 100644 index 0000000..582c575 --- /dev/null +++ b/test/parsing/cases/four_byte_utf8.json @@ -0,0 +1,2 @@ +{ "U+10ABCD": "􊯍" } + diff --git a/test/parsing/cases/four_byte_utf8.json.gold b/test/parsing/cases/four_byte_utf8.json.gold new file mode 100644 index 0000000..f6260f2 --- /dev/null +++ b/test/parsing/cases/four_byte_utf8.json.gold @@ -0,0 +1,5 @@ +map open '{' +key: 'U+10ABCD' +string: '􊯍' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/high_overflow.json b/test/parsing/cases/high_overflow.json new file mode 100644 index 0000000..8136b73 --- /dev/null +++ b/test/parsing/cases/high_overflow.json @@ -0,0 +1 @@ +9223372036854775808 \ No newline at end of file diff --git a/test/parsing/cases/high_overflow.json.gold b/test/parsing/cases/high_overflow.json.gold new file mode 100644 index 0000000..19c4b77 --- /dev/null +++ b/test/parsing/cases/high_overflow.json.gold @@ -0,0 +1,2 @@ +parse error: integer overflow +memory leaks: 0 diff --git a/test/parsing/cases/integers.json b/test/parsing/cases/integers.json new file mode 100644 index 0000000..c50e4c9 --- /dev/null +++ b/test/parsing/cases/integers.json @@ -0,0 +1,3 @@ +[ 1,2,3,4,5,6,7, + 123456789 , -123456789, + 2147483647, -2147483647 ] diff --git a/test/parsing/cases/integers.json.gold b/test/parsing/cases/integers.json.gold new file mode 100644 index 0000000..7ac4bee --- /dev/null +++ b/test/parsing/cases/integers.json.gold @@ -0,0 +1,14 @@ +array open '[' +integer: 1 +integer: 2 +integer: 3 +integer: 4 +integer: 5 +integer: 6 +integer: 7 +integer: 123456789 +integer: -123456789 +integer: 2147483647 +integer: -2147483647 +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/invalid_utf8.json b/test/parsing/cases/invalid_utf8.json new file mode 100644 index 0000000..12f1718 --- /dev/null +++ b/test/parsing/cases/invalid_utf8.json @@ -0,0 +1 @@ +["Да М Еба Майката"] diff --git a/test/parsing/cases/invalid_utf8.json.gold b/test/parsing/cases/invalid_utf8.json.gold new file mode 100644 index 0000000..c0dec77 --- /dev/null +++ b/test/parsing/cases/invalid_utf8.json.gold @@ -0,0 +1,3 @@ +array open '[' +lexical error: invalid bytes in UTF8 string. +memory leaks: 0 diff --git a/test/parsing/cases/isolated_surrogate_marker.json b/test/parsing/cases/isolated_surrogate_marker.json new file mode 100644 index 0000000..36959f4 --- /dev/null +++ b/test/parsing/cases/isolated_surrogate_marker.json @@ -0,0 +1 @@ +"\ud800" diff --git a/test/parsing/cases/isolated_surrogate_marker.json.gold b/test/parsing/cases/isolated_surrogate_marker.json.gold new file mode 100644 index 0000000..cca172e --- /dev/null +++ b/test/parsing/cases/isolated_surrogate_marker.json.gold @@ -0,0 +1,2 @@ +string: '?' +memory leaks: 0 diff --git a/test/parsing/cases/leading_zero_in_number.json b/test/parsing/cases/leading_zero_in_number.json new file mode 100644 index 0000000..959f5ba --- /dev/null +++ b/test/parsing/cases/leading_zero_in_number.json @@ -0,0 +1 @@ +{ "bad thing": 01 } diff --git a/test/parsing/cases/leading_zero_in_number.json.gold b/test/parsing/cases/leading_zero_in_number.json.gold new file mode 100644 index 0000000..1a1580d --- /dev/null +++ b/test/parsing/cases/leading_zero_in_number.json.gold @@ -0,0 +1,5 @@ +map open '{' +key: 'bad thing' +integer: 0 +parse error: after key and value, inside map, I expect ',' or '}' +memory leaks: 0 diff --git a/test/parsing/cases/lonely_minus_sign.json b/test/parsing/cases/lonely_minus_sign.json new file mode 100644 index 0000000..85f69bd --- /dev/null +++ b/test/parsing/cases/lonely_minus_sign.json @@ -0,0 +1,7 @@ +[ + "foo", true, + true, "blue", + "baby where are you?", "oh boo hoo!", + - +] + diff --git a/test/parsing/cases/lonely_minus_sign.json.gold b/test/parsing/cases/lonely_minus_sign.json.gold new file mode 100644 index 0000000..d15ede9 --- /dev/null +++ b/test/parsing/cases/lonely_minus_sign.json.gold @@ -0,0 +1,9 @@ +array open '[' +string: 'foo' +bool: true +bool: true +string: 'blue' +string: 'baby where are you?' +string: 'oh boo hoo!' +lexical error: malformed number, a digit is required after the minus sign. +memory leaks: 0 diff --git a/test/parsing/cases/lonely_number.json b/test/parsing/cases/lonely_number.json new file mode 100644 index 0000000..e2e107a --- /dev/null +++ b/test/parsing/cases/lonely_number.json @@ -0,0 +1 @@ +123456789 \ No newline at end of file diff --git a/test/parsing/cases/lonely_number.json.gold b/test/parsing/cases/lonely_number.json.gold new file mode 100644 index 0000000..181fdfa --- /dev/null +++ b/test/parsing/cases/lonely_number.json.gold @@ -0,0 +1,2 @@ +integer: 123456789 +memory leaks: 0 diff --git a/test/parsing/cases/low_overflow.json b/test/parsing/cases/low_overflow.json new file mode 100644 index 0000000..9af921b --- /dev/null +++ b/test/parsing/cases/low_overflow.json @@ -0,0 +1 @@ +-9223372036854775808 \ No newline at end of file diff --git a/test/parsing/cases/low_overflow.json.gold b/test/parsing/cases/low_overflow.json.gold new file mode 100644 index 0000000..19c4b77 --- /dev/null +++ b/test/parsing/cases/low_overflow.json.gold @@ -0,0 +1,2 @@ +parse error: integer overflow +memory leaks: 0 diff --git a/test/parsing/cases/map_close.json b/test/parsing/cases/map_close.json new file mode 100644 index 0000000..5c34318 --- /dev/null +++ b/test/parsing/cases/map_close.json @@ -0,0 +1 @@ +} diff --git a/test/parsing/cases/map_close.json.gold b/test/parsing/cases/map_close.json.gold new file mode 100644 index 0000000..972fd39 --- /dev/null +++ b/test/parsing/cases/map_close.json.gold @@ -0,0 +1,2 @@ +parse error: unallowed token at this point in JSON text +memory leaks: 0 diff --git a/test/parsing/cases/missing_integer_after_decimal_point.json b/test/parsing/cases/missing_integer_after_decimal_point.json new file mode 100644 index 0000000..2369f4b --- /dev/null +++ b/test/parsing/cases/missing_integer_after_decimal_point.json @@ -0,0 +1 @@ +10.e2 diff --git a/test/parsing/cases/missing_integer_after_decimal_point.json.gold b/test/parsing/cases/missing_integer_after_decimal_point.json.gold new file mode 100644 index 0000000..c2e7e2e --- /dev/null +++ b/test/parsing/cases/missing_integer_after_decimal_point.json.gold @@ -0,0 +1,2 @@ +lexical error: malformed number, a digit is required after the decimal point. +memory leaks: 0 diff --git a/test/parsing/cases/missing_integer_after_exponent.json b/test/parsing/cases/missing_integer_after_exponent.json new file mode 100644 index 0000000..a62b45d --- /dev/null +++ b/test/parsing/cases/missing_integer_after_exponent.json @@ -0,0 +1 @@ +10e diff --git a/test/parsing/cases/missing_integer_after_exponent.json.gold b/test/parsing/cases/missing_integer_after_exponent.json.gold new file mode 100644 index 0000000..5089681 --- /dev/null +++ b/test/parsing/cases/missing_integer_after_exponent.json.gold @@ -0,0 +1,2 @@ +lexical error: malformed number, a digit is required after the exponent. +memory leaks: 0 diff --git a/test/parsing/cases/multiple.json b/test/parsing/cases/multiple.json new file mode 100644 index 0000000..b573db0 --- /dev/null +++ b/test/parsing/cases/multiple.json @@ -0,0 +1,3 @@ + +{} +{} diff --git a/test/parsing/cases/multiple.json.gold b/test/parsing/cases/multiple.json.gold new file mode 100644 index 0000000..0f6f3df --- /dev/null +++ b/test/parsing/cases/multiple.json.gold @@ -0,0 +1,4 @@ +map open '{' +map close '}' +parse error: trailing garbage +memory leaks: 0 diff --git a/test/parsing/cases/non_utf8_char_in_string.json b/test/parsing/cases/non_utf8_char_in_string.json new file mode 100644 index 0000000..253a664 --- /dev/null +++ b/test/parsing/cases/non_utf8_char_in_string.json @@ -0,0 +1 @@ +{"CoreletAPIVersion":2,"CoreletType":"standalone","documentation":"A corelet that provides the capability to upload a folders contents into a users locker.","functions":[{"documentation":"Displays a dialog box that allows user to select a folder on the local system.","name":"ShowBrowseDialog","parameters":[{"documentation":"The callback function for results.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Uploads all mp3 files in the folder provided.","name":"UploadFolder","parameters":[{"documentation":"The path to upload mp3 files from.","name":"path","required":true,"type":"string"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Returns the server name to the current locker service.","name":"GetLockerService","parameters":[]},{"documentation":"Changes the name of the locker service.","name":"SetLockerService","parameters":[{"documentation":"The value of the locker service to set active.","name":"LockerService","required":true,"type":"string"}]},{"documentation":"Downloads locker files to the suggested folder.","name":"DownloadFile","parameters":[{"documentation":"The origin path of the locker file.","name":"path","required":true,"type":"string"},{"documentation":"The Window destination path of the locker file.","name":"destination","required":true,"type":"integer"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]}],"name":"LockerUploader","version":{"major":0,"micro":1,"minor":0},"versionString":"0.0.1"} \ No newline at end of file diff --git a/test/parsing/cases/non_utf8_char_in_string.json.gold b/test/parsing/cases/non_utf8_char_in_string.json.gold new file mode 100644 index 0000000..5e3c580 --- /dev/null +++ b/test/parsing/cases/non_utf8_char_in_string.json.gold @@ -0,0 +1,8 @@ +map open '{' +key: 'CoreletAPIVersion' +integer: 2 +key: 'CoreletType' +string: 'standalone' +key: 'documentation' +lexical error: invalid bytes in UTF8 string. +memory leaks: 0 diff --git a/test/parsing/cases/np_partial_bad.json b/test/parsing/cases/np_partial_bad.json new file mode 100644 index 0000000..2fbd027 --- /dev/null +++ b/test/parsing/cases/np_partial_bad.json @@ -0,0 +1 @@ +[ "foo", "bar" diff --git a/test/parsing/cases/np_partial_bad.json.gold b/test/parsing/cases/np_partial_bad.json.gold new file mode 100644 index 0000000..b981bda --- /dev/null +++ b/test/parsing/cases/np_partial_bad.json.gold @@ -0,0 +1,5 @@ +array open '[' +string: 'foo' +string: 'bar' +parse error: premature EOF +memory leaks: 0 diff --git a/test/parsing/cases/null.json b/test/parsing/cases/null.json new file mode 100644 index 0000000..19765bd --- /dev/null +++ b/test/parsing/cases/null.json @@ -0,0 +1 @@ +null diff --git a/test/parsing/cases/null.json.gold b/test/parsing/cases/null.json.gold new file mode 100644 index 0000000..94ad0fa --- /dev/null +++ b/test/parsing/cases/null.json.gold @@ -0,0 +1,2 @@ +null +memory leaks: 0 diff --git a/test/parsing/cases/nulls_and_bools.json b/test/parsing/cases/nulls_and_bools.json new file mode 100644 index 0000000..65eb01f --- /dev/null +++ b/test/parsing/cases/nulls_and_bools.json @@ -0,0 +1,5 @@ +{ + "boolean, true": true, + "boolean, false": false, + "null": null +} diff --git a/test/parsing/cases/nulls_and_bools.json.gold b/test/parsing/cases/nulls_and_bools.json.gold new file mode 100644 index 0000000..51f990b --- /dev/null +++ b/test/parsing/cases/nulls_and_bools.json.gold @@ -0,0 +1,9 @@ +map open '{' +key: 'boolean, true' +bool: true +key: 'boolean, false' +bool: false +key: 'null' +null +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/simple.json b/test/parsing/cases/simple.json new file mode 100644 index 0000000..9ed80c9 --- /dev/null +++ b/test/parsing/cases/simple.json @@ -0,0 +1,5 @@ +{ + "this": "is", + "really": "simple", + "json": "right?" +} diff --git a/test/parsing/cases/simple.json.gold b/test/parsing/cases/simple.json.gold new file mode 100644 index 0000000..80fcad2 --- /dev/null +++ b/test/parsing/cases/simple.json.gold @@ -0,0 +1,9 @@ +map open '{' +key: 'this' +string: 'is' +key: 'really' +string: 'simple' +key: 'json' +string: 'right?' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/simple_with_comments.json b/test/parsing/cases/simple_with_comments.json new file mode 100644 index 0000000..3b79bba --- /dev/null +++ b/test/parsing/cases/simple_with_comments.json @@ -0,0 +1,11 @@ +{ + "this": "is", // ignore this + "really": "simple", + /* ignore +this +too * / +** // +(/ +******/ + "json": "right?" +} diff --git a/test/parsing/cases/simple_with_comments.json.gold b/test/parsing/cases/simple_with_comments.json.gold new file mode 100644 index 0000000..d222e9b --- /dev/null +++ b/test/parsing/cases/simple_with_comments.json.gold @@ -0,0 +1,5 @@ +map open '{' +key: 'this' +string: 'is' +lexical error: probable comment found in input text, comments are not enabled. +memory leaks: 0 diff --git a/test/parsing/cases/string_invalid_escape.json b/test/parsing/cases/string_invalid_escape.json new file mode 100644 index 0000000..c554182 --- /dev/null +++ b/test/parsing/cases/string_invalid_escape.json @@ -0,0 +1 @@ +["\n foo \/ bar \r\f\\\uffff\t\b\"\\ and you can't escape thi\s"] diff --git a/test/parsing/cases/string_invalid_escape.json.gold b/test/parsing/cases/string_invalid_escape.json.gold new file mode 100644 index 0000000..439df43 --- /dev/null +++ b/test/parsing/cases/string_invalid_escape.json.gold @@ -0,0 +1,3 @@ +array open '[' +lexical error: inside a string, '\' occurs before a character which it may not. +memory leaks: 0 diff --git a/test/parsing/cases/string_invalid_hex_char.json b/test/parsing/cases/string_invalid_hex_char.json new file mode 100644 index 0000000..bde7ee9 --- /dev/null +++ b/test/parsing/cases/string_invalid_hex_char.json @@ -0,0 +1 @@ +"foo foo, blah blah \u0123 \u4567 \u89ab \uc/ef \uABCD \uEFFE bar baz bing" diff --git a/test/parsing/cases/string_invalid_hex_char.json.gold b/test/parsing/cases/string_invalid_hex_char.json.gold new file mode 100644 index 0000000..8498792 --- /dev/null +++ b/test/parsing/cases/string_invalid_hex_char.json.gold @@ -0,0 +1,2 @@ +lexical error: invalid (non-hex) character occurs after '\u' inside string. +memory leaks: 0 diff --git a/test/parsing/cases/string_with_escapes.json b/test/parsing/cases/string_with_escapes.json new file mode 100644 index 0000000..59cc940 --- /dev/null +++ b/test/parsing/cases/string_with_escapes.json @@ -0,0 +1,3 @@ +["\n foo \/ bar \r\f\\\uffff\t\b\"\\", + "\"and this string has an escape at the beginning", + "and this string has no escapes" ] diff --git a/test/parsing/cases/string_with_escapes.json.gold b/test/parsing/cases/string_with_escapes.json.gold new file mode 100644 index 0000000..086a9dc --- /dev/null +++ b/test/parsing/cases/string_with_escapes.json.gold @@ -0,0 +1,7 @@ +array open '[' +string: ' + foo / bar \￿ "\' +string: '"and this string has an escape at the beginning' +string: 'and this string has no escapes' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/string_with_invalid_newline.json b/test/parsing/cases/string_with_invalid_newline.json new file mode 100644 index 0000000..0e3ea0d --- /dev/null +++ b/test/parsing/cases/string_with_invalid_newline.json @@ -0,0 +1,2 @@ +"la di dah. this is a string, and I can do this, \n, but not this +" diff --git a/test/parsing/cases/string_with_invalid_newline.json.gold b/test/parsing/cases/string_with_invalid_newline.json.gold new file mode 100644 index 0000000..c38bdef --- /dev/null +++ b/test/parsing/cases/string_with_invalid_newline.json.gold @@ -0,0 +1,2 @@ +lexical error: invalid character inside string. +memory leaks: 0 diff --git a/test/parsing/cases/three_byte_utf8.json b/test/parsing/cases/three_byte_utf8.json new file mode 100644 index 0000000..9c9e656 --- /dev/null +++ b/test/parsing/cases/three_byte_utf8.json @@ -0,0 +1 @@ +{"matzue": "松江", "asakusa": "浅草"} diff --git a/test/parsing/cases/three_byte_utf8.json.gold b/test/parsing/cases/three_byte_utf8.json.gold new file mode 100644 index 0000000..7d95fae --- /dev/null +++ b/test/parsing/cases/three_byte_utf8.json.gold @@ -0,0 +1,7 @@ +map open '{' +key: 'matzue' +string: '松江' +key: 'asakusa' +string: '浅草' +map close '}' +memory leaks: 0 diff --git a/test/parsing/cases/true.json b/test/parsing/cases/true.json new file mode 100644 index 0000000..27ba77d --- /dev/null +++ b/test/parsing/cases/true.json @@ -0,0 +1 @@ +true diff --git a/test/parsing/cases/true.json.gold b/test/parsing/cases/true.json.gold new file mode 100644 index 0000000..0858bf7 --- /dev/null +++ b/test/parsing/cases/true.json.gold @@ -0,0 +1,2 @@ +bool: true +memory leaks: 0 diff --git a/test/parsing/cases/unescaped_bulgarian.json b/test/parsing/cases/unescaped_bulgarian.json new file mode 100644 index 0000000..f9a70a6 --- /dev/null +++ b/test/parsing/cases/unescaped_bulgarian.json @@ -0,0 +1 @@ +["Да Му Еба Майката"] diff --git a/test/parsing/cases/unescaped_bulgarian.json.gold b/test/parsing/cases/unescaped_bulgarian.json.gold new file mode 100644 index 0000000..8db076e --- /dev/null +++ b/test/parsing/cases/unescaped_bulgarian.json.gold @@ -0,0 +1,4 @@ +array open '[' +string: 'Да Му Еба Майката' +array close ']' +memory leaks: 0 diff --git a/test/parsing/cases/zerobyte.json b/test/parsing/cases/zerobyte.json new file mode 100644 index 0000000..09c5044 --- /dev/null +++ b/test/parsing/cases/zerobyte.json @@ -0,0 +1 @@ +"\u0000" diff --git a/test/parsing/cases/zerobyte.json.gold b/test/parsing/cases/zerobyte.json.gold new file mode 100644 index 0000000..b0c58fc Binary files /dev/null and b/test/parsing/cases/zerobyte.json.gold differ diff --git a/test/parsing/run_tests.sh b/test/parsing/run_tests.sh new file mode 100755 index 0000000..af64e15 --- /dev/null +++ b/test/parsing/run_tests.sh @@ -0,0 +1,94 @@ +#!/bin/sh + +ECHO=`which echo` + +DIFF_FLAGS="-u" +case "$(uname)" in + *W32*) + DIFF_FLAGS="-wu" + ;; +esac + +if [ -z "$testBin" ]; then + testBin="$1" +fi + +# find test binary on both platforms. allow the caller to force a +# particular test binary (useful for non-cmake build systems). +if [ -z "$testBin" ]; then + testBin="../build/test/Release/yajl_test.exe" + if [ ! -x $testBin ] ; then + testBin="../build/test/Debug/yajl_test.exe" + if [ ! -x $testBin ] ; then + testBin="../build/test/yajl_test" + if [ ! -x $testBin ] ; then + ${ECHO} "cannot execute test binary: '$testBin'" + exit 1; + fi + fi + fi +fi + +${ECHO} "using test binary: $testBin" + +testBinShort=`basename $testBin` + +testsSucceeded=0 +testsTotal=0 + +for file in cases/*.json ; do + allowComments="" + allowGarbage="" + allowMultiple="" + allowPartials="" + + # if the filename starts with dc_, we disallow comments for this test + case $(basename $file) in + ac_*) + allowComments="-c " + ;; + ag_*) + allowGarbage="-g " + ;; + am_*) + allowMultiple="-m "; + ;; + ap_*) + allowPartials="-p "; + ;; + esac + fileShort=`basename $file` + testName=`echo $fileShort | sed -e 's/\.json$//'` + + ${ECHO} -n " test ($testName): " + iter=1 + success="SUCCESS" + + # ${ECHO} -n "$testBinShort $allowPartials$allowComments$allowGarbage$allowMultiple-b $iter < $fileShort > ${fileShort}.test : " + # parse with a read buffer size ranging from 1-31 to stress stream parsing + while [ $iter -lt 32 ] && [ $success = "SUCCESS" ] ; do + $testBin $allowPartials $allowComments $allowGarbage $allowMultiple -b $iter < $file > ${file}.test 2>&1 + diff ${DIFF_FLAGS} ${file}.gold ${file}.test > ${file}.out + if [ $? -eq 0 ] ; then + if [ $iter -eq 31 ] ; then testsSucceeded=$(( $testsSucceeded + 1 )) ; fi + else + success="FAILURE" + iter=32 + ${ECHO} + cat ${file}.out + fi + iter=$(( iter + 1 )) + rm ${file}.test ${file}.out + done + + ${ECHO} $success + testsTotal=$(( testsTotal + 1 )) +done + +${ECHO} $testsSucceeded/$testsTotal tests successful + +if [ $testsSucceeded != $testsTotal ] ; then + exit 1 +fi + +exit 0 diff --git a/test/parsing/yajl_test.c b/test/parsing/yajl_test.c new file mode 100644 index 0000000..5c373d0 --- /dev/null +++ b/test/parsing/yajl_test.c @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2007-2011, Lloyd Hilaiel + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +#include +#include +#include + +#include + +/* memory debugging routines */ +typedef struct +{ + unsigned int numFrees; + unsigned int numMallocs; + /* XXX: we really need a hash table here with per-allocation + * information */ +} yajlTestMemoryContext; + +/* cast void * into context */ +#define TEST_CTX(vptr) ((yajlTestMemoryContext *) (vptr)) + +static void yajlTestFree(void * ctx, void * ptr) +{ + assert(ptr != NULL); + TEST_CTX(ctx)->numFrees++; + free(ptr); +} + +static void * yajlTestMalloc(void * ctx, size_t sz) +{ + assert(sz != 0); + TEST_CTX(ctx)->numMallocs++; + return malloc(sz); +} + +static void * yajlTestRealloc(void * ctx, void * ptr, size_t sz) +{ + if (ptr == NULL) { + assert(sz != 0); + TEST_CTX(ctx)->numMallocs++; + } else if (sz == 0) { + TEST_CTX(ctx)->numFrees++; + } + + return realloc(ptr, sz); +} + + +/* begin parsing callback routines */ +#define BUF_SIZE 2048 + +static int test_yajl_null(void *ctx) +{ + printf("null\n"); + return 1; +} + +static int test_yajl_boolean(void * ctx, int boolVal) +{ + printf("bool: %s\n", boolVal ? "true" : "false"); + return 1; +} + +static int test_yajl_integer(void *ctx, long long integerVal) +{ + printf("integer: %lld\n", integerVal); + return 1; +} + +static int test_yajl_double(void *ctx, double doubleVal) +{ + printf("double: %g\n", doubleVal); + return 1; +} + +static int test_yajl_string(void *ctx, const unsigned char * stringVal, + size_t stringLen) +{ + printf("string: '"); + fwrite(stringVal, 1, stringLen, stdout); + printf("'\n"); + return 1; +} + +static int test_yajl_map_key(void *ctx, const unsigned char * stringVal, + size_t stringLen) +{ + char * str = (char *) malloc(stringLen + 1); + str[stringLen] = 0; + memcpy(str, stringVal, stringLen); + printf("key: '%s'\n", str); + free(str); + return 1; +} + +static int test_yajl_start_map(void *ctx) +{ + printf("map open '{'\n"); + return 1; +} + + +static int test_yajl_end_map(void *ctx) +{ + printf("map close '}'\n"); + return 1; +} + +static int test_yajl_start_array(void *ctx) +{ + printf("array open '['\n"); + return 1; +} + +static int test_yajl_end_array(void *ctx) +{ + printf("array close ']'\n"); + return 1; +} + +static yajl_callbacks callbacks = { + test_yajl_null, + test_yajl_boolean, + test_yajl_integer, + test_yajl_double, + NULL, + test_yajl_string, + test_yajl_start_map, + test_yajl_map_key, + test_yajl_end_map, + test_yajl_start_array, + test_yajl_end_array +}; + +static void usage(const char * progname) +{ + fprintf(stderr, + "usage: %s [options]\n" + "Parse input from stdin as JSON and ouput parsing details " + "to stdout\n" + " -b set the read buffer size\n" + " -c allow comments\n" + " -g allow *g*arbage after valid JSON text\n" + " -m allows the parser to consume multiple JSON values\n" + " from a single string separated by whitespace\n" + " -p partial JSON documents should not cause errors\n", + progname); + exit(1); +} + +int +main(int argc, char ** argv) +{ + yajl_handle hand; + const char * fileName; + static unsigned char * fileData = NULL; + size_t bufSize = BUF_SIZE; + yajl_status stat; + size_t rd; + int i, j; + + /* memory allocation debugging: allocate a structure which collects + * statistics */ + yajlTestMemoryContext memCtx = { 0,0 }; + + /* memory allocation debugging: allocate a structure which holds + * allocation routines */ + yajl_alloc_funcs allocFuncs = { + yajlTestMalloc, + yajlTestRealloc, + yajlTestFree, + (void *) NULL + }; + + allocFuncs.ctx = (void *) &memCtx; + + /* allocate the parser */ + hand = yajl_alloc(&callbacks, &allocFuncs, NULL); + + /* check arguments. We expect exactly one! */ + for (i=1;i= argc) usage(argv[0]); + + /* validate integer */ + for (j=0;j<(int)strlen(argv[i]);j++) { + if (argv[i][j] <= '9' && argv[i][j] >= '0') continue; + fprintf(stderr, "-b requires an integer argument. '%s' " + "is invalid\n", argv[i]); + usage(argv[0]); + } + + bufSize = atoi(argv[i]); + if (!bufSize) { + fprintf(stderr, "%zu is an invalid buffer size\n", + bufSize); + } + } else if (!strcmp("-g", argv[i])) { + yajl_config(hand, yajl_allow_trailing_garbage, 1); + } else if (!strcmp("-m", argv[i])) { + yajl_config(hand, yajl_allow_multiple_values, 1); + } else if (!strcmp("-p", argv[i])) { + yajl_config(hand, yajl_allow_partial_values, 1); + } else { + fprintf(stderr, "invalid command line option: '%s'\n", + argv[i]); + usage(argv[0]); + } + } + + fileData = (unsigned char *) malloc(bufSize); + + if (fileData == NULL) { + fprintf(stderr, + "failed to allocate read buffer of %zu bytes, exiting.", + bufSize); + yajl_free(hand); + exit(2); + } + + fileName = argv[argc-1]; + + for (;;) { + rd = fread((void *) fileData, 1, bufSize, stdin); + + if (rd == 0) { + if (!feof(stdin)) { + fprintf(stderr, "error reading from '%s'\n", fileName); + } + break; + } + /* read file data, now pass to parser */ + stat = yajl_parse(hand, fileData, rd); + + if (stat != yajl_status_ok) break; + } + + stat = yajl_complete_parse(hand); + if (stat != yajl_status_ok) + { + unsigned char * str = yajl_get_error(hand, 0, fileData, rd); + fflush(stdout); + fprintf(stderr, "%s", (char *) str); + yajl_free_error(hand, str); + } + + yajl_free(hand); + free(fileData); + + /* finally, print out some memory statistics */ + +/* (lth) only print leaks here, as allocations and frees may vary depending + * on read buffer size, causing false failures. + * + * printf("allocations:\t%u\n", memCtx.numMallocs); + * printf("frees:\t\t%u\n", memCtx.numFrees); +*/ + fflush(stderr); + fflush(stdout); + printf("memory leaks:\t%u\n", memCtx.numMallocs - memCtx.numFrees); + + return 0; +} diff --git a/test/run_tests.sh b/test/run_tests.sh deleted file mode 100755 index af64e15..0000000 --- a/test/run_tests.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh - -ECHO=`which echo` - -DIFF_FLAGS="-u" -case "$(uname)" in - *W32*) - DIFF_FLAGS="-wu" - ;; -esac - -if [ -z "$testBin" ]; then - testBin="$1" -fi - -# find test binary on both platforms. allow the caller to force a -# particular test binary (useful for non-cmake build systems). -if [ -z "$testBin" ]; then - testBin="../build/test/Release/yajl_test.exe" - if [ ! -x $testBin ] ; then - testBin="../build/test/Debug/yajl_test.exe" - if [ ! -x $testBin ] ; then - testBin="../build/test/yajl_test" - if [ ! -x $testBin ] ; then - ${ECHO} "cannot execute test binary: '$testBin'" - exit 1; - fi - fi - fi -fi - -${ECHO} "using test binary: $testBin" - -testBinShort=`basename $testBin` - -testsSucceeded=0 -testsTotal=0 - -for file in cases/*.json ; do - allowComments="" - allowGarbage="" - allowMultiple="" - allowPartials="" - - # if the filename starts with dc_, we disallow comments for this test - case $(basename $file) in - ac_*) - allowComments="-c " - ;; - ag_*) - allowGarbage="-g " - ;; - am_*) - allowMultiple="-m "; - ;; - ap_*) - allowPartials="-p "; - ;; - esac - fileShort=`basename $file` - testName=`echo $fileShort | sed -e 's/\.json$//'` - - ${ECHO} -n " test ($testName): " - iter=1 - success="SUCCESS" - - # ${ECHO} -n "$testBinShort $allowPartials$allowComments$allowGarbage$allowMultiple-b $iter < $fileShort > ${fileShort}.test : " - # parse with a read buffer size ranging from 1-31 to stress stream parsing - while [ $iter -lt 32 ] && [ $success = "SUCCESS" ] ; do - $testBin $allowPartials $allowComments $allowGarbage $allowMultiple -b $iter < $file > ${file}.test 2>&1 - diff ${DIFF_FLAGS} ${file}.gold ${file}.test > ${file}.out - if [ $? -eq 0 ] ; then - if [ $iter -eq 31 ] ; then testsSucceeded=$(( $testsSucceeded + 1 )) ; fi - else - success="FAILURE" - iter=32 - ${ECHO} - cat ${file}.out - fi - iter=$(( iter + 1 )) - rm ${file}.test ${file}.out - done - - ${ECHO} $success - testsTotal=$(( testsTotal + 1 )) -done - -${ECHO} $testsSucceeded/$testsTotal tests successful - -if [ $testsSucceeded != $testsTotal ] ; then - exit 1 -fi - -exit 0 diff --git a/test/yajl_test.c b/test/yajl_test.c deleted file mode 100644 index 5c373d0..0000000 --- a/test/yajl_test.c +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (c) 2007-2011, Lloyd Hilaiel - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include - -#include -#include -#include - -#include - -/* memory debugging routines */ -typedef struct -{ - unsigned int numFrees; - unsigned int numMallocs; - /* XXX: we really need a hash table here with per-allocation - * information */ -} yajlTestMemoryContext; - -/* cast void * into context */ -#define TEST_CTX(vptr) ((yajlTestMemoryContext *) (vptr)) - -static void yajlTestFree(void * ctx, void * ptr) -{ - assert(ptr != NULL); - TEST_CTX(ctx)->numFrees++; - free(ptr); -} - -static void * yajlTestMalloc(void * ctx, size_t sz) -{ - assert(sz != 0); - TEST_CTX(ctx)->numMallocs++; - return malloc(sz); -} - -static void * yajlTestRealloc(void * ctx, void * ptr, size_t sz) -{ - if (ptr == NULL) { - assert(sz != 0); - TEST_CTX(ctx)->numMallocs++; - } else if (sz == 0) { - TEST_CTX(ctx)->numFrees++; - } - - return realloc(ptr, sz); -} - - -/* begin parsing callback routines */ -#define BUF_SIZE 2048 - -static int test_yajl_null(void *ctx) -{ - printf("null\n"); - return 1; -} - -static int test_yajl_boolean(void * ctx, int boolVal) -{ - printf("bool: %s\n", boolVal ? "true" : "false"); - return 1; -} - -static int test_yajl_integer(void *ctx, long long integerVal) -{ - printf("integer: %lld\n", integerVal); - return 1; -} - -static int test_yajl_double(void *ctx, double doubleVal) -{ - printf("double: %g\n", doubleVal); - return 1; -} - -static int test_yajl_string(void *ctx, const unsigned char * stringVal, - size_t stringLen) -{ - printf("string: '"); - fwrite(stringVal, 1, stringLen, stdout); - printf("'\n"); - return 1; -} - -static int test_yajl_map_key(void *ctx, const unsigned char * stringVal, - size_t stringLen) -{ - char * str = (char *) malloc(stringLen + 1); - str[stringLen] = 0; - memcpy(str, stringVal, stringLen); - printf("key: '%s'\n", str); - free(str); - return 1; -} - -static int test_yajl_start_map(void *ctx) -{ - printf("map open '{'\n"); - return 1; -} - - -static int test_yajl_end_map(void *ctx) -{ - printf("map close '}'\n"); - return 1; -} - -static int test_yajl_start_array(void *ctx) -{ - printf("array open '['\n"); - return 1; -} - -static int test_yajl_end_array(void *ctx) -{ - printf("array close ']'\n"); - return 1; -} - -static yajl_callbacks callbacks = { - test_yajl_null, - test_yajl_boolean, - test_yajl_integer, - test_yajl_double, - NULL, - test_yajl_string, - test_yajl_start_map, - test_yajl_map_key, - test_yajl_end_map, - test_yajl_start_array, - test_yajl_end_array -}; - -static void usage(const char * progname) -{ - fprintf(stderr, - "usage: %s [options]\n" - "Parse input from stdin as JSON and ouput parsing details " - "to stdout\n" - " -b set the read buffer size\n" - " -c allow comments\n" - " -g allow *g*arbage after valid JSON text\n" - " -m allows the parser to consume multiple JSON values\n" - " from a single string separated by whitespace\n" - " -p partial JSON documents should not cause errors\n", - progname); - exit(1); -} - -int -main(int argc, char ** argv) -{ - yajl_handle hand; - const char * fileName; - static unsigned char * fileData = NULL; - size_t bufSize = BUF_SIZE; - yajl_status stat; - size_t rd; - int i, j; - - /* memory allocation debugging: allocate a structure which collects - * statistics */ - yajlTestMemoryContext memCtx = { 0,0 }; - - /* memory allocation debugging: allocate a structure which holds - * allocation routines */ - yajl_alloc_funcs allocFuncs = { - yajlTestMalloc, - yajlTestRealloc, - yajlTestFree, - (void *) NULL - }; - - allocFuncs.ctx = (void *) &memCtx; - - /* allocate the parser */ - hand = yajl_alloc(&callbacks, &allocFuncs, NULL); - - /* check arguments. We expect exactly one! */ - for (i=1;i= argc) usage(argv[0]); - - /* validate integer */ - for (j=0;j<(int)strlen(argv[i]);j++) { - if (argv[i][j] <= '9' && argv[i][j] >= '0') continue; - fprintf(stderr, "-b requires an integer argument. '%s' " - "is invalid\n", argv[i]); - usage(argv[0]); - } - - bufSize = atoi(argv[i]); - if (!bufSize) { - fprintf(stderr, "%zu is an invalid buffer size\n", - bufSize); - } - } else if (!strcmp("-g", argv[i])) { - yajl_config(hand, yajl_allow_trailing_garbage, 1); - } else if (!strcmp("-m", argv[i])) { - yajl_config(hand, yajl_allow_multiple_values, 1); - } else if (!strcmp("-p", argv[i])) { - yajl_config(hand, yajl_allow_partial_values, 1); - } else { - fprintf(stderr, "invalid command line option: '%s'\n", - argv[i]); - usage(argv[0]); - } - } - - fileData = (unsigned char *) malloc(bufSize); - - if (fileData == NULL) { - fprintf(stderr, - "failed to allocate read buffer of %zu bytes, exiting.", - bufSize); - yajl_free(hand); - exit(2); - } - - fileName = argv[argc-1]; - - for (;;) { - rd = fread((void *) fileData, 1, bufSize, stdin); - - if (rd == 0) { - if (!feof(stdin)) { - fprintf(stderr, "error reading from '%s'\n", fileName); - } - break; - } - /* read file data, now pass to parser */ - stat = yajl_parse(hand, fileData, rd); - - if (stat != yajl_status_ok) break; - } - - stat = yajl_complete_parse(hand); - if (stat != yajl_status_ok) - { - unsigned char * str = yajl_get_error(hand, 0, fileData, rd); - fflush(stdout); - fprintf(stderr, "%s", (char *) str); - yajl_free_error(hand, str); - } - - yajl_free(hand); - free(fileData); - - /* finally, print out some memory statistics */ - -/* (lth) only print leaks here, as allocations and frees may vary depending - * on read buffer size, causing false failures. - * - * printf("allocations:\t%u\n", memCtx.numMallocs); - * printf("frees:\t\t%u\n", memCtx.numFrees); -*/ - fflush(stderr); - fflush(stdout); - printf("memory leaks:\t%u\n", memCtx.numMallocs - memCtx.numFrees); - - return 0; -} -- cgit v1.2.1