This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
dist/Storable/t/utf8.t: Fix to run under EBCDIC
[perl5.git] / dist / Storable / t / utf8.t
1 #!./perl -w
2 #
3 #  Copyright (c) 1995-2000, Raphael Manfredi
4 #  
5 #  You may redistribute only under the same terms as Perl 5, as specified
6 #  in the README file that comes with the distribution.
7 #
8
9 sub BEGIN {
10     if ($] < 5.006) {
11         print "1..0 # Skip: no utf8 support\n";
12         exit 0;
13     }
14     unshift @INC, 't';
15     unshift @INC, 't/compat' if $] < 5.006002;
16     require Config; import Config;
17     if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
18         print "1..0 # Skip: Storable was not built\n";
19         exit 0;
20     }
21 }
22
23 use strict;
24
25 use Storable qw(thaw freeze);
26 use Test::More tests => 6;
27
28 my $x = chr(1234);
29 is($x, ${thaw freeze \$x});
30
31 # Long scalar
32 $x = join '', map {chr $_} (0..1023);
33 is($x, ${thaw freeze \$x});
34
35 # Char in the range 127-255 (probably) in utf8
36 $x = chr(utf8::unicode_to_native(175)) . chr (256);
37 chop $x;
38 is($x, ${thaw freeze \$x});
39
40 # Storable needs to cope if a frozen string happens to be internal utf8
41 # encoded
42
43 $x = chr 256;
44 my $data = freeze \$x;
45 is($x, ${thaw $data});
46
47 $data .= chr 256;
48 chop $data;
49 is($x, ${thaw $data});
50
51
52 $data .= chr 256;
53 # This definitely isn't valid
54 eval {thaw $data};
55 like($@, qr/corrupt.*characters outside/);