xref: /openbsd/gnu/usr.bin/perl/cpan/Pod-Simple/t/begin.t (revision 5486feef)
1use strict;
2use warnings;
3use Test::More tests => 60;
4
5my $d;
6#use Pod::Simple::Debug (\$d, 0);
7
8use Pod::Simple::DumpAsXML;
9use Pod::Simple::XMLOutStream;
10print "# Pod::Simple version $Pod::Simple::VERSION\n";
11
12BEGIN {
13  require FindBin;
14  unshift @INC, $FindBin::Bin . '/lib';
15}
16use helpers;
17
18my $x = 'Pod::Simple::XMLOutStream';
19$Pod::Simple::XMLOutStream::ATTR_PAD   = ' ';
20$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
21
22
23sub moj {$_[0]->accept_target('mojojojo')}
24sub mojtext {$_[0]->accept_target_as_text('mojojojo')}
25sub any {$_[0]->accept_target_as_text('*')}
26
27#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28print "# Testing non-matching complaint...\n";
29{
30
31my $out;
32like( ($out = $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\nStuff\n\n=end blorp\n\nYup.\n")),
33  qr/POD ERRORS/
34) or print "# Didn't contain POD ERRORS:\n#  $out\n";
35
36like( ($out = $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :mojojojo\n\nStuff\n\n=end :blorp\n\nYup.\n")),
37  qr/POD ERRORS/
38) or print "# Didn't contain POD ERRORS:\n#  $out\n";
39like( ($out = $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :mojojojo\n\n=begin :zaz\n\nStuff\n\n=end :blorp\n\nYup.\n")),
40  qr/POD ERRORS/
41) or print "# Didn't contain POD ERRORS:\n#  $out\n";
42
43}
44
45#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46
47
48print "# Testing some trivial cases of non-acceptance...\n";
49
50is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\nStuff\n\n=end mojojojo\n\nYup.\n"),
51  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
52);
53is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\n\nStuff\n\n=end mojojojo\n\nYup.\n"),
54  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
55);
56is( $x->_out( "=pod\n\nI like pie.\n\n=begin :mojojojo\n\n\nStuff\n\n=end :mojojojo\n\nYup.\n"),
57  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
58);
59
60is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\n  Stuff\n\n=end mojojojo\n\nYup.\n"),
61  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
62);
63is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\n\n   Stuff\n\n=end mojojojo\n\nYup.\n"),
64  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
65);
66is( $x->_out( "=pod\n\nI like pie.\n\n=begin :mojojojo\n\n\n   Stuff\n\n=end :mojojojo\n\nYup.\n"),
67  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
68);
69
70is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<Stuff>\n\n=end mojojojo\n\nYup.\n"),
71  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
72);
73is( $x->_out( "=pod\n\nI like pie.\n\n=begin mojojojo\n\n\nI<Stuff>\n\n=end mojojojo\n\nYup.\n"),
74  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
75);
76is( $x->_out( "=pod\n\nI like pie.\n\n=begin :mojojojo\n\n\nI<Stuff>\n\n=end :mojojojo\n\nYup.\n"),
77  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
78);
79
80
81
82is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nStuff\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
83  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
84);
85is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\n\nStuff\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
86  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
87);
88is( $x->_out( "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\n\nStuff\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
89  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
90);
91
92is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\n  Stuff\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
93  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
94);
95is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\n\n   Stuff\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
96  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
97);
98is( $x->_out( "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\n\n   Stuff\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
99  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
100);
101
102is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<Stuff>\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
103  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
104);
105is( $x->_out( "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\n\nI<Stuff>\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
106  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
107);
108is( $x->_out( "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\n\nI<Stuff>\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
109  '<Document><Para>I like pie.</Para><Para>Yup.</Para></Document>'
110);
111
112#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113
114print "# Testing matching because of negated non-acceptance...\n";
115#$d = 5;
116is( $x->_out( "=pod\n\nI like pie.\n\n=begin !crunk\n\nstuff\n\n=end !crunk\n\nYup.\n"),
117  '<Document><Para>I like pie.</Para><for target="!crunk" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
118);
119is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin !crunk\n\nstuff\n\n=end !crunk\n\nYup.\n"),
120  '<Document><Para>I like pie.</Para><for target="!crunk" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
121);
122is( $x->_out( "=pod\n\nI like pie.\n\n=begin !mojojojo\n\nstuff\n\n=end !mojojojo\n\nYup.\n"),
123  '<Document><Para>I like pie.</Para><for target="!mojojojo" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
124);
125is( $x->_out( "=pod\n\nI like pie.\n\n=begin !mojojojo\n\nI<stuff>\n\n=end !mojojojo\n\nYup.\n"),
126  '<Document><Para>I like pie.</Para><for target="!mojojojo" target_matching="!"><Data xml:space="preserve">I&#60;stuff&#62;</Data></for><Para>Yup.</Para></Document>'
127);
128is( $x->_out( "=pod\n\nI like pie.\n\n=begin !:mojojojo\n\nI<stuff>\n\n=end !:mojojojo\n\nYup.\n"),
129  '<Document><Para>I like pie.</Para><for target="!:mojojojo" target_matching="!"><Para><I>stuff</I></Para></for><Para>Yup.</Para></Document>'
130);
131is( $x->_out( "=pod\n\nI like pie.\n\n=begin    :!mojojojo  \n\nI<stuff>\n\n=end  :!mojojojo \t \n\nYup.\n"),
132  '<Document><Para>I like pie.</Para><for target=":!mojojojo" target_matching="!"><Para><I>stuff</I></Para></for><Para>Yup.</Para></Document>'
133);
134
135is( $x->_out( "=pod\n\nI like pie.\n\n=begin !crunk,zaz\n\nstuff\n\n=end !crunk,zaz\n\nYup.\n"),
136  '<Document><Para>I like pie.</Para><for target="!crunk,zaz" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
137);
138is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin !crunk\n\nstuff\n\n=end !crunk\n\nYup.\n"),
139  '<Document><Para>I like pie.</Para><for target="!crunk" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
140);
141is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin !crunk\n\nstuff\n\n=end !crunk\n\nYup.\n"),
142  '<Document><Para>I like pie.</Para><for target="!crunk" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
143);
144is( $x->_out( \&any, "=pod\n\nI like pie.\n\n=begin !crunk\n\nstuff\n\n=end !crunk\n\nYup.\n"),
145  '<Document><Para>I like pie.</Para><for target="!crunk" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
146);
147
148is( $x->_out( "=pod\n\nI like pie.\n\n=begin !mojojojo\n\nstuff\n\n=end !mojojojo\n\nYup.\n"),
149  '<Document><Para>I like pie.</Para><for target="!mojojojo" target_matching="!"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
150);
151is( $x->_out( "=pod\n\nI like pie.\n\n=begin !mojojojo\n\nI<stuff>\n\n\n=end !mojojojo\n\nYup.\n"),
152  '<Document><Para>I like pie.</Para><for target="!mojojojo" target_matching="!"><Data xml:space="preserve">I&#60;stuff&#62;</Data></for><Para>Yup.</Para></Document>'
153);
154
155is( $x->_out( "=pod\n\nI like pie.\n\n=begin !psketti,mojojojo,crunk\n\n\nI<stuff>\n\n=end !psketti,mojojojo,crunk\n\nYup.\n"),
156  '<Document><Para>I like pie.</Para><for target="!psketti,mojojojo,crunk" target_matching="!"><Data xml:space="preserve">I&#60;stuff&#62;</Data></for><Para>Yup.</Para></Document>'
157);
158is( $x->_out( "=pod\n\nI like pie.\n\n=begin !:psketti,mojojojo,crunk\n\nI<stuff>\n\n=end !:psketti,mojojojo,crunk\n\nYup.\n"),
159  '<Document><Para>I like pie.</Para><for target="!:psketti,mojojojo,crunk" target_matching="!"><Para><I>stuff</I></Para></for><Para>Yup.</Para></Document>'
160);
161
162#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163
164print "# Testing accept_target + simple ...\n";
165is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\n\n=end mojojojo \n\nYup.\n"),
166  '<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data></for><Para>Yup.</Para></Document>'
167);
168is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\n=end psketti,mojojojo,crunk \n\nYup.\n"),
169  '<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data></for><Para>Yup.</Para></Document>'
170);
171
172print "# Testing accept_target_as_text + simple ...\n";
173is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\n\n=end  mojojojo \n\nYup.\n"),
174  '<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Para><I>stuff</I></Para></for><Para>Yup.</Para></Document>'
175);
176is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\n=end  psketti,mojojojo,crunk \n\nYup.\n"),
177  '<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Para><I>stuff</I></Para></for><Para>Yup.</Para></Document>'
178);
179
180print "# Testing accept_target + two simples ...\n";
181#$d = 10;
182is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\n\nHm, B<things>!\n\n=end mojojojo\n\n\nYup.\n"),
183  '<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">Hm, B&#60;things&#62;!</Data></for><Para>Yup.</Para></Document>'
184);
185
186is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\nHm, B<things>!\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
187  '<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">Hm, B&#60;things&#62;!</Data></for><Para>Yup.</Para></Document>'
188);
189
190is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :mojojojo\n\nI<stuff>\n\nHm, B<things>!\n\n=end :mojojojo\n\nYup.\n"),
191  '<Document><Para>I like pie.</Para><for target=":mojojojo" target_matching="mojojojo"><Para><I>stuff</I></Para><Para>Hm, <B>things</B>!</Para></for><Para>Yup.</Para></Document>'
192);
193is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\nI<stuff>\n\nHm, B<things>!\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
194  '<Document><Para>I like pie.</Para><for target=":psketti,mojojojo,crunk" target_matching="mojojojo"><Para><I>stuff</I></Para><Para>Hm, <B>things</B>!</Para></for><Para>Yup.</Para></Document>'
195);
196
197print "# Testing accept_target_as_text + two simples ...\n";
198
199is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\nHm, B<things>!\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
200  '<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Para><I>stuff</I></Para><Para>Hm, <B>things</B>!</Para></for><Para>Yup.</Para></Document>'
201);
202is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\nI<stuff>\n\nHm, B<things>!\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
203  '<Document><Para>I like pie.</Para><for target=":psketti,mojojojo,crunk" target_matching="mojojojo"><Para><I>stuff</I></Para><Para>Hm, <B>things</B>!</Para></for><Para>Yup.</Para></Document>'
204);
205
206
207
208print "# Testing accept_target + two simples, latter with leading whitespace ...\n";
209#$d = 10;
210
211is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\n\n   Hm, B<things>!\nTrala.\n\n=end mojojojo\n\n\nYup.\n"),
212  qq{<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n</Data></for><Para>Yup.</Para></Document>}
213);
214is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\n   Hm, B<things>!\nTrala.\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
215  qq{<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n</Data></for><Para>Yup.</Para></Document>}
216);
217
218is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\n\n   Hm, B<things>!\nTrala.\n\n\n=end mojojojo\n\n\nYup.\n"),
219  qq{<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n</Data></for><Para>Yup.</Para></Document>}
220);
221is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk\n\nI<stuff>\n\n   Hm, B<things>!\nTrala.\n\n\n=end psketti,mojojojo,crunk\n\nYup.\n"),
222  qq{<Document><Para>I like pie.</Para><for target="psketti,mojojojo,crunk" target_matching="mojojojo"><Data xml:space="preserve">I&#60;stuff&#62;</Data><Data xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n</Data></for><Para>Yup.</Para></Document>}
223);
224
225
226print "# Testing :-target and accept_target + two simples, latter with leading whitespace ...\n";
227
228is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :mojojojo\n\nI<stuff>\nTrala!\n\n   Hm, B<things>!\nTrala.\n\n=end :mojojojo\n\nYup.\n"),
229  qq{<Document><Para>I like pie.</Para><for target=":mojojojo" target_matching="mojojojo"><Para><I>stuff</I> Trala!</Para><Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.</Verbatim></for><Para>Yup.</Para></Document>}
230);
231is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin :psketti,mojojojo,crunk\n\nI<stuff>\nTrala!\n\n   Hm, B<things>!\nTrala.\n\n=end :psketti,mojojojo,crunk\n\nYup.\n"),
232  qq{<Document><Para>I like pie.</Para><for target=":psketti,mojojojo,crunk" target_matching="mojojojo"><Para><I>stuff</I> Trala!</Para><Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.</Verbatim></for><Para>Yup.</Para></Document>}
233);
234
235print "#   now with accept_target_as_text\n";
236is( $x->_out( \&mojtext, "=pod\n\nI like pie.\n\n=begin mojojojo\n\nI<stuff>\nTrala!\n\n   Hm, B<things>!\nTrala.\n\n=end mojojojo\n\nYup.\n"),
237  qq{<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo"><Para><I>stuff</I> Trala!</Para><Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.</Verbatim></for><Para>Yup.</Para></Document>}
238);
239is( $x->_out( \&mojtext,  join "\n\n" =>
240  "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk",
241  "I<stuff>\nTrala!",
242  "   Hm, B<things>!\nTrala.",
243  "=end psketti,mojojojo,crunk",
244  "Yup.\n"
245 ),
246 qq{<Document><Para>I like pie.</Para>}.
247 qq{<for target="psketti,mojojojo,crunk" target_matching="mojojojo">}.
248 qq{<Para><I>stuff</I> Trala!</Para>}.
249 qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.</Verbatim>}.
250 qq{</for><Para>Yup.</Para></Document>}
251);
252
253print "# Now with five paragraphs (p,v,v,p,p) and accept_target_as_text\n";
254
255is( $x->_out( \&mojtext,  join "\n\n" =>
256  "=pod\n\nI like pie.\n\n=begin psketti,mojojojo,crunk",
257    "I<stuff>\nTrala!",
258    "   Hm, B<things>!\nTrala.",
259    "    Oh, F<< dodads >>!\nHurf.",
260    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
261    "Woohah S<thwack\nwoohah>squim!",
262  "=end psketti,mojojojo,crunk",
263  "Yup.\n"
264 ),
265 qq{<Document><Para>I like pie.</Para>}.
266 qq{<for target="psketti,mojojojo,crunk" target_matching="mojojojo">}.
267   qq{<Para><I>stuff</I> Trala!</Para>}.
268   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
269   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
270   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
271   qq{<Para>Woohah <S>thwack woohah</S>squim!</Para>}.
272 qq{</for><Para>Yup.</Para></Document>}
273);
274
275
276
277print "#\n# Now nested begin...end regions...\n";
278
279sub mojprok { shift->accept_targets(qw{mojojojo prok}) }
280
281is( $x->_out( \&mojprok,  join "\n\n" =>
282  "=pod\n\nI like pie.",
283  "=begin :psketti,mojojojo,crunk",
284    "I<stuff>\nTrala!",
285    "   Hm, B<things>!\nTrala.",
286    "    Oh, F<< dodads >>!\nHurf.",
287    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
288    "=begin :prok",
289      "Woohah S<thwack\nwoohah>squim!",
290    "=end :prok",
291    "ZubZ<>aaz.",
292  "=end :psketti,mojojojo,crunk",
293  "Yup.\n"
294 ),
295 qq{<Document><Para>I like pie.</Para>}.
296 qq{<for target=":psketti,mojojojo,crunk" target_matching="mojojojo">}.
297   qq{<Para><I>stuff</I> Trala!</Para>}.
298   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
299   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
300   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
301   qq{<for target=":prok" target_matching="prok">}.
302     qq{<Para>Woohah <S>thwack woohah</S>squim!</Para>}.
303   qq{</for>}.
304   qq{<Para>Zubaaz.</Para>}.
305 qq{</for>}.
306 qq{<Para>Yup.</Para></Document>}
307);
308
309
310print "# a little more complex this time...\n";
311
312is( $x->_out( \&mojprok,  join "\n\n" =>
313  "=pod\n\nI like pie.",
314  "=begin :psketti,mojojojo,crunk",
315    "I<stuff>\nTrala!",
316    "   Hm, B<things>!\nTrala.",
317    "    Oh, F<< dodads >>!\nHurf.",
318    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
319    "=begin :prok",
320      "   Blorp, B<things>!\nTrala.",
321      "    Khh, F<< dodads >>!\nHurf.",
322      "Woohah S<thwack\nwoohah>squim!",
323    "=end :prok",
324    "ZubZ<>aaz.",
325  "=end :psketti,mojojojo,crunk",
326  "Yup.\n"
327 ),
328 qq{<Document><Para>I like pie.</Para>}.
329 qq{<for target=":psketti,mojojojo,crunk" target_matching="mojojojo">}.
330   qq{<Para><I>stuff</I> Trala!</Para>}.
331   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
332   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
333   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
334   qq{<for target=":prok" target_matching="prok">}.
335     qq{<Verbatim xml:space="preserve">   Blorp, B&#60;things&#62;!\nTrala.\n\n}.
336     qq{    Khh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
337     qq{<Para>Woohah <S>thwack woohah</S>squim!</Para>}.
338   qq{</for>}.
339   qq{<Para>Zubaaz.</Para>}.
340 qq{</for>}.
341 qq{<Para>Yup.</Para></Document>}
342);
343
344
345$d = 10;
346print "# Now with nesting where inner region is non-resolving...\n";
347
348is( $x->_out( \&mojprok,  join "\n\n" =>
349  "=pod\n\nI like pie.",
350  "=begin :psketti,mojojojo,crunk",
351    "I<stuff>\nTrala!",
352    "   Hm, B<things>!\nTrala.",
353    "    Oh, F<< dodads >>!\nHurf.",
354    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
355    "=begin prok",
356      "   Blorp, B<things>!\nTrala.",
357      "    Khh, F<< dodads >>!\nHurf.",
358      "Woohah S<thwack\nwoohah>squim!",
359    "=end prok",
360    "ZubZ<>aaz.",
361  "=end :psketti,mojojojo,crunk",
362  "Yup.\n"
363 ),
364 qq{<Document><Para>I like pie.</Para>}.
365 qq{<for target=":psketti,mojojojo,crunk" target_matching="mojojojo">}.
366   qq{<Para><I>stuff</I> Trala!</Para>}.
367   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
368   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
369   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
370   qq{<for target="prok" target_matching="prok">}.
371     qq{<Data xml:space="preserve">   Blorp, B&#60;things&#62;!\nTrala.\n\n}.
372     qq{    Khh, F&#60;&#60; dodads &#62;&#62;!\nHurf.\n</Data>}.
373     qq{<Data xml:space="preserve">Woohah S&#60;thwack\nwoohah&#62;squim!</Data>}.
374   qq{</for>}.
375   qq{<Para>Zubaaz.</Para>}.
376 qq{</for>}.
377 qq{<Para>Yup.</Para></Document>}
378);
379
380
381
382print "# Now a begin...end with a non-resolving for inside\n";
383
384is( $x->_out( \&mojprok,  join "\n\n" =>
385  "=pod\n\nI like pie.",
386  "=begin :psketti,mojojojo,crunk",
387    "I<stuff>\nTrala!",
388    "   Hm, B<things>!\nTrala.",
389    "    Oh, F<< dodads >>!\nHurf.",
390    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
391    "=for prok"
392     . "   Blorp, B<things>!\nTrala.\n    Khh, F<< dodads >>!\nHurf.",
393    "ZubZ<>aaz.",
394  "=end :psketti,mojojojo,crunk",
395  "Yup.\n"
396 ),
397 qq{<Document><Para>I like pie.</Para>}.
398 qq{<for target=":psketti,mojojojo,crunk" target_matching="mojojojo">}.
399   qq{<Para><I>stuff</I> Trala!</Para>}.
400   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
401   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
402   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
403   qq{<for target="prok" target_matching="prok">}.
404     qq{<Data xml:space="preserve">Blorp, B&#60;things&#62;!\nTrala.\n}.
405     qq{    Khh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Data>}.
406   qq{</for>}.
407   qq{<Para>Zubaaz.</Para>}.
408 qq{</for>}.
409 qq{<Para>Yup.</Para></Document>}
410);
411
412
413
414
415print "# Now a begin...end with a resolving for inside\n";
416
417is( $x->_out( \&mojprok,  join "\n\n" =>
418  "=pod\n\nI like pie.",
419  "=begin :psketti,mojojojo,crunk",
420    "I<stuff>\nTrala!",
421    "   Hm, B<things>!\nTrala.",
422    "    Oh, F<< dodads >>!\nHurf.",
423    "Boing C<spr-\t\n\t\t\toink>\n Blorg!",
424    "=for :prok"
425     . "   Blorp, B<things>!\nTrala.\n    Khh, F<< dodads >>!\nHurf.",
426    "ZubZ<>aaz.",
427  "=end :psketti,mojojojo,crunk",
428  "Yup.\n"
429 ),
430 qq{<Document><Para>I like pie.</Para>}.
431 qq{<for target=":psketti,mojojojo,crunk" target_matching="mojojojo">}.
432   qq{<Para><I>stuff</I> Trala!</Para>}.
433   qq{<Verbatim xml:space="preserve">   Hm, B&#60;things&#62;!\nTrala.\n\n}.
434   qq{    Oh, F&#60;&#60; dodads &#62;&#62;!\nHurf.</Verbatim>}.
435   qq{<Para>Boing <C>spr- oink</C> Blorg!</Para>}.
436   qq{<for target=":prok" target_matching="prok">}.
437     qq{<Para>Blorp, <B>things</B>! Trala. Khh, }.
438     qq{<F>dodads</F>! Hurf.</Para>}.
439   qq{</for>}.
440   qq{<Para>Zubaaz.</Para>}.
441 qq{</for>}.
442 qq{<Para>Yup.</Para></Document>}
443);
444
445#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
446
447print "# Testing matching of begin block titles\n";
448is( $x->_out( \&moj, "=pod\n\nI like pie.\n\n=begin mojojojo Title\n\nstuff\n\n=end mojojojo \n\nYup.\n"),
449  '<Document><Para>I like pie.</Para><for target="mojojojo" target_matching="mojojojo" title="Title"><Data xml:space="preserve">stuff</Data></for><Para>Yup.</Para></Document>'
450);
451