1use strict; 2use warnings; 3BEGIN { 4 if ($] < 5.014){ 5 print "1..0 # Skip: Perl 5.14.0 or later required\n"; 6 exit 0; 7 } 8} 9 10use Encode; 11use Test::More tests => 10; 12 13my $valid = "\x61\x00\x00\x00"; 14my $invalid = "\x78\x56\x34\x12"; 15 16my @warnings; 17$SIG{__WARN__} = sub {push @warnings, "@_"}; 18 19my $enc = find_encoding("UTF32-LE"); 20 21{ 22 @warnings = (); 23 my $ret = Encode::Unicode::decode( $enc, $valid ); 24 is("@warnings", "", "Calling decode in Encode::Unicode on valid string produces no warnings"); 25} 26 27 28 29{ 30 @warnings = (); 31 my $ret = Encode::Unicode::decode( $enc, $invalid ); 32 like("@warnings", qr/is not Unicode/, "Calling decode in Encode::Unicode on invalid string warns"); 33} 34 35{ 36 no warnings 'utf8'; 37 @warnings = (); 38 my $ret = Encode::Unicode::decode( $enc, $invalid ); 39 is("@warnings", "", "Warning from decode in Encode::Unicode can be silenced via no warnings 'utf8'"); 40} 41 42{ 43 no warnings; 44 @warnings = (); 45 my $ret = Encode::Unicode::decode( $enc, $invalid ); 46 is("@warnings", "", "Warning from decode in Encode::Unicode can be silenced via no warnings"); 47} 48 49 50 51{ 52 @warnings = (); 53 my $ret = Encode::decode( $enc, $invalid ); 54 like("@warnings", qr/is not Unicode/, "Calling decode in Encode on invalid string warns"); 55} 56 57{ 58 no warnings 'utf8'; 59 @warnings = (); 60 my $ret = Encode::decode( $enc, $invalid ); 61 is("@warnings", "", "Warning from decode in Encode can be silenced via no warnings 'utf8'"); 62}; 63 64{ 65 no warnings; 66 @warnings = (); 67 my $ret = Encode::decode( $enc, $invalid ); 68 is("@warnings", "", "Warning from decode in Encode can be silenced via no warnings"); 69}; 70 71 72 73{ 74 @warnings = (); 75 my $inplace = $invalid; 76 Encode::from_to( $inplace, "UTF32-LE", "UTF-8" ); 77 like("@warnings", qr/is not Unicode/, "Calling from_to in Encode on invalid string warns"); 78} 79 80{ 81 no warnings 'utf8'; 82 @warnings = (); 83 my $inplace = $invalid; 84 Encode::from_to( $inplace, "UTF32-LE", "UTF-8" ); 85 is("@warnings", "", "Warning from from_to in Encode can be silenced via no warnings 'utf8'"); 86}; 87 88{ 89 no warnings; 90 @warnings = (); 91 my $inplace = $invalid; 92 Encode::from_to( $inplace, "UTF32-LE", "UTF-8" ); 93 is("@warnings", "", "Warning from from_to in Encode can be silenced via no warnings"); 94}; 95