master
  1// This file was generated by _generate_JSONTestSuite.zig
  2// These test cases are sourced from: https://github.com/nst/JSONTestSuite
  3const ok = @import("./test.zig").ok;
  4const err = @import("./test.zig").err;
  5const any = @import("./test.zig").any;
  6
  7test "i_number_double_huge_neg_exp.json" {
  8    try any("[123.456e-789]");
  9}
 10test "i_number_huge_exp.json" {
 11    try any("[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006]");
 12}
 13test "i_number_neg_int_huge_exp.json" {
 14    try any("[-1e+9999]");
 15}
 16test "i_number_pos_double_huge_exp.json" {
 17    try any("[1.5e+9999]");
 18}
 19test "i_number_real_neg_overflow.json" {
 20    try any("[-123123e100000]");
 21}
 22test "i_number_real_pos_overflow.json" {
 23    try any("[123123e100000]");
 24}
 25test "i_number_real_underflow.json" {
 26    try any("[123e-10000000]");
 27}
 28test "i_number_too_big_neg_int.json" {
 29    try any("[-123123123123123123123123123123]");
 30}
 31test "i_number_too_big_pos_int.json" {
 32    try any("[100000000000000000000]");
 33}
 34test "i_number_very_big_negative_int.json" {
 35    try any("[-237462374673276894279832749832423479823246327846]");
 36}
 37test "i_object_key_lone_2nd_surrogate.json" {
 38    try any("{\"\\uDFAA\":0}");
 39}
 40test "i_string_1st_surrogate_but_2nd_missing.json" {
 41    try any("[\"\\uDADA\"]");
 42}
 43test "i_string_1st_valid_surrogate_2nd_invalid.json" {
 44    try any("[\"\\uD888\\u1234\"]");
 45}
 46test "i_string_UTF-16LE_with_BOM.json" {
 47    try any("\xff\xfe[\x00\"\x00\xe9\x00\"\x00]\x00");
 48}
 49test "i_string_UTF-8_invalid_sequence.json" {
 50    try any("[\"\xe6\x97\xa5\xd1\x88\xfa\"]");
 51}
 52test "i_string_UTF8_surrogate_U+D800.json" {
 53    try any("[\"\xed\xa0\x80\"]");
 54}
 55test "i_string_incomplete_surrogate_and_escape_valid.json" {
 56    try any("[\"\\uD800\\n\"]");
 57}
 58test "i_string_incomplete_surrogate_pair.json" {
 59    try any("[\"\\uDd1ea\"]");
 60}
 61test "i_string_incomplete_surrogates_escape_valid.json" {
 62    try any("[\"\\uD800\\uD800\\n\"]");
 63}
 64test "i_string_invalid_lonely_surrogate.json" {
 65    try any("[\"\\ud800\"]");
 66}
 67test "i_string_invalid_surrogate.json" {
 68    try any("[\"\\ud800abc\"]");
 69}
 70test "i_string_invalid_utf-8.json" {
 71    try any("[\"\xff\"]");
 72}
 73test "i_string_inverted_surrogates_U+1D11E.json" {
 74    try any("[\"\\uDd1e\\uD834\"]");
 75}
 76test "i_string_iso_latin_1.json" {
 77    try any("[\"\xe9\"]");
 78}
 79test "i_string_lone_second_surrogate.json" {
 80    try any("[\"\\uDFAA\"]");
 81}
 82test "i_string_lone_utf8_continuation_byte.json" {
 83    try any("[\"\x81\"]");
 84}
 85test "i_string_not_in_unicode_range.json" {
 86    try any("[\"\xf4\xbf\xbf\xbf\"]");
 87}
 88test "i_string_overlong_sequence_2_bytes.json" {
 89    try any("[\"\xc0\xaf\"]");
 90}
 91test "i_string_overlong_sequence_6_bytes.json" {
 92    try any("[\"\xfc\x83\xbf\xbf\xbf\xbf\"]");
 93}
 94test "i_string_overlong_sequence_6_bytes_null.json" {
 95    try any("[\"\xfc\x80\x80\x80\x80\x80\"]");
 96}
 97test "i_string_truncated-utf-8.json" {
 98    try any("[\"\xe0\xff\"]");
 99}
100test "i_string_utf16BE_no_BOM.json" {
101    try any("\x00[\x00\"\x00\xe9\x00\"\x00]");
102}
103test "i_string_utf16LE_no_BOM.json" {
104    try any("[\x00\"\x00\xe9\x00\"\x00]\x00");
105}
106test "i_structure_500_nested_arrays.json" {
107    try any("[" ** 500 ++ "]" ** 500);
108}
109test "i_structure_UTF-8_BOM_empty_object.json" {
110    try any("\xef\xbb\xbf{}");
111}
112test "n_array_1_true_without_comma.json" {
113    try err("[1 true]");
114}
115test "n_array_a_invalid_utf8.json" {
116    try err("[a\xe5]");
117}
118test "n_array_colon_instead_of_comma.json" {
119    try err("[\"\": 1]");
120}
121test "n_array_comma_after_close.json" {
122    try err("[\"\"],");
123}
124test "n_array_comma_and_number.json" {
125    try err("[,1]");
126}
127test "n_array_double_comma.json" {
128    try err("[1,,2]");
129}
130test "n_array_double_extra_comma.json" {
131    try err("[\"x\",,]");
132}
133test "n_array_extra_close.json" {
134    try err("[\"x\"]]");
135}
136test "n_array_extra_comma.json" {
137    try err("[\"\",]");
138}
139test "n_array_incomplete.json" {
140    try err("[\"x\"");
141}
142test "n_array_incomplete_invalid_value.json" {
143    try err("[x");
144}
145test "n_array_inner_array_no_comma.json" {
146    try err("[3[4]]");
147}
148test "n_array_invalid_utf8.json" {
149    try err("[\xff]");
150}
151test "n_array_items_separated_by_semicolon.json" {
152    try err("[1:2]");
153}
154test "n_array_just_comma.json" {
155    try err("[,]");
156}
157test "n_array_just_minus.json" {
158    try err("[-]");
159}
160test "n_array_missing_value.json" {
161    try err("[   , \"\"]");
162}
163test "n_array_newlines_unclosed.json" {
164    try err("[\"a\",\n4\n,1,");
165}
166test "n_array_number_and_comma.json" {
167    try err("[1,]");
168}
169test "n_array_number_and_several_commas.json" {
170    try err("[1,,]");
171}
172test "n_array_spaces_vertical_tab_formfeed.json" {
173    try err("[\"\x0ba\"\\f]");
174}
175test "n_array_star_inside.json" {
176    try err("[*]");
177}
178test "n_array_unclosed.json" {
179    try err("[\"\"");
180}
181test "n_array_unclosed_trailing_comma.json" {
182    try err("[1,");
183}
184test "n_array_unclosed_with_new_lines.json" {
185    try err("[1,\n1\n,1");
186}
187test "n_array_unclosed_with_object_inside.json" {
188    try err("[{}");
189}
190test "n_incomplete_false.json" {
191    try err("[fals]");
192}
193test "n_incomplete_null.json" {
194    try err("[nul]");
195}
196test "n_incomplete_true.json" {
197    try err("[tru]");
198}
199test "n_multidigit_number_then_00.json" {
200    try err("123\x00");
201}
202test "n_number_++.json" {
203    try err("[++1234]");
204}
205test "n_number_+1.json" {
206    try err("[+1]");
207}
208test "n_number_+Inf.json" {
209    try err("[+Inf]");
210}
211test "n_number_-01.json" {
212    try err("[-01]");
213}
214test "n_number_-1.0..json" {
215    try err("[-1.0.]");
216}
217test "n_number_-2..json" {
218    try err("[-2.]");
219}
220test "n_number_-NaN.json" {
221    try err("[-NaN]");
222}
223test "n_number_.-1.json" {
224    try err("[.-1]");
225}
226test "n_number_.2e-3.json" {
227    try err("[.2e-3]");
228}
229test "n_number_0.1.2.json" {
230    try err("[0.1.2]");
231}
232test "n_number_0.3e+.json" {
233    try err("[0.3e+]");
234}
235test "n_number_0.3e.json" {
236    try err("[0.3e]");
237}
238test "n_number_0.e1.json" {
239    try err("[0.e1]");
240}
241test "n_number_0_capital_E+.json" {
242    try err("[0E+]");
243}
244test "n_number_0_capital_E.json" {
245    try err("[0E]");
246}
247test "n_number_0e+.json" {
248    try err("[0e+]");
249}
250test "n_number_0e.json" {
251    try err("[0e]");
252}
253test "n_number_1.0e+.json" {
254    try err("[1.0e+]");
255}
256test "n_number_1.0e-.json" {
257    try err("[1.0e-]");
258}
259test "n_number_1.0e.json" {
260    try err("[1.0e]");
261}
262test "n_number_1_000.json" {
263    try err("[1 000.0]");
264}
265test "n_number_1eE2.json" {
266    try err("[1eE2]");
267}
268test "n_number_2.e+3.json" {
269    try err("[2.e+3]");
270}
271test "n_number_2.e-3.json" {
272    try err("[2.e-3]");
273}
274test "n_number_2.e3.json" {
275    try err("[2.e3]");
276}
277test "n_number_9.e+.json" {
278    try err("[9.e+]");
279}
280test "n_number_Inf.json" {
281    try err("[Inf]");
282}
283test "n_number_NaN.json" {
284    try err("[NaN]");
285}
286test "n_number_U+FF11_fullwidth_digit_one.json" {
287    try err("[\xef\xbc\x91]");
288}
289test "n_number_expression.json" {
290    try err("[1+2]");
291}
292test "n_number_hex_1_digit.json" {
293    try err("[0x1]");
294}
295test "n_number_hex_2_digits.json" {
296    try err("[0x42]");
297}
298test "n_number_infinity.json" {
299    try err("[Infinity]");
300}
301test "n_number_invalid+-.json" {
302    try err("[0e+-1]");
303}
304test "n_number_invalid-negative-real.json" {
305    try err("[-123.123foo]");
306}
307test "n_number_invalid-utf-8-in-bigger-int.json" {
308    try err("[123\xe5]");
309}
310test "n_number_invalid-utf-8-in-exponent.json" {
311    try err("[1e1\xe5]");
312}
313test "n_number_invalid-utf-8-in-int.json" {
314    try err("[0\xe5]\n");
315}
316test "n_number_minus_infinity.json" {
317    try err("[-Infinity]");
318}
319test "n_number_minus_sign_with_trailing_garbage.json" {
320    try err("[-foo]");
321}
322test "n_number_minus_space_1.json" {
323    try err("[- 1]");
324}
325test "n_number_neg_int_starting_with_zero.json" {
326    try err("[-012]");
327}
328test "n_number_neg_real_without_int_part.json" {
329    try err("[-.123]");
330}
331test "n_number_neg_with_garbage_at_end.json" {
332    try err("[-1x]");
333}
334test "n_number_real_garbage_after_e.json" {
335    try err("[1ea]");
336}
337test "n_number_real_with_invalid_utf8_after_e.json" {
338    try err("[1e\xe5]");
339}
340test "n_number_real_without_fractional_part.json" {
341    try err("[1.]");
342}
343test "n_number_starting_with_dot.json" {
344    try err("[.123]");
345}
346test "n_number_with_alpha.json" {
347    try err("[1.2a-3]");
348}
349test "n_number_with_alpha_char.json" {
350    try err("[1.8011670033376514H-308]");
351}
352test "n_number_with_leading_zero.json" {
353    try err("[012]");
354}
355test "n_object_bad_value.json" {
356    try err("[\"x\", truth]");
357}
358test "n_object_bracket_key.json" {
359    try err("{[: \"x\"}\n");
360}
361test "n_object_comma_instead_of_colon.json" {
362    try err("{\"x\", null}");
363}
364test "n_object_double_colon.json" {
365    try err("{\"x\"::\"b\"}");
366}
367test "n_object_emoji.json" {
368    try err("{\xf0\x9f\x87\xa8\xf0\x9f\x87\xad}");
369}
370test "n_object_garbage_at_end.json" {
371    try err("{\"a\":\"a\" 123}");
372}
373test "n_object_key_with_single_quotes.json" {
374    try err("{key: 'value'}");
375}
376test "n_object_lone_continuation_byte_in_key_and_trailing_comma.json" {
377    try err("{\"\xb9\":\"0\",}");
378}
379test "n_object_missing_colon.json" {
380    try err("{\"a\" b}");
381}
382test "n_object_missing_key.json" {
383    try err("{:\"b\"}");
384}
385test "n_object_missing_semicolon.json" {
386    try err("{\"a\" \"b\"}");
387}
388test "n_object_missing_value.json" {
389    try err("{\"a\":");
390}
391test "n_object_no-colon.json" {
392    try err("{\"a\"");
393}
394test "n_object_non_string_key.json" {
395    try err("{1:1}");
396}
397test "n_object_non_string_key_but_huge_number_instead.json" {
398    try err("{9999E9999:1}");
399}
400test "n_object_repeated_null_null.json" {
401    try err("{null:null,null:null}");
402}
403test "n_object_several_trailing_commas.json" {
404    try err("{\"id\":0,,,,,}");
405}
406test "n_object_single_quote.json" {
407    try err("{'a':0}");
408}
409test "n_object_trailing_comma.json" {
410    try err("{\"id\":0,}");
411}
412test "n_object_trailing_comment.json" {
413    try err("{\"a\":\"b\"}/**/");
414}
415test "n_object_trailing_comment_open.json" {
416    try err("{\"a\":\"b\"}/**//");
417}
418test "n_object_trailing_comment_slash_open.json" {
419    try err("{\"a\":\"b\"}//");
420}
421test "n_object_trailing_comment_slash_open_incomplete.json" {
422    try err("{\"a\":\"b\"}/");
423}
424test "n_object_two_commas_in_a_row.json" {
425    try err("{\"a\":\"b\",,\"c\":\"d\"}");
426}
427test "n_object_unquoted_key.json" {
428    try err("{a: \"b\"}");
429}
430test "n_object_unterminated-value.json" {
431    try err("{\"a\":\"a");
432}
433test "n_object_with_single_string.json" {
434    try err("{ \"foo\" : \"bar\", \"a\" }");
435}
436test "n_object_with_trailing_garbage.json" {
437    try err("{\"a\":\"b\"}#");
438}
439test "n_single_space.json" {
440    try err(" ");
441}
442test "n_string_1_surrogate_then_escape.json" {
443    try err("[\"\\uD800\\\"]");
444}
445test "n_string_1_surrogate_then_escape_u.json" {
446    try err("[\"\\uD800\\u\"]");
447}
448test "n_string_1_surrogate_then_escape_u1.json" {
449    try err("[\"\\uD800\\u1\"]");
450}
451test "n_string_1_surrogate_then_escape_u1x.json" {
452    try err("[\"\\uD800\\u1x\"]");
453}
454test "n_string_accentuated_char_no_quotes.json" {
455    try err("[\xc3\xa9]");
456}
457test "n_string_backslash_00.json" {
458    try err("[\"\\\x00\"]");
459}
460test "n_string_escape_x.json" {
461    try err("[\"\\x00\"]");
462}
463test "n_string_escaped_backslash_bad.json" {
464    try err("[\"\\\\\\\"]");
465}
466test "n_string_escaped_ctrl_char_tab.json" {
467    try err("[\"\\\x09\"]");
468}
469test "n_string_escaped_emoji.json" {
470    try err("[\"\\\xf0\x9f\x8c\x80\"]");
471}
472test "n_string_incomplete_escape.json" {
473    try err("[\"\\\"]");
474}
475test "n_string_incomplete_escaped_character.json" {
476    try err("[\"\\u00A\"]");
477}
478test "n_string_incomplete_surrogate.json" {
479    try err("[\"\\uD834\\uDd\"]");
480}
481test "n_string_incomplete_surrogate_escape_invalid.json" {
482    try err("[\"\\uD800\\uD800\\x\"]");
483}
484test "n_string_invalid-utf-8-in-escape.json" {
485    try err("[\"\\u\xe5\"]");
486}
487test "n_string_invalid_backslash_esc.json" {
488    try err("[\"\\a\"]");
489}
490test "n_string_invalid_unicode_escape.json" {
491    try err("[\"\\uqqqq\"]");
492}
493test "n_string_invalid_utf8_after_escape.json" {
494    try err("[\"\\\xe5\"]");
495}
496test "n_string_leading_uescaped_thinspace.json" {
497    try err("[\\u0020\"asd\"]");
498}
499test "n_string_no_quotes_with_bad_escape.json" {
500    try err("[\\n]");
501}
502test "n_string_single_doublequote.json" {
503    try err("\"");
504}
505test "n_string_single_quote.json" {
506    try err("['single quote']");
507}
508test "n_string_single_string_no_double_quotes.json" {
509    try err("abc");
510}
511test "n_string_start_escape_unclosed.json" {
512    try err("[\"\\");
513}
514test "n_string_unescaped_ctrl_char.json" {
515    try err("[\"a\x00a\"]");
516}
517test "n_string_unescaped_newline.json" {
518    try err("[\"new\nline\"]");
519}
520test "n_string_unescaped_tab.json" {
521    try err("[\"\x09\"]");
522}
523test "n_string_unicode_CapitalU.json" {
524    try err("\"\\UA66D\"");
525}
526test "n_string_with_trailing_garbage.json" {
527    try err("\"\"x");
528}
529test "n_structure_100000_opening_arrays.json" {
530    try err("[" ** 100000);
531}
532test "n_structure_U+2060_word_joined.json" {
533    try err("[\xe2\x81\xa0]");
534}
535test "n_structure_UTF8_BOM_no_data.json" {
536    try err("\xef\xbb\xbf");
537}
538test "n_structure_angle_bracket_..json" {
539    try err("<.>");
540}
541test "n_structure_angle_bracket_null.json" {
542    try err("[<null>]");
543}
544test "n_structure_array_trailing_garbage.json" {
545    try err("[1]x");
546}
547test "n_structure_array_with_extra_array_close.json" {
548    try err("[1]]");
549}
550test "n_structure_array_with_unclosed_string.json" {
551    try err("[\"asd]");
552}
553test "n_structure_ascii-unicode-identifier.json" {
554    try err("a\xc3\xa5");
555}
556test "n_structure_capitalized_True.json" {
557    try err("[True]");
558}
559test "n_structure_close_unopened_array.json" {
560    try err("1]");
561}
562test "n_structure_comma_instead_of_closing_brace.json" {
563    try err("{\"x\": true,");
564}
565test "n_structure_double_array.json" {
566    try err("[][]");
567}
568test "n_structure_end_array.json" {
569    try err("]");
570}
571test "n_structure_incomplete_UTF8_BOM.json" {
572    try err("\xef\xbb{}");
573}
574test "n_structure_lone-invalid-utf-8.json" {
575    try err("\xe5");
576}
577test "n_structure_lone-open-bracket.json" {
578    try err("[");
579}
580test "n_structure_no_data.json" {
581    try err("");
582}
583test "n_structure_null-byte-outside-string.json" {
584    try err("[\x00]");
585}
586test "n_structure_number_with_trailing_garbage.json" {
587    try err("2@");
588}
589test "n_structure_object_followed_by_closing_object.json" {
590    try err("{}}");
591}
592test "n_structure_object_unclosed_no_value.json" {
593    try err("{\"\":");
594}
595test "n_structure_object_with_comment.json" {
596    try err("{\"a\":/*comment*/\"b\"}");
597}
598test "n_structure_object_with_trailing_garbage.json" {
599    try err("{\"a\": true} \"x\"");
600}
601test "n_structure_open_array_apostrophe.json" {
602    try err("['");
603}
604test "n_structure_open_array_comma.json" {
605    try err("[,");
606}
607test "n_structure_open_array_object.json" {
608    try err("[{\"\":" ** 50000 ++ "\n");
609}
610test "n_structure_open_array_open_object.json" {
611    try err("[{");
612}
613test "n_structure_open_array_open_string.json" {
614    try err("[\"a");
615}
616test "n_structure_open_array_string.json" {
617    try err("[\"a\"");
618}
619test "n_structure_open_object.json" {
620    try err("{");
621}
622test "n_structure_open_object_close_array.json" {
623    try err("{]");
624}
625test "n_structure_open_object_comma.json" {
626    try err("{,");
627}
628test "n_structure_open_object_open_array.json" {
629    try err("{[");
630}
631test "n_structure_open_object_open_string.json" {
632    try err("{\"a");
633}
634test "n_structure_open_object_string_with_apostrophes.json" {
635    try err("{'a'");
636}
637test "n_structure_open_open.json" {
638    try err("[\"\\{[\"\\{[\"\\{[\"\\{");
639}
640test "n_structure_single_eacute.json" {
641    try err("\xe9");
642}
643test "n_structure_single_star.json" {
644    try err("*");
645}
646test "n_structure_trailing_#.json" {
647    try err("{\"a\":\"b\"}#{}");
648}
649test "n_structure_uescaped_LF_before_string.json" {
650    try err("[\\u000A\"\"]");
651}
652test "n_structure_unclosed_array.json" {
653    try err("[1");
654}
655test "n_structure_unclosed_array_partial_null.json" {
656    try err("[ false, nul");
657}
658test "n_structure_unclosed_array_unfinished_false.json" {
659    try err("[ true, fals");
660}
661test "n_structure_unclosed_array_unfinished_true.json" {
662    try err("[ false, tru");
663}
664test "n_structure_unclosed_object.json" {
665    try err("{\"asd\":\"asd\"");
666}
667test "n_structure_unicode-identifier.json" {
668    try err("\xc3\xa5");
669}
670test "n_structure_whitespace_U+2060_word_joiner.json" {
671    try err("[\xe2\x81\xa0]");
672}
673test "n_structure_whitespace_formfeed.json" {
674    try err("[\x0c]");
675}
676test "y_array_arraysWithSpaces.json" {
677    try ok("[[]   ]");
678}
679test "y_array_empty-string.json" {
680    try ok("[\"\"]");
681}
682test "y_array_empty.json" {
683    try ok("[]");
684}
685test "y_array_ending_with_newline.json" {
686    try ok("[\"a\"]");
687}
688test "y_array_false.json" {
689    try ok("[false]");
690}
691test "y_array_heterogeneous.json" {
692    try ok("[null, 1, \"1\", {}]");
693}
694test "y_array_null.json" {
695    try ok("[null]");
696}
697test "y_array_with_1_and_newline.json" {
698    try ok("[1\n]");
699}
700test "y_array_with_leading_space.json" {
701    try ok(" [1]");
702}
703test "y_array_with_several_null.json" {
704    try ok("[1,null,null,null,2]");
705}
706test "y_array_with_trailing_space.json" {
707    try ok("[2] ");
708}
709test "y_number.json" {
710    try ok("[123e65]");
711}
712test "y_number_0e+1.json" {
713    try ok("[0e+1]");
714}
715test "y_number_0e1.json" {
716    try ok("[0e1]");
717}
718test "y_number_after_space.json" {
719    try ok("[ 4]");
720}
721test "y_number_double_close_to_zero.json" {
722    try ok("[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001]\n");
723}
724test "y_number_int_with_exp.json" {
725    try ok("[20e1]");
726}
727test "y_number_minus_zero.json" {
728    try ok("[-0]");
729}
730test "y_number_negative_int.json" {
731    try ok("[-123]");
732}
733test "y_number_negative_one.json" {
734    try ok("[-1]");
735}
736test "y_number_negative_zero.json" {
737    try ok("[-0]");
738}
739test "y_number_real_capital_e.json" {
740    try ok("[1E22]");
741}
742test "y_number_real_capital_e_neg_exp.json" {
743    try ok("[1E-2]");
744}
745test "y_number_real_capital_e_pos_exp.json" {
746    try ok("[1E+2]");
747}
748test "y_number_real_exponent.json" {
749    try ok("[123e45]");
750}
751test "y_number_real_fraction_exponent.json" {
752    try ok("[123.456e78]");
753}
754test "y_number_real_neg_exp.json" {
755    try ok("[1e-2]");
756}
757test "y_number_real_pos_exponent.json" {
758    try ok("[1e+2]");
759}
760test "y_number_simple_int.json" {
761    try ok("[123]");
762}
763test "y_number_simple_real.json" {
764    try ok("[123.456789]");
765}
766test "y_object.json" {
767    try ok("{\"asd\":\"sdf\", \"dfg\":\"fgh\"}");
768}
769test "y_object_basic.json" {
770    try ok("{\"asd\":\"sdf\"}");
771}
772test "y_object_duplicated_key.json" {
773    try ok("{\"a\":\"b\",\"a\":\"c\"}");
774}
775test "y_object_duplicated_key_and_value.json" {
776    try ok("{\"a\":\"b\",\"a\":\"b\"}");
777}
778test "y_object_empty.json" {
779    try ok("{}");
780}
781test "y_object_empty_key.json" {
782    try ok("{\"\":0}");
783}
784test "y_object_escaped_null_in_key.json" {
785    try ok("{\"foo\\u0000bar\": 42}");
786}
787test "y_object_extreme_numbers.json" {
788    try ok("{ \"min\": -1.0e+28, \"max\": 1.0e+28 }");
789}
790test "y_object_long_strings.json" {
791    try ok("{\"x\":[{\"id\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"}], \"id\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"}");
792}
793test "y_object_simple.json" {
794    try ok("{\"a\":[]}");
795}
796test "y_object_string_unicode.json" {
797    try ok("{\"title\":\"\\u041f\\u043e\\u043b\\u0442\\u043e\\u0440\\u0430 \\u0417\\u0435\\u043c\\u043b\\u0435\\u043a\\u043e\\u043f\\u0430\" }");
798}
799test "y_object_with_newlines.json" {
800    try ok("{\n\"a\": \"b\"\n}");
801}
802test "y_string_1_2_3_bytes_UTF-8_sequences.json" {
803    try ok("[\"\\u0060\\u012a\\u12AB\"]");
804}
805test "y_string_accepted_surrogate_pair.json" {
806    try ok("[\"\\uD801\\udc37\"]");
807}
808test "y_string_accepted_surrogate_pairs.json" {
809    try ok("[\"\\ud83d\\ude39\\ud83d\\udc8d\"]");
810}
811test "y_string_allowed_escapes.json" {
812    try ok("[\"\\\"\\\\\\/\\b\\f\\n\\r\\t\"]");
813}
814test "y_string_backslash_and_u_escaped_zero.json" {
815    try ok("[\"\\\\u0000\"]");
816}
817test "y_string_backslash_doublequotes.json" {
818    try ok("[\"\\\"\"]");
819}
820test "y_string_comments.json" {
821    try ok("[\"a/*b*/c/*d//e\"]");
822}
823test "y_string_double_escape_a.json" {
824    try ok("[\"\\\\a\"]");
825}
826test "y_string_double_escape_n.json" {
827    try ok("[\"\\\\n\"]");
828}
829test "y_string_escaped_control_character.json" {
830    try ok("[\"\\u0012\"]");
831}
832test "y_string_escaped_noncharacter.json" {
833    try ok("[\"\\uFFFF\"]");
834}
835test "y_string_in_array.json" {
836    try ok("[\"asd\"]");
837}
838test "y_string_in_array_with_leading_space.json" {
839    try ok("[ \"asd\"]");
840}
841test "y_string_last_surrogates_1_and_2.json" {
842    try ok("[\"\\uDBFF\\uDFFF\"]");
843}
844test "y_string_nbsp_uescaped.json" {
845    try ok("[\"new\\u00A0line\"]");
846}
847test "y_string_nonCharacterInUTF-8_U+10FFFF.json" {
848    try ok("[\"\xf4\x8f\xbf\xbf\"]");
849}
850test "y_string_nonCharacterInUTF-8_U+FFFF.json" {
851    try ok("[\"\xef\xbf\xbf\"]");
852}
853test "y_string_null_escape.json" {
854    try ok("[\"\\u0000\"]");
855}
856test "y_string_one-byte-utf-8.json" {
857    try ok("[\"\\u002c\"]");
858}
859test "y_string_pi.json" {
860    try ok("[\"\xcf\x80\"]");
861}
862test "y_string_reservedCharacterInUTF-8_U+1BFFF.json" {
863    try ok("[\"\xf0\x9b\xbf\xbf\"]");
864}
865test "y_string_simple_ascii.json" {
866    try ok("[\"asd \"]");
867}
868test "y_string_space.json" {
869    try ok("\" \"");
870}
871test "y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json" {
872    try ok("[\"\\uD834\\uDd1e\"]");
873}
874test "y_string_three-byte-utf-8.json" {
875    try ok("[\"\\u0821\"]");
876}
877test "y_string_two-byte-utf-8.json" {
878    try ok("[\"\\u0123\"]");
879}
880test "y_string_u+2028_line_sep.json" {
881    try ok("[\"\xe2\x80\xa8\"]");
882}
883test "y_string_u+2029_par_sep.json" {
884    try ok("[\"\xe2\x80\xa9\"]");
885}
886test "y_string_uEscape.json" {
887    try ok("[\"\\u0061\\u30af\\u30EA\\u30b9\"]");
888}
889test "y_string_uescaped_newline.json" {
890    try ok("[\"new\\u000Aline\"]");
891}
892test "y_string_unescaped_char_delete.json" {
893    try ok("[\"\x7f\"]");
894}
895test "y_string_unicode.json" {
896    try ok("[\"\\uA66D\"]");
897}
898test "y_string_unicodeEscapedBackslash.json" {
899    try ok("[\"\\u005C\"]");
900}
901test "y_string_unicode_2.json" {
902    try ok("[\"\xe2\x8d\x82\xe3\x88\xb4\xe2\x8d\x82\"]");
903}
904test "y_string_unicode_U+10FFFE_nonchar.json" {
905    try ok("[\"\\uDBFF\\uDFFE\"]");
906}
907test "y_string_unicode_U+1FFFE_nonchar.json" {
908    try ok("[\"\\uD83F\\uDFFE\"]");
909}
910test "y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json" {
911    try ok("[\"\\u200B\"]");
912}
913test "y_string_unicode_U+2064_invisible_plus.json" {
914    try ok("[\"\\u2064\"]");
915}
916test "y_string_unicode_U+FDD0_nonchar.json" {
917    try ok("[\"\\uFDD0\"]");
918}
919test "y_string_unicode_U+FFFE_nonchar.json" {
920    try ok("[\"\\uFFFE\"]");
921}
922test "y_string_unicode_escaped_double_quote.json" {
923    try ok("[\"\\u0022\"]");
924}
925test "y_string_utf8.json" {
926    try ok("[\"\xe2\x82\xac\xf0\x9d\x84\x9e\"]");
927}
928test "y_string_with_del_character.json" {
929    try ok("[\"a\x7fa\"]");
930}
931test "y_structure_lonely_false.json" {
932    try ok("false");
933}
934test "y_structure_lonely_int.json" {
935    try ok("42");
936}
937test "y_structure_lonely_negative_real.json" {
938    try ok("-0.1");
939}
940test "y_structure_lonely_null.json" {
941    try ok("null");
942}
943test "y_structure_lonely_string.json" {
944    try ok("\"asd\"");
945}
946test "y_structure_lonely_true.json" {
947    try ok("true");
948}
949test "y_structure_string_empty.json" {
950    try ok("\"\"");
951}
952test "y_structure_trailing_newline.json" {
953    try ok("[\"a\"]\n");
954}
955test "y_structure_true_in_array.json" {
956    try ok("[true]");
957}
958test "y_structure_whitespace_array.json" {
959    try ok(" [] ");
960}