1 | BEGIN { $| = 1; print "1..7\n"; } |
1 | BEGIN { $| = 1; print "1..11\n"; } |
2 | |
2 | |
3 | use JSON::XS; |
3 | use JSON::XS; |
4 | |
4 | |
5 | our $test; |
5 | our $test; |
6 | sub ok($;$) { |
6 | sub ok($;$) { |
7 | print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; |
7 | print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; |
8 | } |
8 | } |
9 | |
9 | |
|
|
10 | my $def = 512; |
|
|
11 | |
10 | my $js = JSON::XS->new; |
12 | my $js = JSON::XS->new; |
11 | |
13 | |
|
|
14 | ok (!eval { $js->decode (("[" x ($def + 1)) . ("]" x ($def + 1))) }); |
12 | ok (ref $js->decode (("[" x 8192) . ("]" x 8192))); |
15 | ok (ref $js->decode (("[" x $def) . ("]" x $def))); |
13 | ok (ref $js->decode (("{\"\":" x 8191) . "[]" . ("}" x 8191))); |
16 | ok (ref $js->decode (("{\"\":" x ($def - 1)) . "[]" . ("}" x ($def - 1)))); |
|
|
17 | ok (!eval { $js->decode (("{\"\":" x $def) . "[]" . ("}" x $def)) }); |
|
|
18 | |
14 | ok (ref $js->max_depth (32)->decode (("[" x 32) . ("]" x 32))); |
19 | ok (ref $js->max_depth (32)->decode (("[" x 32) . ("]" x 32))); |
15 | |
20 | |
16 | ok ($js->max_depth(1)->encode ([])); |
21 | ok ($js->max_depth(1)->encode ([])); |
17 | ok (!eval { $js->encode ([[]]), 1 }); |
22 | ok (!eval { $js->encode ([[]]), 1 }); |
18 | |
23 | |
19 | ok ($js->max_depth(2)->encode ([{}])); |
24 | ok ($js->max_depth(2)->encode ([{}])); |
20 | ok (!eval { $js->encode ([[{}]]), 1 }); |
25 | ok (!eval { $js->encode ([[{}]]), 1 }); |
21 | |
26 | |
|
|
27 | ok (eval { ref $js->max_size (7)->decode ("[ ]") }); |
|
|
28 | eval { $js->max_size (7)->decode ("[ ]") }; ok ($@ =~ /max_size/); |
|
|
29 | |