xref: /openbsd-src/gnu/usr.bin/perl/cpan/Encode/t/utf8warnings.t (revision 9f11ffb7133c203312a01e4b986886bc88c7d74b)
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