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