--- JSON-XS/t/19_incr.t 2008/03/26 02:35:45 1.2 +++ JSON-XS/t/19_incr.t 2008/06/22 12:05:49 1.4 @@ -3,7 +3,7 @@ use strict; no warnings; use Test::More; -BEGIN { plan tests => 689 }; +BEGIN { plan tests => 697 }; use JSON::XS; @@ -63,3 +63,32 @@ ok ('[5]' eq $coder->encode (scalar $coder->incr_parse), "sparse3"); } +{ + my $coder = JSON::XS->new->max_size (5); + ok (!$coder->incr_parse ("[ "), "incsize1"); + eval { !$coder->incr_parse ("] ") }; ok ($@ =~ /6 bytes/, "incsize2 $@"); +} + +{ + my $coder = JSON::XS->new->max_depth (3); + ok (!$coder->incr_parse ("[[["), "incdepth1"); + eval { !$coder->incr_parse (" [] ") }; ok ($@ =~ /maximum nesting/, "incdepth2 $@"); +} + +# contributed by yuval kogman, reformatted to fit style +{ + my $coder = JSON::XS->new; + + my $res = eval { $coder->incr_parse("]") }; + my $e = $@; # test more clobbers $@, we need it twice + + ok (!$res, "unbalanced bracket"); + ok ($e, "got error"); + like ($e, qr/malformed/, "malformed json string error"); + + $coder->incr_skip; + + is_deeply (eval { $coder->incr_parse("[42]") }, [42], "valid data after incr_skip"); +} + +