Home | History | Annotate | Download | only in t
      1 #
      2 # UTF-8
      3 #
      4 
      5 # copied over from JSON::PC and modified to use JSON
      6 # copied over from JSON::XS and modified to use JSON
      7 
      8 use Test::More;
      9 use strict;
     10 
     11 BEGIN { plan tests => 17 };
     12 
     13 BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; }
     14 
     15 BEGIN {
     16     use lib qw(t);
     17     use _unicode_handling;
     18 }
     19 
     20 
     21 use utf8;
     22 use JSON;
     23 
     24 #########################
     25 my ($js,$obj,$str);
     26 
     27 my $pc = new JSON;
     28 
     29 $obj = {test => qq|abc"def|};
     30 $str = $pc->encode($obj);
     31 is($str,q|{"test":"abc\"def"}|);
     32 
     33 $obj = {qq|te"st| => qq|abc"def|};
     34 $str = $pc->encode($obj);
     35 is($str,q|{"te\"st":"abc\"def"}|);
     36 
     37 $obj = {test => qq|abc/def|};   # / => \/
     38 $str = $pc->encode($obj);         # but since version 0.99
     39 is($str,q|{"test":"abc/def"}|); # this handling is deleted.
     40 $obj = $pc->decode($str);
     41 is($obj->{test},q|abc/def|);
     42 
     43 $obj = {test => q|abc\def|};
     44 $str = $pc->encode($obj);
     45 is($str,q|{"test":"abc\\\\def"}|);
     46 
     47 $obj = {test => "abc\bdef"};
     48 $str = $pc->encode($obj);
     49 is($str,q|{"test":"abc\bdef"}|);
     50 
     51 $obj = {test => "abc\fdef"};
     52 $str = $pc->encode($obj);
     53 is($str,q|{"test":"abc\fdef"}|);
     54 
     55 $obj = {test => "abc\ndef"};
     56 $str = $pc->encode($obj);
     57 is($str,q|{"test":"abc\ndef"}|);
     58 
     59 $obj = {test => "abc\rdef"};
     60 $str = $pc->encode($obj);
     61 is($str,q|{"test":"abc\rdef"}|);
     62 
     63 $obj = {test => "abc-def"};
     64 $str = $pc->encode($obj);
     65 is($str,q|{"test":"abc-def"}|);
     66 
     67 $obj = {test => "abc(def"};
     68 $str = $pc->encode($obj);
     69 is($str,q|{"test":"abc(def"}|);
     70 
     71 $obj = {test => "abc\\def"};
     72 $str = $pc->encode($obj);
     73 is($str,q|{"test":"abc\\\\def"}|);
     74 
     75 
     76 $obj = {test => ""};
     77 $str = $pc->encode($obj);
     78 is($str,q|{"test":""}|);
     79 
     80 $obj = {"" => ""};
     81 $str = $pc->encode($obj);
     82 is($str,q|{"":""}|);
     83 
     84 
     85 $obj = $pc->decode(q|{"id":"abc\ndef"}|);
     86 is($obj->{id},"abc\ndef",q|{"id":"abc\ndef"}|);
     87 
     88 $obj = $pc->decode(q|{"id":"abc\\\ndef"}|);
     89 is($obj->{id},"abc\\ndef",q|{"id":"abc\\\ndef"}|);
     90 
     91 $obj = $pc->decode(q|{"id":"abc\\\\\ndef"}|);
     92 is($obj->{id},"abc\\\ndef",q|{"id":"abc\\\\\ndef"}|);
     93 
     94