Home | History | Annotate | Download | only in t
      1 #
      2 # decode on Perl 5.005, 5.6, 5.8 or later
      3 #
      4 use strict;
      5 use Test::More;
      6 
      7 BEGIN { plan tests => 6 };
      8 
      9 BEGIN { $ENV{PERL_JSON_BACKEND} = 1; }
     10 
     11 use JSON;
     12 
     13 BEGIN {
     14     use lib qw(t);
     15     use _unicode_handling;
     16 }
     17 
     18 no utf8;
     19 
     20 SKIP: {
     21     skip "can't use JSON::XS.", 6, unless( JSON->backend->is_xs );
     22 
     23 my $json = JSON->new->allow_nonref;
     24 
     25 
     26 is($json->decode(q|""|),                   ""); # utf8
     27 is($json->decode(q|"\u00fc"|),           "\xfc"); # latin1
     28 is($json->decode(q|"\u00c3\u00bc"|), "\xc3\xbc"); # utf8
     29 
     30 my $str = ''; # Japanese 'a' in utf8
     31 
     32 is($json->decode(q|"\u00e3\u0081\u0082"|), $str);
     33 
     34 utf8::decode($str); # usually UTF-8 flagged on, but no-op for 5.005.
     35 
     36 is($json->decode(q|"\u3042"|), $str);
     37 
     38 
     39 my $utf8 = $json->decode(q|"\ud808\udf45"|); # chr 12345
     40 
     41 utf8::encode($utf8); # UTf-8 flaged off
     42 
     43 is($utf8, "\xf0\x92\x8d\x85");
     44 
     45 }
     46