Commit | Line | Data |
78da4d13 |
1 | #!./perl -w |
2 | use strict; |
3 | |
4 | BEGIN { |
5 | chdir 't' if -d 't'; |
6 | @INC = qw(../lib .); |
7 | require "test.pl"; |
3995db9d |
8 | unless (PerlIO::Layer->find('perlio')){ |
9 | print "1..0 # Skip: PerlIO required\n"; |
10 | exit 0; |
11 | } |
78da4d13 |
12 | } |
13 | |
14 | plan tests => 6; |
15 | |
16 | # Some tests for UTF8 and format/write |
17 | |
18 | our ($bitem1, $uitem1) = ("\x{ff}", "\x{100}"); |
19 | our ($bitem2, $uitem2) = ("\x{fe}", "\x{101}"); |
20 | our ($blite1, $ulite1) = ("\x{fd}", "\x{102}"); |
21 | our ($blite2, $ulite2) = ("\x{fc}", "\x{103}"); |
22 | our ($bmulti, $umulti) = ("\x{fb}\n\x{fa}\n\x{f9}\n", |
23 | "\x{104}\n\x{105}\n\x{106}\n"); |
24 | |
25 | sub fmwrtest { |
26 | no strict 'refs'; |
27 | my ($out, $format, $expect, $name) = @_; |
28 | eval "format $out =\n$format.\n"; die $@ if $@; |
29 | open $out, '>:utf8', 'Uni_write.tmp' or die "Can't create Uni_write.tmp"; |
30 | write $out; |
31 | close $out or die "Could not close $out: $!"; |
32 | |
33 | open UIN, '<:utf8', 'Uni_write.tmp' or die "Can't open Uni_write.tmp";; |
34 | my $result = do { local $/; <UIN>; }; |
35 | close UIN; |
36 | |
37 | is($result, $expect, $name); |
38 | } |
39 | |
40 | fmwrtest OUT1 => <<EOFORMAT, <<EOEXPECT, "non-UTF8 literal / UTF8 item (1)"; |
41 | $blite1 @<< |
42 | \$uitem1 |
43 | $blite2 @<< |
44 | \$bitem2 |
45 | EOFORMAT |
46 | $blite1 $uitem1 |
47 | $blite2 $bitem2 |
48 | EOEXPECT |
49 | |
50 | fmwrtest OUT2 => <<EOFORMAT, <<EOEXPECT, "non-UTF8 literal / UTF8 item (2)"; |
51 | $blite1 @<< |
52 | \$bitem1 |
53 | $blite2 @<< |
54 | \$uitem2 |
55 | EOFORMAT |
56 | $blite1 $bitem1 |
57 | $blite2 $uitem2 |
58 | EOEXPECT |
59 | |
60 | fmwrtest OUT3 => <<EOFORMAT, <<EOEXPECT, "UTF8 literal / non-UTF8 item (1)"; |
61 | $ulite1 @<< |
62 | \$bitem1 |
63 | $blite2 @<< |
64 | \$bitem2 |
65 | EOFORMAT |
66 | $ulite1 $bitem1 |
67 | $blite2 $bitem2 |
68 | EOEXPECT |
69 | |
70 | fmwrtest OUT4 => <<EOFORMAT, <<EOEXPECT, "UTF8 literal / non-UTF8 item (2)"; |
71 | $blite1 @<< |
72 | \$bitem1 |
73 | $ulite2 @<< |
74 | \$bitem2 |
75 | EOFORMAT |
76 | $blite1 $bitem1 |
77 | $ulite2 $bitem2 |
78 | EOEXPECT |
79 | |
80 | fmwrtest OUT5 => <<EOFORMAT, <<EOEXPECT, "non-UTF8 literal / UTF8 multiline"; |
81 | $blite1 |
82 | @* |
83 | \$umulti |
84 | $blite2 |
85 | EOFORMAT |
86 | $blite1 |
87 | $umulti$blite2 |
88 | EOEXPECT |
89 | |
90 | fmwrtest OUT6 => <<EOFORMAT, <<EOEXPECT, "UTF8 literal / non-UTF8 multiline"; |
91 | $ulite1 |
92 | @* |
93 | \$bmulti |
94 | $blite2 |
95 | EOFORMAT |
96 | $ulite1 |
97 | $bmulti$blite2 |
98 | EOEXPECT |
99 | |
100 | unlink 'Uni_write.tmp'; |