This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Pod-Simple from version 3.40 to 3.41
[perl5.git] / cpan / Pod-Simple / t / rtf_utf8.t
CommitLineData
0478e945
KW
1#!/usr/bin/perl -w
2
3# t/rtf_utf8.t - Check that RTF works with UTF-8 input
4
5BEGIN {
6 chdir 't' if -d 't';
7}
8
9my $expected = join "", <DATA>;
10
11use strict;
1ccbfc07 12use warnings;
0478e945
KW
13use lib '../lib';
14use Test::More;
15use File::Spec;
16
17if ($] < 5.008) {
18 plan skip_all => "Doesn't work before 5.8";
19}
20else {
21 plan tests => 5;
22}
23
24for my $format (qw(RTF)) {
25 my $class = "Pod::Simple::RTF";
26 use_ok $class or next;
27 ok my $parser = $class->new, "Construct RTF parser";
28
29 my $output = '';
30 ok $parser->output_string(\$output), "Set RTF output string";
31 ok $parser->parse_file(File::Spec->catfile(qw(corpus polish_utf8.txt))),
32 "Parse to RTF via parse_file()";
33 $output =~ s/\\info.*?author \[see doc\]\}/VARIANT TEXT DELETED/s;
34 $output =~ s/$/\n/;
35
36 my $msg = "got expected output";
37 if ($output eq $expected) {
38 pass($msg);
39 }
40 elsif ($ENV{PERL_TEST_DIFF}) {
41 fail($msg);
42 require File::Temp;
43 my $orig_file = File::Temp->new();
44 local $/ = "\n";
45 chomp $expected;
46 print $orig_file $expected, "\n";
47 close $orig_file || die "Can't close orig_file: $!";
48
49 chomp $output;
50 my $parsed_file = File::Temp->new();
51 print $parsed_file $output, "\n";
52 close $parsed_file || die "Can't close parsed_file";
53
54 my $diff = File::Temp->new();
55 system("$ENV{PERL_TEST_DIFF} $orig_file $parsed_file > $diff");
56
57 open my $fh, "<", $diff || die "Can't open $diff";
58 my @diffs = <$fh>;
59 diag(@diffs);
60 }
61 else {
62 eval { require Text::Diff; };
63 if ($@) {
64 is($output, $expected, $msg);
65 diag("Set environment variable PERL_TEST_DIFF=diff_tool or install"
66 . " Text::Diff to see just the differences.");
67 }
68 else {
69 fail($msg);
70 diag Text::Diff::diff(\$expected, \$output, { STYLE => 'Unified' });
71 }
72 }
73}
74
75__DATA__
76{\rtf1\ansi\deff0
77
78{\fonttbl
79{\f0\froman Times New Roman;}
80{\f1\fmodern Courier New;}
81{\f2\fswiss Arial;}
82}
83
84{\stylesheet
85{\snext0 Normal;}
86{\*\cs10 \additive Default Paragraph Font;}
87{\*\cs16 \additive \i \sbasedon10 pod-I;}
88{\*\cs17 \additive \i\lang1024\noproof \sbasedon10 pod-F;}
89{\*\cs18 \additive \b \sbasedon10 pod-B;}
90{\*\cs19 \additive \f1\lang1024\noproof\sbasedon10 pod-C;}
91{\s20\ql \li0\ri0\sa180\widctlpar\f1\fs18\lang1024\noproof\sbasedon0 \snext0 pod-codeblock;}
92{\*\cs21 \additive \lang1024\noproof \sbasedon10 pod-computerese;}
93{\*\cs22 \additive \i\lang1024\noproof\sbasedon10 pod-L-pod;}
94{\*\cs23 \additive \i\lang1024\noproof\sbasedon10 pod-L-url;}
95{\*\cs24 \additive \i\lang1024\noproof\sbasedon10 pod-L-man;}
96
97{\*\cs25 \additive \f1\lang1024\noproof\sbasedon0 pod-codelbock-plain;}
98{\*\cs26 \additive \f1\lang1024\noproof\sbasedon25 pod-codelbock-ital;}
99{\*\cs27 \additive \f1\lang1024\noproof\sbasedon25 pod-codelbock-bold;}
100{\*\cs28 \additive \f1\lang1024\noproof\sbasedon25 pod-codelbock-bold-ital;}
101
102{\s31\ql \keepn\sb90\sa180\f2\fs32\ul\sbasedon0 \snext0 pod-head1;}
103{\s32\ql \keepn\sb90\sa180\f2\fs28\ul\sbasedon0 \snext0 pod-head2;}
104{\s33\ql \keepn\sb90\sa180\f2\fs25\ul\sbasedon0 \snext0 pod-head3;}
105{\s34\ql \keepn\sb90\sa180\f2\fs22\ul\sbasedon0 \snext0 pod-head4;}
106}
107
108{\colortbl;\red255\green0\blue0;\red0\green0\blue255;}
109{VARIANT TEXT DELETED{\company [see doc]}{\operator [see doc]}
110}
111
112\deflang1033\plain\lang1033\widowctrl
113{\header\pard\qr\plain\f2\fs17
114W\uc1\u346?R\'d3D NOCNEJ CISZY \_\_ explicitly utf8 test document in Polish,
115p.\chpgn\par}
116\fs25
117
118
119
120{\pard\li0\s31\keepn\sb90\sa180\f2\fs32\ul{
121NAME
122}\par}
123
124{\pard\li0\sa180
125W\uc1\u346?R\'d3D NOCNEJ CISZY \_\_ explicitly utf8 test document
126in Polish
127\par}
128
129{\pard\li0\s31\keepn\sb90\sa180\f2\fs32\ul{
130DESCRIPTION
131}\par}
132
133{\pard\li0\sa180
134This is a test Pod document in UT\'468. Its content is the lyrics
135to the Polish Christmas carol "W\uc1\u347?r\'f3d nocnej ciszy", except
136it includes a few lines to test RT\'46 specially.
137\par}
138
139{\pard\li0\sa180
140\uc1\u-1280? is a character in the upper half of Plane 0, so should
141be negative in RT\'46 \uc1\u-10187\u-8904? is a character in Plane
1421, so should be expressed as a surrogate pair in RT\'46
143\par}
144
145{\pard\li0\sa180
146All the ASCII printables !"#$%&\'5c'()*+,\_./0123456789:;<=>?@ ABCDE\'46GHIJKLMNOPQRSTUVWXYZ[{
147\cs21\lang1024\noproof \'5c]^\'5f`} abcdefghijklmnopqrstuvwxyz\'7b|\'7d~
148\par}
149
150{\pard\li0\sa180
151W\uc1\u347?r\'f3d nocnej ciszy g\uc1\u322?os si\uc1\u281? rozchodzi:
152/ Wsta\uc1\u324?cie, pasterze, B\'f3g si\uc1\u281? nam rodzi! / Czym
153pr\uc1\u281?dzej si\uc1\u281? wybierajcie, / Do Betlejem pospieszajcie
154/ Przywita\uc1\u263? Pana.
155\par}
156
157{\pard\li0\sa180
158Poszli, znale\uc1\u378?li Dzieci\uc1\u261?tko w \uc1\u380?\uc1\u322?obie
159/ Z wszystkimi znaki danymi sobie. / Jako Bogu cze\uc1\u347?\uc1\u263?
160Mu dali, / A witaj\uc1\u261?c zawo\uc1\u322?ali / Z wielkiej rado\uc1\u347?ci:
161\par}
162
163{\pard\li0\sa180
164Ach, witaj Zbawco z dawno \uc1\u380?\uc1\u261?dany, / Wiele tysi\uc1\u281?cy
165lat wygl\uc1\u261?dany / Na Ciebie kr\'f3le, prorocy / Czekali, a
166Ty\uc1\u347? tej nocy / Nam si\uc1\u281? objawi\uc1\u322?.
167\par}
168
169{\pard\li0\sa180
170I my czekamy na Ciebie, Pana, / A skoro przyjdziesz na g\uc1\u322?os
171kap\uc1\u322?ana, / Padniemy na twarz przed Tob\uc1\u261?, / Wierz\uc1\u261?c,
172\uc1\u380?e\uc1\u347? jest pod os\uc1\u322?on\uc1\u261? / Chleba i
173wina.
174\par}
175
176{\pard\li0\s32\keepn\sb90\sa180\f2\fs28\ul{
177As Verbatim
178}\par}
179
180{\pard\li0\sa180
181And now as verbatim text:
182\par}
183
184{\pard\li0\plain\s20\sa180\f1\fs18\lang1024\noproof
185 \uc1\u-1280? upper half, Plane 0\line
186 \uc1\u-10187\u-8904? Plane 1\line
187\line
188 All the ASCII printables\line
189 !"#$%&\'5c'()*+,-./0123456789:;<=>?@\line
190 ABCDE\'46GHIJKLMNOPQRSTUVWXYZ[\'5c]^\'5f`\line
191 abcdefghijklmnopqrstuvwxyz\'7b|\'7d~\line
192\line
193 W\uc1\u347?r\'f3d nocnej ciszy g\uc1\u322?os si\uc1\u281? rozchodzi:\line
194 Wsta\uc1\u324?cie, pasterze, B\'f3g si\uc1\u281? nam rodzi!\line
195 Czym pr\uc1\u281?dzej si\uc1\u281? wybierajcie,\line
196 Do Betlejem pospieszajcie\line
197 Przywita\uc1\u263? Pana.\line
198\line
199 Poszli, znale\uc1\u378?li Dzieci\uc1\u261?tko w \uc1\u380?\uc1\u322?obie\line
200 Z wszystkimi znaki danymi sobie.\line
201 Jako Bogu cze\uc1\u347?\uc1\u263? Mu dali,\line
202 A witaj\uc1\u261?c zawo\uc1\u322?ali\line
203 Z wielkiej rado\uc1\u347?ci:\line
204\line
205 Ach, witaj Zbawco z dawno \uc1\u380?\uc1\u261?dany,\line
206 Wiele tysi\uc1\u281?cy lat wygl\uc1\u261?dany\line
207 Na Ciebie kr\'f3le, prorocy\line
208 Czekali, a Ty\uc1\u347? tej nocy\line
209 Nam si\uc1\u281? objawi\uc1\u322?.\line
210\line
211 I my czekamy na Ciebie, Pana,\line
212 A skoro przyjdziesz na g\uc1\u322?os kap\uc1\u322?ana,\line
213 Padniemy na twarz przed Tob\uc1\u261?,\line
214 Wierz\uc1\u261?c, \uc1\u380?e\uc1\u347? jest pod os\uc1\u322?on\uc1\u261?\line
215 Chleba i wina.
216\par}
217
218{\pard\li0\sa180
219[end]
220\par}
221}