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<stuff></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<stuff></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<stuff></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<stuff></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<stuff></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<stuff></Data><Data xml:space="preserve">Hm, B<things>!</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<stuff></Data><Data xml:space="preserve">Hm, B<things>!</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<stuff></Data><Data xml:space="preserve"> Hm, B<things>!\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<stuff></Data><Data xml:space="preserve"> Hm, B<things>!\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<stuff></Data><Data xml:space="preserve"> Hm, B<things>!\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<stuff></Data><Data xml:space="preserve"> Hm, B<things>!\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<things>!\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<things>!\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<things>!\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<things>!\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<things>!\nTrala.\n\n}. 269 qq{ Oh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 299 qq{ Oh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 332 qq{ Oh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 336 qq{ Khh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 368 qq{ Oh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 372 qq{ Khh, F<< dodads >>!\nHurf.\n</Data>}. 373 qq{<Data xml:space="preserve">Woohah S<thwack\nwoohah>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<things>!\nTrala.\n\n}. 401 qq{ Oh, F<< dodads >>!\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<things>!\nTrala.\n}. 405 qq{ Khh, F<< dodads >>!\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<things>!\nTrala.\n\n}. 434 qq{ Oh, F<< dodads >>!\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