1# copied over from JSON::XS and modified to use JSON::PP 2 3# copied over from JSON::DWIW and modified to use JSON::PP 4 5# Creation date: 2007-02-20 19:51:06 6# Authors: don 7 8use strict; 9use warnings; 10use Test; 11 12# main 13{ 14 BEGIN { plan tests => 5 } 15 16 BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } 17 18use JSON::PP; 19 20 my $data; 21 22 # my $expected_str = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var3":"val3"}'; 23 24 my $expected_str1 = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}]}'; 25 my $expected_str2 = '{"var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var1":"val1"}'; 26 my $expected_str3 = '{"var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}],"var1":"val1"}'; 27 my $expected_str4 = '{"var1":"val1","var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}]}'; 28 29 my $json_obj = JSON::PP->new->allow_nonref (1); 30 my $json_str; 31 # print STDERR "\n" . $json_str . "\n\n"; 32 33 my $expected_str; 34 35 $data = 'stuff'; 36 $json_str = $json_obj->encode($data); 37 ok($json_str eq '"stuff"'); 38 39 $data = "stu\nff"; 40 $json_str = $json_obj->encode($data); 41 ok($json_str eq '"stu\nff"'); 42 43 $data = [ 1, 2, 3 ]; 44 $expected_str = '[1,2,3]'; 45 $json_str = $json_obj->encode($data); 46 47 ok($json_str eq $expected_str); 48 49 $data = { var1 => 'val1', var2 => 'val2' }; 50 $json_str = $json_obj->encode($data); 51 52 ok($json_str eq '{"var1":"val1","var2":"val2"}' 53 or $json_str eq '{"var2":"val2","var1":"val1"}'); 54 55 $data = { var1 => 'val1', 56 var2 => [ 'first_element', 57 { sub_element => 'sub_val', sub_element2 => 'sub_val2' }, 58 ], 59 # var3 => 'val3', 60 }; 61 62 $json_str = $json_obj->encode($data); 63 64 ok($json_str eq $expected_str1 or $json_str eq $expected_str2 65 or $json_str eq $expected_str3 or $json_str eq $expected_str4); 66} 67 68exit 0; 69 70############################################################################### 71# Subroutines 72 73