Commit | Line | Data |
---|---|---|
0478e945 KW |
1 | #!/usr/bin/perl -w |
2 | ||
3 | # t/rtf_utf8.t - Check that RTF works with UTF-8 input | |
4 | ||
5 | BEGIN { | |
6 | chdir 't' if -d 't'; | |
7 | } | |
8 | ||
9 | my $expected = join "", <DATA>; | |
10 | ||
11 | use strict; | |
1ccbfc07 | 12 | use warnings; |
0478e945 KW |
13 | use lib '../lib'; |
14 | use Test::More; | |
15 | use File::Spec; | |
16 | ||
17 | if ($] < 5.008) { | |
18 | plan skip_all => "Doesn't work before 5.8"; | |
19 | } | |
20 | else { | |
21 | plan tests => 5; | |
22 | } | |
23 | ||
24 | for 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 | |
114 | W\uc1\u346?R\'d3D NOCNEJ CISZY \_\_ explicitly utf8 test document in Polish, | |
115 | p.\chpgn\par} | |
116 | \fs25 | |
117 | ||
118 | ||
119 | ||
120 | {\pard\li0\s31\keepn\sb90\sa180\f2\fs32\ul{ | |
121 | NAME | |
122 | }\par} | |
123 | ||
124 | {\pard\li0\sa180 | |
125 | W\uc1\u346?R\'d3D NOCNEJ CISZY \_\_ explicitly utf8 test document | |
126 | in Polish | |
127 | \par} | |
128 | ||
129 | {\pard\li0\s31\keepn\sb90\sa180\f2\fs32\ul{ | |
130 | DESCRIPTION | |
131 | }\par} | |
132 | ||
133 | {\pard\li0\sa180 | |
134 | This is a test Pod document in UT\'468. Its content is the lyrics | |
135 | to the Polish Christmas carol "W\uc1\u347?r\'f3d nocnej ciszy", except | |
136 | it 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 | |
141 | be negative in RT\'46 \uc1\u-10187\u-8904? is a character in Plane | |
142 | 1, so should be expressed as a surrogate pair in RT\'46 | |
143 | \par} | |
144 | ||
145 | {\pard\li0\sa180 | |
146 | All the ASCII printables !"#$%&\'5c'()*+,\_./0123456789:;<=>?@ ABCDE\'46GHIJKLMNOPQRSTUVWXYZ[{ | |
147 | \cs21\lang1024\noproof \'5c]^\'5f`} abcdefghijklmnopqrstuvwxyz\'7b|\'7d~ | |
148 | \par} | |
149 | ||
150 | {\pard\li0\sa180 | |
151 | W\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 | |
153 | pr\uc1\u281?dzej si\uc1\u281? wybierajcie, / Do Betlejem pospieszajcie | |
154 | / Przywita\uc1\u263? Pana. | |
155 | \par} | |
156 | ||
157 | {\pard\li0\sa180 | |
158 | Poszli, 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? | |
160 | Mu dali, / A witaj\uc1\u261?c zawo\uc1\u322?ali / Z wielkiej rado\uc1\u347?ci: | |
161 | \par} | |
162 | ||
163 | {\pard\li0\sa180 | |
164 | Ach, witaj Zbawco z dawno \uc1\u380?\uc1\u261?dany, / Wiele tysi\uc1\u281?cy | |
165 | lat wygl\uc1\u261?dany / Na Ciebie kr\'f3le, prorocy / Czekali, a | |
166 | Ty\uc1\u347? tej nocy / Nam si\uc1\u281? objawi\uc1\u322?. | |
167 | \par} | |
168 | ||
169 | {\pard\li0\sa180 | |
170 | I my czekamy na Ciebie, Pana, / A skoro przyjdziesz na g\uc1\u322?os | |
171 | kap\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 | |
173 | wina. | |
174 | \par} | |
175 | ||
176 | {\pard\li0\s32\keepn\sb90\sa180\f2\fs28\ul{ | |
177 | As Verbatim | |
178 | }\par} | |
179 | ||
180 | {\pard\li0\sa180 | |
181 | And 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 | } |