| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 use Test::More; |  | 
| 2 |  | 
| 3 # copied over from JSON::PC and modified to use JSON |  | 
| 4 # copied over from JSON::XS and modified to use JSON |  | 
| 5 |  | 
| 6 use strict; |  | 
| 7 BEGIN { plan tests => 20 }; |  | 
| 8 |  | 
| 9 BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; } |  | 
| 10 |  | 
| 11 use JSON; |  | 
| 12 |  | 
| 13 my ($js,$obj); |  | 
| 14 |  | 
| 15 my $pc = new JSON; |  | 
| 16 |  | 
| 17 $js  = q|{}|; |  | 
| 18 |  | 
| 19 $obj = $pc->decode($js); |  | 
| 20 $js  = $pc->encode($obj); |  | 
| 21 is($js,'{}', '{}'); |  | 
| 22 |  | 
| 23 $js  = q|[]|; |  | 
| 24 $obj = $pc->decode($js); |  | 
| 25 $js  = $pc->encode($obj); |  | 
| 26 is($js,'[]', '[]'); |  | 
| 27 |  | 
| 28 |  | 
| 29 $js  = q|{"foo":"bar"}|; |  | 
| 30 $obj = $pc->decode($js); |  | 
| 31 is($obj->{foo},'bar'); |  | 
| 32 $js  = $pc->encode($obj); |  | 
| 33 is($js,'{"foo":"bar"}', '{"foo":"bar"}'); |  | 
| 34 |  | 
| 35 $js  = q|{"foo":""}|; |  | 
| 36 $obj = $pc->decode($js); |  | 
| 37 $js  = $pc->encode($obj); |  | 
| 38 is($js,'{"foo":""}', '{"foo":""}'); |  | 
| 39 |  | 
| 40 $js  = q|{"foo":" "}|; |  | 
| 41 $obj = $pc->decode($js); |  | 
| 42 $js  = $pc->encode($obj); |  | 
| 43 is($js,'{"foo":" "}' ,'{"foo":" "}'); |  | 
| 44 |  | 
| 45 $js  = q|{"foo":"0"}|; |  | 
| 46 $obj = $pc->decode($js); |  | 
| 47 $js  = $pc->encode($obj); |  | 
| 48 is($js,'{"foo":"0"}',q|{"foo":"0"} - autoencode (default)|); |  | 
| 49 |  | 
| 50 |  | 
| 51 $js  = q|{"foo":"0 0"}|; |  | 
| 52 $obj = $pc->decode($js); |  | 
| 53 $js  = $pc->encode($obj); |  | 
| 54 is($js,'{"foo":"0 0"}','{"foo":"0 0"}'); |  | 
| 55 |  | 
| 56 $js  = q|[1,2,3]|; |  | 
| 57 $obj = $pc->decode($js); |  | 
| 58 is($obj->[1],2); |  | 
| 59 $js  = $pc->encode($obj); |  | 
| 60 is($js,'[1,2,3]'); |  | 
| 61 |  | 
| 62 $js = q|{"foo":{"bar":"hoge"}}|; |  | 
| 63 $obj = $pc->decode($js); |  | 
| 64 is($obj->{foo}->{bar},'hoge'); |  | 
| 65 $js  = $pc->encode($obj); |  | 
| 66 is($js,q|{"foo":{"bar":"hoge"}}|); |  | 
| 67 |  | 
| 68 $js = q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|; |  | 
| 69 $obj = $pc->decode($js); |  | 
| 70 $js  = $pc->encode($obj); |  | 
| 71 is($js,q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|); |  | 
| 72 |  | 
| 73 |  | 
| 74 $obj = ["\x01"]; |  | 
| 75 is($js = $pc->encode($obj),'["\\u0001"]'); |  | 
| 76 $obj = $pc->decode($js); |  | 
| 77 is($obj->[0],"\x01"); |  | 
| 78 |  | 
| 79 $obj = ["\e"]; |  | 
| 80 is($js = $pc->encode($obj),'["\\u001b"]'); |  | 
| 81 $obj = $pc->decode($js); |  | 
| 82 is($obj->[0],"\e"); |  | 
| 83 |  | 
| 84 $js = '{"id":"}'; |  | 
| 85 eval q{ $pc->decode($js) }; |  | 
| 86 like($@, qr/unexpected end/i); |  | 
| 87 |  | 
| 88 $obj = { foo => sub { "bar" } }; |  | 
| 89 eval q{ $js = $pc->encode($obj) }; |  | 
| 90 like($@, qr/JSON can only/i, 'invalid value (coderef)'); |  | 
| 91 |  | 
| 92 #$obj = { foo => bless {}, "Hoge" }; |  | 
| 93 #eval q{ $js = $pc->encode($obj) }; |  | 
| 94 #like($@, qr/JSON can only/i, 'invalid value (blessd object)'); |  | 
| 95 |  | 
| 96 $obj = { foo => \$js }; |  | 
| 97 eval q{ $js = $pc->encode($obj) }; |  | 
| 98 like($@, qr/cannot encode reference/i, 'invalid value (ref)'); |  | 
| 99 |  | 
| OLD | NEW | 
|---|