diff options
Diffstat (limited to 't/rt_90071_incr_parse.t')
-rw-r--r-- | t/rt_90071_incr_parse.t | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/t/rt_90071_incr_parse.t b/t/rt_90071_incr_parse.t new file mode 100644 index 0000000..c45de15 --- /dev/null +++ b/t/rt_90071_incr_parse.t @@ -0,0 +1,29 @@ +use strict; +use Test::More; +BEGIN { $ENV{PERL_JSON_BACKEND} ||= "JSON::backportPP"; } +use JSON; + +BEGIN { plan skip_all => "requires $JSON::BackendModule 2.90 or newer" if JSON->backend->is_pp and eval $JSON::BackendModule->VERSION < 2.90 } + +BEGIN { plan tests => 2 }; + +my $json = JSON->new; +my $kb = 'a' x 1024; +my $hash = { map { $_ => $kb } (1..40) }; +my $data = join ( '', $json->encode($hash), $json->encode($hash) ); +my $size = length($data); +# note "Total size: [$size]"; +my $offset = 0; +while ($size) { + # note "Bytes left [$size]"; + my $incr = substr($data, $offset, 4096); + my $bytes = length($incr); + $size -= $bytes; + $offset += $bytes; + if ($bytes) { + $json->incr_parse($incr); + } + while( my $obj = $json->incr_parse ) { + ok "Got JSON object"; + } +} |