1use strict; 2use warnings; 3use Test::More tests => 21; 4 5#use Pod::Simple::Debug (5); 6BEGIN { 7 require FindBin; 8 unshift @INC, $FindBin::Bin . '/lib'; 9} 10use helpers; 11 12use Pod::Simple::DumpAsXML; 13use Pod::Simple::XMLOutStream; 14print "# Pod::Simple version $Pod::Simple::VERSION\n"; 15 16print "# With weird leading whitespace...\n"; 17# With weird whitespace 18is( Pod::Simple::XMLOutStream->_out("=pod\n\nI<foo>\n"), 19 '<Document><Para><I>foo</I></Para></Document>' 20); 21is( Pod::Simple::XMLOutStream->_out("=pod\n\nB< foo>\n"), 22 '<Document><Para><B> foo</B></Para></Document>' 23); 24is( Pod::Simple::XMLOutStream->_out("=pod\n\nB<\tfoo>\n"), 25 '<Document><Para><B> foo</B></Para></Document>' 26); 27is( Pod::Simple::XMLOutStream->_out("=pod\n\nB<\nfoo>\n"), 28 '<Document><Para><B> foo</B></Para></Document>' 29); 30is( Pod::Simple::XMLOutStream->_out("=pod\n\nB<foo>\n"), 31 '<Document><Para><B>foo</B></Para></Document>' 32); 33is( Pod::Simple::XMLOutStream->_out("=pod\n\nB<foo\t>\n"), 34 '<Document><Para><B>foo </B></Para></Document>' 35); 36is( Pod::Simple::XMLOutStream->_out("=pod\n\nB<foo\n>\n"), 37 '<Document><Para><B>foo </B></Para></Document>' 38); 39 40 41print "#\n# Tests for wedges outside of formatting codes...\n"; 42&is( Pod::Simple::XMLOutStream->_out("=pod\n\nX < 3 and N > 19\n"), 43 Pod::Simple::XMLOutStream->_out("=pod\n\nX E<lt> 3 and N E<gt> 19\n") 44); 45 46 47print "# A complex test with internal whitespace...\n"; 48is( Pod::Simple::XMLOutStream->_out("=pod\n\nI<foo>B< bar>C<baz >F< quux\t?>\n"), 49 '<Document><Para><I>foo</I><B> bar</B><C>baz </C><F> quux ?</F></Para></Document>' 50); 51 52 53print "# Without any nesting...\n"; 54is( Pod::Simple::XMLOutStream->_out("=pod\n\nF<a>C<b>I<c>B<d>X<e>\n"), 55 '<Document><Para><F>a</F><C>b</C><I>c</I><B>d</B><X>e</X></Para></Document>' 56); 57 58print "# Without any nesting, but with Z's...\n"; 59is( Pod::Simple::XMLOutStream->_out("=pod\n\nZ<>F<a>C<b>I<c>B<d>X<e>\n"), 60 '<Document><Para><F>a</F><C>b</C><I>c</I><B>d</B><X>e</X></Para></Document>' 61); 62 63 64print "# With lots of nesting, and Z's...\n"; 65is( Pod::Simple::XMLOutStream->_out("=pod\n\nZ<>F<C<Z<>foo> I<bar>> B<X<thingZ<>>baz>\n"), 66 '<Document><Para><F><C>foo</C> <I>bar</I></F> <B><X>thing</X>baz</B></Para></Document>' 67); 68 69 70 71print "#\n# *** Now testing different numbers of wedges ***\n"; 72print "# Without any nesting...\n"; 73is( Pod::Simple::XMLOutStream->_out("=pod\n\nF<< a >>C<<< b >>>I<<<< c >>>>B<< d >>X<< e >>\n"), 74 '<Document><Para><F>a</F><C>b</C><I>c</I><B>d</B><X>e</X></Para></Document>' 75); 76 77print "# Without any nesting, but with Z's, and odder whitespace...\n"; 78is( Pod::Simple::XMLOutStream->_out("=pod\n\nF<< aZ<> >>C<<< Z<>b >>>I<<<< c >>>>B<< d \t >>X<<\ne >>\n"), 79 '<Document><Para><F>a</F><C>b</C><I>c</I><B>d</B><X>e</X></Para></Document>' 80); 81 82print "# With nesting and Z's, and odder whitespace...\n"; 83is( Pod::Simple::XMLOutStream->_out("=pod\n\nF<< aZ<> >>C<<< Z<>bZ<>B<< d \t >>X<<\ne >> >>>I<<<< c >>>>\n"), 84 "<Document><Para><F>a</F><C>b<B>d</B><X>e</X></C><I>c</I></Para></Document>" 85); 86 87print "# Regression https://rt.cpan.org/Ticket/Display.html?id=55602 (vs 12239)\n"; 88is( Pod::Simple::XMLOutStream->_out("=pod\n\nC<<< foo->bar >>>\n"), 89 '<Document><Para><C>foo->bar</C></Para></Document>' 90); 91is( Pod::Simple::XMLOutStream->_out("=pod\n\nC<<< C<foo> >>>\n"), 92 '<Document><Para><C><C>foo</C></C></Para></Document>' 93); 94is( Pod::Simple::XMLOutStream->_out("=pod\n\nC<<< C<<foo>> >>>\n"), 95 '<Document><Para><C><C><foo</C>></C></Para></Document>' 96); 97is( Pod::Simple::XMLOutStream->_out("=pod\n\nC<<< CZ<><<foo>> >>>\n"), 98 '<Document><Para><C>C<<foo>></C></Para></Document>' 99); 100is( Pod::Simple::XMLOutStream->_out("=pod\n\nC<<< CE<lt><foo>> >>>\n"), 101 '<Document><Para><C>C<<foo>></C></Para></Document>' 102); 103 104print "# Misc...\n"; 105is( Pod::Simple::XMLOutStream->_out( 106 "=pod\n\nI like I<PIE> with B<cream> and Stuff and N < 3 and X<< things >> hoohah\n" 107."And I<pie is B<also> a happy time>.\n" 108."And B<I<<< I like pie >>>.>\n" 109) => 110"<Document><Para>I like <I>PIE</I> with <B>cream</B> and Stuff and N < 3 and <X>things</X> hoohah " 111."And <I>pie is <B>also</B> a happy time</I>. " 112."And <B><I>I like pie</I>.</B></Para></Document>" 113); 114