xref: /openbsd/gnu/usr.bin/perl/cpan/Pod-Simple/t/items.t (revision a6445c1d)
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