Can't test this without PerlIO.
[p5sagit/p5-mst-13.2.git] / t / uni / write.t
1 #!./perl -w
2 use strict;
3
4 BEGIN {
5     chdir 't' if -d 't';
6     @INC = qw(../lib .);
7     require "test.pl";
8     unless (PerlIO::Layer->find('perlio')){
9         print "1..0 # Skip: PerlIO required\n";
10         exit 0;
11     }
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';