1use strict; 2 3use Test::More; 4BEGIN { plan tests => 10 }; 5BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } 6 7 8use strict; 9use JSON::PP; 10 11my $json = JSON::PP->new; 12 13eval q| $json->encode( [ sub {} ] ) |; 14ok( $@ =~ /encountered CODE/, $@ ); 15 16eval q| $json->encode( [ \-1 ] ) |; 17ok( $@ =~ /cannot encode reference to scalar/, $@ ); 18 19eval q| $json->encode( [ \undef ] ) |; 20ok( $@ =~ /cannot encode reference to scalar/, $@ ); 21 22eval q| $json->encode( [ \{} ] ) |; 23ok( $@ =~ /cannot encode reference to scalar/, $@ ); 24 25$json->allow_unknown; 26 27is( $json->encode( [ sub {} ] ), '[null]' ); 28is( $json->encode( [ \-1 ] ), '[null]' ); 29is( $json->encode( [ \undef ] ), '[null]' ); 30is( $json->encode( [ \{} ] ), '[null]' ); 31 32 33SKIP: { 34 35 skip "this test is for Perl 5.8 or later", 2 if( $] < 5.008 ); 36 37$json->allow_unknown(0); 38 39my $fh; 40open( $fh, '>hoge.txt' ) or die $!; 41 42eval q| $json->encode( [ $fh ] ) |; 43ok( $@ =~ /encountered GLOB|cannot encode reference to scalar/, $@ ); 44 45$json->allow_unknown(1); 46 47is( $json->encode( [ $fh ] ), '[null]' ); 48 49close $fh; 50 51unlink('hoge.txt'); 52 53} 54