2 if ($ENV{'PERL_CORE'}){
4 unshift @INC, '../lib';
6 require Config; import Config;
7 if ($Config{'extensions'} !~ /\bEncode\b/) {
8 print "1..0 # Skip: Encode was not built\n";
15 #use Test::More qw(no_plan);
16 use Test::More tests => 19;
22 my ($fallenback, $quiet, $perlqq, $htmlcref, $xmlcref);
23 for my $i (0x20..0x7e){
26 $fallenback = $quiet =
27 $perlqq = $htmlcref = $xmlcref = $nofallback = $original;
30 for my $i (0x80..0xff){
34 $perlqq .= sprintf("\\x{%04x}", $i);
35 $htmlcref .= sprintf("&#%d;", $i);
36 $xmlcref .= sprintf("&#x%x;", $i);
38 utf8::upgrade($original);
39 my $meth = find_encoding('ascii');
42 my $dst = $meth->encode($src, FB_DEFAULT);
43 is($dst, $fallenback, "FB_DEFAULT");
44 is($src, $original, "FB_DEFAULT residue");
47 eval{ $dst = $meth->encode($src, FB_CROAK) };
48 like($@, qr/does not map to ascii/o, "FB_CROAK");
49 is($src, $original, "FB_CROAK residue");
52 eval{ $dst = $meth->encode($src, FB_CROAK) };
53 like($@, qr/does not map to ascii/o, "FB_CROAK");
54 is($src, $original, "FB_CROAK residue");
58 eval{ $dst = $meth->encode($src, FB_CROAK) };
59 is($@, '', "FB_CROAK on success");
60 is($src, '', "FB_CROAK on success residue");
63 $dst = $meth->encode($src, FB_QUIET);
64 is($dst, $quiet, "FB_QUIET");
65 is($src, $residue, "FB_QUIET residue");
69 local $SIG{__WARN__} = sub { $message = $_[0] };
71 $dst = $meth->encode($src, FB_WARN);
72 is($dst, $quiet, "FB_WARN");
73 is($src, $residue, "FB_WARN residue");
74 like($message, qr/does not map to ascii/o, "FB_WARN message");
78 $dst = $meth->encode($src, FB_PERLQQ);
79 is($dst, $perlqq, "FB_PERLQQ");
80 is($src, '', "FB_PERLQQ residue");
83 $dst = $meth->encode($src, FB_HTMLCREF);
84 is($dst, $htmlcref, "FB_HTMLCREF");
85 is($src, '', "FB_HTMLCREF residue");
88 $dst = $meth->encode($src, FB_XMLCREF);
89 is($dst, $xmlcref, "FB_XMLCREF");
90 is($src, '', "FB_XMLCREF residue");