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