another case of enabling binmode() where it should not be: if the
[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);
16use Test::More tests => 15;
17use Encode q(:all);
18
19
20my $original = '';
21my $nofallback = '';
22my ($fallenback, $quiet, $perlqq);
23for my $i (0x20..0x7e){
24 $original .= chr($i);
25}
26$fallenback = $quiet = $perlqq = $nofallback = $original;
27
28my $residue = '';
29for my $i (0x80..0xff){
30 $original .= chr($i);
31 $residue .= chr($i);
32 $fallenback .= '?';
33 $perlqq .= sprintf("\\x{%04x}", $i);
34}
35utf8::upgrade($original);
36my $meth = find_encoding('ascii');
37
38my $src = $original;
39my $dst = $meth->encode($src, FB_DEFAULT);
40is($dst, $fallenback, "FB_DEFAULT");
41is($src, $original, "FB_DEFAULT residue");
42
43$src = $original;
44eval{ $dst = $meth->encode($src, FB_CROAK) };
45like($@, qr/does not map to ascii/o, "FB_CROAK");
46is($src, $original, "FB_CROAK residue");
47
48$src = $original;
49eval{ $dst = $meth->encode($src, FB_CROAK) };
50like($@, qr/does not map to ascii/o, "FB_CROAK");
51is($src, $original, "FB_CROAK residue");
52
53
54$src = $nofallback;
55eval{ $dst = $meth->encode($src, FB_CROAK) };
56is($@, '', "FB_CROAK on success");
57is($src, '', "FB_CROAK on success residue");
58
59$src = $original;
60$dst = $meth->encode($src, FB_QUIET);
61is($dst, $quiet, "FB_QUIET");
62is($src, $residue, "FB_QUIET residue");
63
64{
65 my $message;
66 local $SIG{__WARN__} = sub { $message = $_[0] };
67 $src = $original;
68 $dst = $meth->encode($src, FB_WARN);
69 is($dst, $quiet, "FB_WARN");
70 is($src, $residue, "FB_WARN residue");
71 like($message, qr/does not map to ascii/o, "FB_WARN message");
72}
73
74$src = $original;
75$dst = $meth->encode($src, FB_PERLQQ);
76is($dst, $perlqq, "FB_PERLQQ");
77is($src, '', "FB_PERLQQ residue");