summaryrefslogtreecommitdiff
path: root/t/21_evans_bugrep.t
diff options
context:
space:
mode:
Diffstat (limited to 't/21_evans_bugrep.t')
-rw-r--r--t/21_evans_bugrep.t50
1 files changed, 50 insertions, 0 deletions
diff --git a/t/21_evans_bugrep.t b/t/21_evans_bugrep.t
new file mode 100644
index 0000000..2e6200d
--- /dev/null
+++ b/t/21_evans_bugrep.t
@@ -0,0 +1,50 @@
+use strict;
+use Test::More;
+
+BEGIN { plan tests => 6 };
+
+BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; }
+
+BEGIN {
+ use lib qw(t);
+ use _unicode_handling;
+}
+
+
+use JSON;
+
+print JSON->backend, "\t", JSON->backend->VERSION, "\n";
+
+my $data = ["\x{3042}\x{3044}\x{3046}\x{3048}\x{304a}",
+ "\x{304b}\x{304d}\x{304f}\x{3051}\x{3053}"];
+
+my $j = new JSON;
+my $js = $j->encode($data);
+$j = undef;
+
+my @parts = (substr($js, 0, int(length($js) / 2)),
+ substr($js, int(length($js) / 2)));
+$j = JSON->new;
+my $object = $j->incr_parse($parts[0]);
+
+ok( !defined $object );
+
+eval {
+ $j->incr_text;
+};
+
+like( $@, qr/incr_text can not be called when the incremental parser already started parsing/ );
+
+$object = $j->incr_parse($parts[1]);
+
+ok( defined $object );
+
+is( $object->[0], $data->[0] );
+is( $object->[1], $data->[1] );
+
+eval {
+ $j->incr_text;
+};
+
+ok( !$@ );
+