1BEGIN { 2 if($ENV{PERL_CORE}) { 3 chdir 't'; 4 @INC = '../lib'; 5 } 6} 7 8use strict; 9use Test; 10BEGIN { plan tests => 24 }; 11 12my $d; 13#use Pod::Simple::Debug (\$d,0); 14 15ok 1; 16 17use Pod::Simple::DumpAsXML; 18use Pod::Simple::XMLOutStream; 19print "# Pod::Simple version $Pod::Simple::VERSION\n"; 20sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) } 21 22my $x = 'Pod::Simple::XMLOutStream'; 23 24print "##### Tests for =item directives via class $x\n"; 25 26$Pod::Simple::XMLOutStream::ATTR_PAD = ' '; 27$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output 28 29 30print "#\n# Tests for simple =item *'s\n"; 31ok( $x->_out("\n=over\n\n=item *\n\nStuff\n\n=item *\n\nBar I<baz>!\n\n=back\n\n"), 32 '<Document><over-bullet indent="4"><item-bullet>Stuff</item-bullet><item-bullet>Bar <I>baz</I>!</item-bullet></over-bullet></Document>' 33); 34ok( $x->_out("\n=over\n\n=item *\n\nStuff\n\n=cut\n\nStuff\n\n=item *\n\nBar I<baz>!\n\n=back\n\n"), 35 '<Document><over-bullet indent="4"><item-bullet>Stuff</item-bullet><item-bullet>Bar <I>baz</I>!</item-bullet></over-bullet></Document>' 36); 37ok( $x->_out("\n=over 10\n\n=item *\n\nStuff\n\n=cut\n\nStuff\n\n=item *\n\nBar I<baz>!\n\n=back\n\n"), 38 '<Document><over-bullet indent="10"><item-bullet>Stuff</item-bullet><item-bullet>Bar <I>baz</I>!</item-bullet></over-bullet></Document>' 39); 40ok( $x->_out("\n=over\n\n=item *\n\nStuff\n=cut\nStuff\n\n=item *\n\nBar I<baz>!\n\n=back"), 41 '<Document><over-bullet indent="4"><item-bullet>Stuff</item-bullet><item-bullet>Bar <I>baz</I>!</item-bullet></over-bullet></Document>' 42); 43 44 45 46 47print "#\n# Tests for simple =item 1.'s\n"; 48ok( $x->_out("\n=over\n\n=item 1.\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\n=back\n\n"), 49 '<Document><over-number indent="4"><item-number number="1">Stuff</item-number><item-number number="2">Bar <I>baz</I>!</item-number></over-number></Document>' 50); 51ok( $x->_out("\n=over\n\n=item 1.\n\nStuff\n\n=cut\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\n=back\n\n"), 52 '<Document><over-number indent="4"><item-number number="1">Stuff</item-number><item-number number="2">Bar <I>baz</I>!</item-number></over-number></Document>' 53); 54# Now without a dot 55ok( $x->_out("\n=over\n\n=item 1\n\nStuff\n\n=cut\n\nStuff\n\n=item 2\n\nBar I<baz>!\n\n=back\n\n"), 56 '<Document><over-number indent="4"><item-number number="1">Stuff</item-number><item-number number="2">Bar <I>baz</I>!</item-number></over-number></Document>' 57); 58ok( $x->_out("\n=over\n\n=item 1\n\nStuff\n=cut\nStuff\n\n=item 2\n\nBar I<baz>!\n\n=back"), 59 '<Document><over-number indent="4"><item-number number="1">Stuff</item-number><item-number number="2">Bar <I>baz</I>!</item-number></over-number></Document>' 60); 61 62 63 64print "#\n# Tests for =over blocks (without =items)\n"; 65ok( $x->_out("\n=over\n\nStuff\n\nBar I<baz>!\n\n=back\n\n"), 66 '<Document><over-block indent="4"><Para>Stuff</Para><Para>Bar <I>baz</I>!</Para></over-block></Document>' 67); 68ok( $x->_out("\n=over\n\n Stuff\n\nBar I<baz>!\n\n=back\n\n"), 69 '<Document><over-block indent="4"><Verbatim xml:space="preserve"> Stuff</Verbatim><Para>Bar <I>baz</I>!</Para></over-block></Document>' 70); 71ok( $x->_out("\n=over\n\nBar I<baz>!\n\n Stuff\n\n=back\n\n"), 72 '<Document><over-block indent="4"><Para>Bar <I>baz</I>!</Para><Verbatim xml:space="preserve"> Stuff</Verbatim></over-block></Document>' 73); 74 75 76 77 78print "#\n# Tests for =item Text blocks...\n"; 79ok( $x->_out("\n=over\n\n=item Foo\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item Bar I<baz>!\n\nQuux\n\n=back\n\n"), 80 '<Document><over-text indent="4"><item-text>Foo</item-text><Para>Stuff</Para><item-text>Bar <I>baz</I>!</item-text><Para>Quux</Para></over-text></Document>' 81); 82ok( $x->_out("\n=over\n\n=item Foo\n\n Stuff\n\tSnork\n\n=cut\n\nCrunk\nZorp\n\n=item Bar I<baz>!\n\nQuux\n\n=back\n\n"), 83 qq{<Document><over-text indent="4"><item-text>Foo</item-text><Verbatim xml:space="preserve"> Stuff\n Snork</Verbatim>} 84 . qq{<item-text>Bar <I>baz</I>!</item-text><Para>Quux</Para></over-text></Document>} 85); 86ok( $x->_out("\n=over\n\n=item Foo\n\n Stuff\n\tSnork\n=cut\n\nCrunk\nZorp\n\n=item Bar I<baz>!\n\nQuux\n\n=back\n\n"), 87 qq{<Document><over-text indent="4"><item-text>Foo</item-text><Verbatim xml:space="preserve"> Stuff\n Snork</Verbatim>} 88 . qq{<item-text>Bar <I>baz</I>!</item-text><Para>Quux</Para></over-text></Document>} 89); 90 91 92 93print "#\n# Test for mixed =item blocks...\n"; 94ok( $x->_out( 95 sub { $_[0]->no_errata_section(1) }, # We know this will complain 96 "\n=over\n\n=item Foo\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\nQuux\n\n=item *\n\nThwoong\n\n=back\n\n"), 97 qq{<Document><over-text indent="4"><item-text>Foo</item-text><Para>Stuff</Para>} 98 . qq{<item-text>2.</item-text><Para>Bar <I>baz</I>!</Para><Para>Quux</Para>} 99 . qq{<item-text>*</item-text><Para>Thwoong</Para></over-text></Document>} 100); 101 102# ok( $x->_out("\n=over\n\n=item *\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\nQuux\n\n=item *\n\nThwoong\n\n=back\n\n"), 103# ok( $x->_out("\n=over\n\n=item 1.\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\nQuux\n\n=item *\n\nThwoong\n\n=back\n\n"), 104 105print "#\n# Tests for indenting\n"; 106ok( $x->_out("\n=over 19\n\n=item *\n\nStuff\n\n=item *\n\nBar I<baz>!\n\n=back\n\n"), 107 '<Document><over-bullet indent="19"><item-bullet>Stuff</item-bullet><item-bullet>Bar <I>baz</I>!</item-bullet></over-bullet></Document>' 108); 109ok( $x->_out("\n=over 19\n\n=item 1.\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\n=back\n\n"), 110 '<Document><over-number indent="19"><item-number number="1">Stuff</item-number><item-number number="2">Bar <I>baz</I>!</item-number></over-number></Document>' 111); 112ok( $x->_out("\n=over 19\n\nStuff\n\nBar I<baz>!\n\n=back\n\n"), 113 '<Document><over-block indent="19"><Para>Stuff</Para><Para>Bar <I>baz</I>!</Para></over-block></Document>' 114); 115ok( $x->_out("\n=over 19\n\n=item Foo\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item Bar I<baz>!\n\nQuux\n\n=back\n\n"), 116 '<Document><over-text indent="19"><item-text>Foo</item-text><Para>Stuff</Para><item-text>Bar <I>baz</I>!</item-text><Para>Quux</Para></over-text></Document>' 117); 118 119#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 121print "# Now testing nesting...\n"; 122ok( $x->_out(join "\n\n", '', 123 '=over', 124 '=item *', 125 'Stuff', 126 '=cut', 127 'Stuff', 128 '=over', 129 '=item 1.', 130 '=item 2.', 131 'Bar I<baz>!', 132 '=back', 133 '=item *', 134 'Bar I<baz>!', 135 '=back', '' 136 ), join '', 137 '<Document>', 138 '<over-bullet indent="4">', 139 '<item-bullet>Stuff</item-bullet>', 140 '<over-number indent="4">', 141 '<item-number number="1"></item-number>', 142 '<item-number number="2">Bar <I>baz</I>!</item-number>', 143 '</over-number>', 144 '<item-bullet>Bar <I>baz</I>!</item-bullet>', 145 '</over-bullet></Document>' 146); 147 148#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 150ok( $x->_out( join "\n\n", '', '', 151 '=over', 152 '=item *', 153 'Stuff', 154 '=cut', 155 'Stuff', 156 '=over', 157 '=item 1.', 158 '=over 19', 159 'Gleiven', 160 'Squim F<.thingrc>!', 161 '=back', 162 '=item 2.', 163 'Bar I<baz>!', 164 '=back', 165 '=item *', 166 'Bar I<baz>!', 167 '=back', 168 '', '' 169 ), join '', 170 '<Document>', 171 '<over-bullet indent="4">', 172 '<item-bullet>Stuff</item-bullet>', 173 '<over-number indent="4">', 174 '<item-number number="1"></item-number>', 175 176 '<over-block indent="19">', 177 '<Para>Gleiven</Para>', 178 '<Para>Squim <F>.thingrc</F>!</Para>', 179 '</over-block>', 180 181 '<item-number number="2">Bar <I>baz</I>!</item-number>', 182 '</over-number>', 183 '<item-bullet>Bar <I>baz</I>!</item-bullet>', 184 '</over-bullet></Document>' 185); 186 187#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 188 189$d = 11; 190print "# Now checking that document-end closes things right...\n"; 191 192ok( $x->_out( 193 # We know there'd be a warning about implicit =back; disable it! 194 sub { $_[0]->no_whining(1); }, 195 join( "\n\n", '', '', 196 '=over', 197 '=item *', 198 'Stuff', 199 '=cut', 200 'Stuff', 201 '=over', 202 '=item 1.', 203 '=over 19', 204 'Gleiven', 205 'Squim F<.thingrc>!', 206 '', '', 207 ), 208 ), join '', 209 '<Document>', 210 '<over-bullet indent="4">', 211 '<item-bullet>Stuff</item-bullet>', 212 '<over-number indent="4">', 213 '<item-number number="1"></item-number>', 214 215 '<over-block indent="19">', 216 '<Para>Gleiven</Para>', 217 '<Para>Squim <F>.thingrc</F>!</Para>', 218 '</over-block>', 219 '</over-number>', 220 '</over-bullet></Document>' 221); 222 223 224 225# TODO: more checking of coercion in nesting? 226 227 228 229print "# Wrapping up... one for the road...\n"; 230ok 1; 231print "# --- Done with ", __FILE__, " --- \n"; 232 233