NetWare updates from C Aditya.
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / fallback.t
CommitLineData
85982a32 1BEGIN {
2 if ($ENV{'PERL_CORE'}){
3 chdir 't';
4 unshift @INC, '../lib';
5 }
6 require Config; import Config;
7 if ($Config{'extensions'} !~ /\bEncode\b/) {
8 print "1..0 # Skip: Encode was not built\n";
9 exit 0;
10 }
11 $| = 1;
12}
13
14use strict;
15#use Test::More qw(no_plan);
4089adc4 16use Test::More tests => 22;
85982a32 17use Encode q(:all);
18
85982a32 19my $original = '';
20my $nofallback = '';
af1f55d9 21my ($fallenback, $quiet, $perlqq, $htmlcref, $xmlcref);
85982a32 22for my $i (0x20..0x7e){
23 $original .= chr($i);
24}
af1f55d9 25$fallenback = $quiet =
26$perlqq = $htmlcref = $xmlcref = $nofallback = $original;
85982a32 27
28my $residue = '';
29for my $i (0x80..0xff){
30 $original .= chr($i);
31 $residue .= chr($i);
32 $fallenback .= '?';
33 $perlqq .= sprintf("\\x{%04x}", $i);
af1f55d9 34 $htmlcref .= sprintf("&#%d;", $i);
35 $xmlcref .= sprintf("&#x%x;", $i);
85982a32 36}
37utf8::upgrade($original);
38my $meth = find_encoding('ascii');
39
40my $src = $original;
41my $dst = $meth->encode($src, FB_DEFAULT);
42is($dst, $fallenback, "FB_DEFAULT");
43is($src, $original, "FB_DEFAULT residue");
44
45$src = $original;
46eval{ $dst = $meth->encode($src, FB_CROAK) };
47like($@, qr/does not map to ascii/o, "FB_CROAK");
48is($src, $original, "FB_CROAK residue");
49
50$src = $original;
51eval{ $dst = $meth->encode($src, FB_CROAK) };
52like($@, qr/does not map to ascii/o, "FB_CROAK");
53is($src, $original, "FB_CROAK residue");
54
55
56$src = $nofallback;
57eval{ $dst = $meth->encode($src, FB_CROAK) };
58is($@, '', "FB_CROAK on success");
59is($src, '', "FB_CROAK on success residue");
60
61$src = $original;
62$dst = $meth->encode($src, FB_QUIET);
63is($dst, $quiet, "FB_QUIET");
64is($src, $residue, "FB_QUIET residue");
65
66{
67 my $message;
68 local $SIG{__WARN__} = sub { $message = $_[0] };
69 $src = $original;
70 $dst = $meth->encode($src, FB_WARN);
71 is($dst, $quiet, "FB_WARN");
72 is($src, $residue, "FB_WARN residue");
73 like($message, qr/does not map to ascii/o, "FB_WARN message");
4089adc4 74
75 $message = '';
76
77 $src = $original;
78 $dst = $meth->encode($src, WARN_ON_ERR);
79
80 is($dst, $fallenback, "WARN_ON_ERR");
81 is($src, '', "WARN_ON_ERR residue");
82 like($message, qr/does not map to ascii/o, "WARN_ON_ERR message");
85982a32 83}
84
85$src = $original;
86$dst = $meth->encode($src, FB_PERLQQ);
87is($dst, $perlqq, "FB_PERLQQ");
88is($src, '', "FB_PERLQQ residue");
af1f55d9 89
90$src = $original;
91$dst = $meth->encode($src, FB_HTMLCREF);
92is($dst, $htmlcref, "FB_HTMLCREF");
93is($src, '', "FB_HTMLCREF residue");
94
95$src = $original;
96$dst = $meth->encode($src, FB_XMLCREF);
97is($dst, $xmlcref, "FB_XMLCREF");
98is($src, '', "FB_XMLCREF residue");