Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / source / libvpx / examples / includes / HTML-Toc-0.91 / t / podExamples.t
1 #--- podExamples.t ------------------------------------------------------------
2 # function: Test HTML::ToC.  In particular test the examples as described in 
3 #           the POD documentation.
4
5 use strict;
6 use Test;
7
8 BEGIN { plan tests => 13; }
9
10 use HTML::Toc;
11 use HTML::TocGenerator;
12 use HTML::TocInsertor;
13 use HTML::TocUpdator;
14
15 my ($filename, $filename2);
16         
17
18 BEGIN {
19                 # Create test file
20         $filename = "tmp.htm";
21         die "$filename is already there" if -e $filename;
22                 # Create test file 2
23         $filename2 = "tmp2.htm";
24         die "$filename2 is already there" if -e $filename2;
25 }
26
27
28 END {
29                 # Remove test file
30         unlink($filename) or warn "Can't unlink $filename: $!";
31                 # Remove test file 2
32         unlink($filename2) or warn "Can't unlink $filename2: $!";
33 }
34
35
36 #--- TestExtendFromFile() --------------------------------------------------
37 # function: Test 'HTML::TocGenerator->extendFromFile()
38
39 sub TestExtendFromFile {
40                 # Assemble test file
41         open(FILE, ">$filename") || die "Can't create $filename: $!";
42         print FILE <<'EOT'; close(FILE);
43 <body>
44    <h1>Chapter of document 1</h1>
45 </body>
46 EOT
47
48                 # Assemble test file 2
49         open(FILE, ">$filename2") || die "Can't create $filename2: $!";
50         print FILE <<'EOT'; close(FILE);
51 <html>
52 <body>
53    <h1>Chapter of document 2</h1>
54 </body>
55 </html>
56 EOT
57
58                 # Create objects
59         my $toc          = HTML::Toc->new();
60         my $tocGenerator = HTML::TocGenerator->new();
61         
62                 # Set ToC options
63    $toc->setOptions({'doLinkToFile' => 1});
64                 # Generate ToC
65         $tocGenerator->generateFromFile($toc, $filename);
66         $tocGenerator->extendFromFile($toc, $filename2);
67                 # Test ToC
68         ok($toc->format(), <<EOT);
69
70 <!-- Table of Contents generated by Perl - HTML::Toc -->
71 <ul>
72    <li><a href=tmp.htm#h-1>Chapter of document 1</a>
73    <li><a href=tmp2.htm#h-2>Chapter of document 2</a>
74 </ul>
75 <!-- End of generated Table of Contents -->
76 EOT
77 }  # TestExtendFromFile()
78
79
80 #--- TestGenerateFromFiles() --------------------------------------------------
81 # function: Test 'HTML::TocGenerator->generateFromFile()
82
83 sub TestGenerateFromFiles {
84                 # Assemble test file
85         open(FILE, ">$filename") || die "Can't create $filename: $!";
86         print FILE <<'EOT'; close(FILE);
87 <body>
88    <h1>Chapter of document 1</h1>
89 </body>
90 EOT
91
92                 # Assemble test file 2
93         open(FILE, ">$filename2") || die "Can't create $filename2: $!";
94         print FILE <<'EOT'; close(FILE);
95 <html>
96 <body>
97    <h1>Chapter of document 2</h1>
98 </body>
99 </html>
100 EOT
101
102                 # Create objects
103         my $toc          = HTML::Toc->new();
104         my $tocGenerator = HTML::TocGenerator->new();
105         
106                 # Set ToC options
107    $toc->setOptions({'doLinkToFile' => 1});
108                 # Generate ToC
109         $tocGenerator->generateFromFile($toc, [$filename, $filename2]);
110                 # Test ToC
111         ok($toc->format(), <<EOT);
112
113 <!-- Table of Contents generated by Perl - HTML::Toc -->
114 <ul>
115    <li><a href=tmp.htm#h-1>Chapter of document 1</a>
116    <li><a href=tmp2.htm#h-2>Chapter of document 2</a>
117 </ul>
118 <!-- End of generated Table of Contents -->
119 EOT
120 }  # TestGenerateFromFiles()
121
122
123 #--- TestGenerateFromFiles() --------------------------------------------------
124 # function: Test 'HTML::TocGenerator->generateFromFile() using multiple files.
125
126 sub TestGenerateFromFile {
127                 # Assemble test file 1
128         open(FILE, ">$filename") || die "Can't create $filename: $!";
129         print FILE <<'EOT'; close(FILE);
130 <html>
131 <body>
132    <h1>Chapter</h1>
133 </body>
134 </html>
135 EOT
136
137                 # Create objects
138         my $toc          = HTML::Toc->new();
139         my $tocGenerator = HTML::TocGenerator->new();
140         
141                 # Generate ToC
142         $tocGenerator->generateFromFile($toc, $filename);
143                 # Test ToC
144         ok($toc->format(), <<EOT);
145
146 <!-- Table of Contents generated by Perl - HTML::Toc -->
147 <ul>
148    <li><a href=#h-1>Chapter</a>
149 </ul>
150 <!-- End of generated Table of Contents -->
151 EOT
152 }  # TestGenerateFromFile()
153
154
155 #--- TestInsertIntoFile() -----------------------------------------------------
156 # function: Test 'HTML::TocInsertor->insertIntoFile()
157
158 sub TestInsertIntoFile {
159                 # Assemble test file
160         open(FILE, ">$filename") || die "Can't create $filename: $!";
161         print FILE <<'EOT'; close(FILE);
162 <html>
163 <body>
164    <h1>Chapter</h1>
165 </body>
166 </html>
167 EOT
168
169                 # Create objects
170         my $toc         = HTML::Toc->new();
171         my $tocInsertor = HTML::TocInsertor->new();
172         my $output;
173         
174                 # Generate ToC
175         $tocInsertor->insertIntoFile($toc, $filename, {'output' => \$output});
176                 # Test ToC
177         ok($output, <<EOT);
178 <html>
179 <body>
180 <!-- Table of Contents generated by Perl - HTML::Toc -->
181 <ul>
182    <li><a href=#h-1>Chapter</a>
183 </ul>
184 <!-- End of generated Table of Contents -->
185
186    <a name=h-1><h1>Chapter</h1></a>
187 </body>
188 </html>
189 EOT
190 }  # TestInsertIntoFile()
191
192
193 #--- TestInsertIntoFileUsingTocUpdator() --------------------------------------
194 # function: Test 'HTML::TocUpdator->insertIntoFile()
195
196 sub TestInsertIntoFileUsingTocUpdator {
197                 # Assemble test file
198         open(FILE, ">$filename") || die "Can't create $filename: $!";
199         print FILE <<'EOT'; close(FILE);
200 <html>
201 <body>
202    <h1>
203    Chapter
204    </h1>
205 </body>
206 </html>
207 EOT
208
209                 # Create objects
210         my $toc        = HTML::Toc->new();
211         my $tocUpdator = HTML::TocUpdator->new();
212         my $output;
213         
214                 # Generate ToC
215         $tocUpdator->insertIntoFile($toc, $filename, {'output' => \$output});
216                 # Test ToC
217         ok($output, <<EOT);
218 <html>
219 <body><!-- #BeginToc -->
220 <!-- Table of Contents generated by Perl - HTML::Toc -->
221 <ul>
222    <li><a href=#h-1> Chapter </a>
223 </ul>
224 <!-- End of generated Table of Contents -->
225 <!-- #EndToc -->
226    <!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1>
227    Chapter
228    </h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
229 </body>
230 </html>
231 EOT
232 }  # TestInsertIntoFileUsingTocUpdator()
233
234
235 #--- TestGlobalGroups0() ------------------------------------------------------
236 # function: Test 'HTML::TocGenerator' option 'doUseGroupsGlobal = 0'.
237
238 sub TestGlobalGroups0 {
239                 # Assemble test file
240         open(FILE, ">$filename") || die "Can't create $filename: $!";
241         print FILE <<'EOT'; close(FILE);
242 <h1>Chapter</h1>
243 <h2>Paragraph</h2>
244 EOT
245
246                 # Create objects
247         my $toc1         = HTML::Toc->new();
248         my $toc2         = HTML::Toc->new();
249         my $tocGenerator = HTML::TocGenerator->new();
250
251                 # Set options
252         $toc1->setOptions({
253                 'header'      => '',
254                 'footer'      => '',
255                 'tokenToToc' => [{'tokenBegin' => '<h1>'}]
256         });
257         $toc2->setOptions({
258                 'header'      => '',
259                 'footer'      => '',
260                 'tokenToToc' => [{'tokenBegin' => '<h2>'}]
261         });
262                 # Generate ToC
263         $tocGenerator->generateFromFile([$toc1, $toc2], $filename);
264                 # Test ToC
265         ok($toc1->format() . $toc2->format() . "\n", <<'EOT');
266 <ul>
267    <li><a href=#h-1>Chapter</a>
268 </ul><ul>
269    <li><a href=#h-1>Paragraph</a>
270 </ul>
271 EOT
272 }       # TestGlobalGroups0()
273
274
275 #--- TestGlobalGroups1() ------------------------------------------------------
276 # function: Test 'HTML::TocGenerator' option 'doUseGroupsGlobal = 0'.
277
278 sub TestGlobalGroups1 {
279                 # Assemble test file
280         open(FILE, ">$filename") || die "Can't create $filename: $!";
281         print FILE <<'EOT';
282 <h1>Chapter</h1>
283 <h2>Paragraph</h2>
284 EOT
285         close(FILE);
286
287                 # Create objects
288         my $toc1         = HTML::Toc->new();
289         my $toc2         = HTML::Toc->new();
290         my $tocGenerator = HTML::TocGenerator->new();
291
292                 # Set options
293         $toc1->setOptions({
294                 'header'      => '',
295                 'footer'      => '',
296                 'tokenToToc' => [{'tokenBegin' => '<h1>'}]
297         });
298         $toc2->setOptions({
299                 'header'      => '',
300                 'footer'      => '',
301                 'tokenToToc' => [{'tokenBegin' => '<h2>'}]
302         });
303                 # Generate ToC
304         $tocGenerator->generateFromFile(
305                 [$toc1, $toc2], $filename, {'doUseGroupsGlobal' => 1}
306         );
307                 # Test ToC
308         ok($toc1->format() . $toc2->format() . "\n", <<'EOT');
309 <ul>
310    <li><a href=#h-1>Chapter</a>
311 </ul><ul>
312    <li><a href=#h-2>Paragraph</a>
313 </ul>
314 EOT
315 }       # TestGlobalGroups1()
316
317
318 #--- TestMultipleGroupsAppendix() ---------------------------------------------
319 # function: Test multiple ToCs
320
321 sub TestMultipleGroupsAppendix() {
322                 # Create objects
323         my $toc         = HTML::Toc->new();
324         my $tocInsertor = HTML::TocInsertor->new();
325         my $output;
326         
327                 # Set ToC options
328         $toc->setOptions({
329                 'tokenToToc' => [{
330                                 'tokenBegin' => '<h1 class=-appendix>'
331                         }, {
332                                 'tokenBegin' => '<h2 class=-appendix>',
333                                 'level'      => 2
334                         }, {
335                                 'groupId'    => 'appendix',
336                                 'tokenBegin' => '<h1 class=appendix>',
337                         }, {
338                                 'groupId'    => 'appendix',
339                                 'tokenBegin' => '<h2 class=appendix>',
340                                 'level'      => 2
341                         }],
342         });
343                 # Generate ToC
344         $tocInsertor->insert($toc, <<EOT, {'output' => \$output});
345 <body>
346    <h1>Chapter</h1>
347    <h2>Paragraph</h2>
348    <h3>Subparagraph</h3>
349    <h1>Chapter</h1>
350    <h1 class=appendix>Appendix Chapter</h1>
351    <h2 class=appendix>Appendix Paragraph</h2>
352 </body>
353 EOT
354                 # Test ToC
355         ok($output, <<EOT);
356 <body>
357 <!-- Table of Contents generated by Perl - HTML::Toc -->
358 <ul>
359    <li><a href=#h-1>Chapter</a>
360    <ul>
361       <li><a href=#h-1.1>Paragraph</a>
362    </ul>
363    <li><a href=#h-2>Chapter</a>
364 </ul>
365 <ul>
366    <li><a href=#appendix-1>Appendix Chapter</a>
367    <ul>
368       <li><a href=#appendix-1.1>Appendix Paragraph</a>
369    </ul>
370 </ul>
371 <!-- End of generated Table of Contents -->
372
373    <a name=h-1><h1>Chapter</h1></a>
374    <a name=h-1.1><h2>Paragraph</h2></a>
375    <h3>Subparagraph</h3>
376    <a name=h-2><h1>Chapter</h1></a>
377    <a name=appendix-1><h1 class=appendix>Appendix Chapter</h1></a>
378    <a name=appendix-1.1><h2 class=appendix>Appendix Paragraph</h2></a>
379 </body>
380 EOT
381 }  # TestMultipleGroupsAppendix()
382
383
384 #--- TestMultipleGroupsPart() -------------------------------------------------
385 # function: Test multiple ToCs
386
387 sub TestMultipleGroupsPart() {
388                 # Create objects
389         my $toc         = HTML::Toc->new();
390         my $tocInsertor = HTML::TocInsertor->new();
391         my $output;
392         
393                 # Set ToC options
394         $toc->setOptions({
395                 'tokenToToc' => [{
396                                 'tokenBegin' => '<h1 class=-part>'
397                         }, {
398                                 'tokenBegin' => '<h2 class=-part>',
399                                 'level'      => 2,
400                         }, {
401                                 'groupId'        => 'part',
402                                 'tokenBegin'     => '<h1 class=part>',
403                                 'level'          => 1,
404                                 'doNumberToken'  => 1,
405                                 'numberingStyle' => 'upper-alpha'
406                         }]
407         });
408                 # Generate ToC
409         $tocInsertor->insert($toc, <<EOT, {'output' => \$output});
410 <body>
411    <h1 class=part>First Part</h1>
412    <h1>Chapter</h1>
413    <h2>Paragraph</h2>
414    <h1 class=part>Second Part</h1>
415    <h1>Chapter</h1>
416    <h2>Paragraph</h2>
417 </body>
418 EOT
419                 # Test ToC
420         ok($output, <<EOT);
421 <body>
422 <!-- Table of Contents generated by Perl - HTML::Toc -->
423 <ul>
424    <li><a href=#part-A>First Part</a>
425 </ul>
426 <ul>
427    <li><a href=#h-1>Chapter</a>
428    <ul>
429       <li><a href=#h-1.1>Paragraph</a>
430    </ul>
431 </ul>
432 <ul>
433    <li><a href=#part-B>Second Part</a>
434 </ul>
435 <ul>
436    <li><a href=#h-2>Chapter</a>
437    <ul>
438       <li><a href=#h-2.1>Paragraph</a>
439    </ul>
440 </ul>
441 <!-- End of generated Table of Contents -->
442
443    <a name=part-A><h1 class=part>A &nbsp;First Part</h1></a>
444    <a name=h-1><h1>Chapter</h1></a>
445    <a name=h-1.1><h2>Paragraph</h2></a>
446    <a name=part-B><h1 class=part>B &nbsp;Second Part</h1></a>
447    <a name=h-2><h1>Chapter</h1></a>
448    <a name=h-2.1><h2>Paragraph</h2></a>
449 </body>
450 EOT
451 }  # TestMultipleGroupsPart()
452
453
454 #--- TestMultipleTocs() -------------------------------------------------------
455 # function: Test multiple ToCs
456
457 sub TestMultipleTocs() {
458                 # Assemble test file
459         open(FILE, ">$filename") || die "Can't create $filename: $!";
460         print FILE <<'EOT'; close(FILE);
461 <body>
462    <h1>Header One</h1>
463    <img src=test1.gif alt="First picture">
464    <h2>Paragraph One</h2>
465    <img src=test2.gif alt="Second picture">
466 </body>
467 EOT
468
469                 # Create objects
470         my $toc1        = HTML::Toc->new();
471         my $toc2        = HTML::Toc->new();
472         my $tocInsertor = HTML::TocInsertor->new();
473         my $output;
474         
475                 # Set ToC options
476         $toc2->setOptions({
477                 'tokenToToc'             => [{
478                         'groupId'    => 'image',
479                         'tokenBegin' => '<img alt=@>'
480                 }],
481         });
482                 # Generate ToC
483         $tocInsertor->insertIntoFile(
484                 [$toc1, $toc2], $filename, {'output' => \$output}
485         );
486                 # Test ToC
487         ok($output, <<EOT);
488 <body>
489 <!-- Table of Contents generated by Perl - HTML::Toc -->
490 <ul>
491    <li><a href=#h-1>Header One</a>
492    <ul>
493       <li><a href=#h-1.1>Paragraph One</a>
494    </ul>
495 </ul>
496 <!-- End of generated Table of Contents -->
497
498 <!-- Table of Contents generated by Perl - HTML::Toc -->
499 <ul>
500    <li><a href=#image-1>First picture</a>
501    <li><a href=#image-2>Second picture</a>
502 </ul>
503 <!-- End of generated Table of Contents -->
504
505    <a name=h-1><h1>Header One</h1></a>
506    <a name=image-1><img src=test1.gif alt="First picture"></a>
507    <a name=h-1.1><h2>Paragraph One</h2></a>
508    <a name=image-2><img src=test2.gif alt="Second picture"></a>
509 </body>
510 EOT
511 }  # TestMultipleTocs()
512
513
514 #--- TestSpecifyNumberedList() ------------------------------------------------
515 # function: Test specifying numbered list.
516
517 sub TestSpecifyNumberedList {
518                 # Assemble test file
519         open(FILE, ">$filename") || die "Can't create $filename: $!";
520         print FILE <<'EOT'; close(FILE);
521 <body>
522    <h1>Chapter</h1>
523         <h2>Paragraph</h2>
524 </body>
525 EOT
526
527                 # Create objects
528         my $toc        = HTML::Toc->new();
529    my $tocGenerator = HTML::TocGenerator->new();
530         
531                 # Set ToC options
532         $toc->setOptions({
533                 'templateLevelBegin' => '"<ol>\n"',
534                 'templateLevelEnd'   => '"</ol>\n"',
535         });
536                 # Generate ToC
537         $tocGenerator->generateFromFile($toc, $filename);
538                 # Test ToC
539         ok($toc->format(), <<EOT);
540
541 <!-- Table of Contents generated by Perl - HTML::Toc -->
542 <ol>
543    <li><a href=#h-1>Chapter</a>
544    <ol>
545       <li><a href=#h-1.1>Paragraph</a>
546    </ol>
547 </ol>
548 <!-- End of generated Table of Contents -->
549 EOT
550 }  # TestSpecifyNumberedList()
551
552
553 #--- TestUpdateFile() ---------------------------------------------------------
554 # function: Test 'HTML::TocUpdator->updateFile()'
555
556 sub TestUpdateFile {
557                 # Assemble test file
558         open(FILE, ">$filename") || die "Can't create $filename: $!";
559         print FILE <<'EOT'; close(FILE);
560 <html>
561 <body><!-- #BeginToc -->
562 foo
563 <!-- #EndToc -->
564    <!-- #BeginTocAnchorNameBegin -->bar<!-- #EndTocAnchorNameBegin --><h1>
565    Chapter
566    </h1><!-- #BeginTocAnchorNameEnd -->foo<!-- #EndTocAnchorNameEnd -->
567 </body>
568 </html>
569 EOT
570
571                 # Create objects
572         my $toc        = HTML::Toc->new();
573         my $tocUpdator = HTML::TocUpdator->new();
574         my $output;
575         
576                 # Generate ToC
577         $tocUpdator->updateFile($toc, $filename, {'output' => \$output});
578                 # Test ToC
579         ok($output, <<EOT);
580 <html>
581 <body><!-- #BeginToc -->
582 <!-- Table of Contents generated by Perl - HTML::Toc -->
583 <ul>
584    <li><a href=#h-1> Chapter </a>
585 </ul>
586 <!-- End of generated Table of Contents -->
587 <!-- #EndToc -->
588    <!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1>
589    Chapter
590    </h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
591 </body>
592 </html>
593 EOT
594 }  # TestUpdateFile()
595
596
597 #--- TestUsingCSS() -----------------------------------------------------------
598 # function: Test multiple ToCs
599
600 sub TestUsingCSS() {
601
602                 # Create objects
603         my $toc          = new HTML::Toc;
604         my $tocInsertor  = new HTML::TocInsertor;
605         my $output;
606
607    $toc->setOptions({
608                 'templateLevelBegin'   => '"<ol class=toc_$groupId$level>\n"',
609                 'templateLevelEnd'     => '"</ol>\n"',
610                 'doNumberToken'        => 1,
611       'tokenToToc' => [{
612                                 'groupId'        => 'appendix',
613             'tokenBegin'     => '<h1>',
614                                 'numberingStyle' => 'upper-alpha'
615                         }, {
616                                 'groupId'        => 'appendix',
617             'tokenBegin'          => '<h2>',
618             'level'               => 2,
619          }]
620    });
621         $tocInsertor->insert($toc, <<EOT);
622 <html>
623 <head>
624    <style type="text/css">
625       ol.toc_appendix1 { list-style-type: upper-alpha }
626    </style>
627 </head>
628 <body>
629    <h1>Appendix</h1>
630    <h2>Appendix Paragraph</h2>
631    <h1>Appendix</h1>
632    <h2>Appendix Paragraph</h2>
633 </body>
634 </html>
635 EOT
636                 # Insert ToC
637         $tocInsertor->insert($toc, <<EOT, {'output' => \$output});
638 <html>
639 <head>
640    <style type="text/css">
641       ol.toc_appendix1 { list-style-type: upper-alpha }
642    </style>
643 </head>
644 <body>
645    <h1>Appendix</h1>
646    <h2>Appendix Paragraph</h2>
647    <h1>Appendix</h1>
648    <h2>Appendix Paragraph</h2>
649 </body>
650 </html>
651 EOT
652                 # Test ToC
653         ok($output, <<EOT);
654 <html>
655 <head>
656    <style type="text/css">
657       ol.toc_appendix1 { list-style-type: upper-alpha }
658    </style>
659 </head>
660 <body>
661 <!-- Table of Contents generated by Perl - HTML::Toc -->
662 <ol class=toc_appendix1>
663    <li><a href=#appendix-A>Appendix</a>
664    <ol class=toc_appendix2>
665       <li><a href=#appendix-A.1>Appendix Paragraph</a>
666    </ol>
667    <li><a href=#appendix-B>Appendix</a>
668    <ol class=toc_appendix2>
669       <li><a href=#appendix-B.1>Appendix Paragraph</a>
670    </ol>
671 </ol>
672 <!-- End of generated Table of Contents -->
673
674    <a name=appendix-A><h1>A &nbsp;Appendix</h1></a>
675    <a name=appendix-A.1><h2>A.1 &nbsp;Appendix Paragraph</h2></a>
676    <a name=appendix-B><h1>B &nbsp;Appendix</h1></a>
677    <a name=appendix-B.1><h2>B.1 &nbsp;Appendix Paragraph</h2></a>
678 </body>
679 </html>
680 EOT
681 }  # TestUsingCSS()
682
683
684         # Test 'extendFromFile()'
685 TestExtendFromFile();
686         # Test 'generateFromFile()'
687 TestGenerateFromFile();
688         # Test 'generateFromFiles()'
689 TestGenerateFromFiles();
690         # Test 'doUseGroupsGlobal = 0'
691 TestGlobalGroups0();
692         # Test 'doUseGroupsGlobal = 1'
693 TestGlobalGroups1();
694         # Test 'tocInsertor->insertIntoFile'
695 TestInsertIntoFile();
696         # Test 'tocUpdator->insertIntoFile'
697 TestInsertIntoFileUsingTocUpdator();
698         # Test additional 'appendix' group
699 TestMultipleGroupsAppendix();
700         # Test additional 'part' group
701 TestMultipleGroupsPart();
702         # Test multiple ToCs
703 TestMultipleTocs();
704         # Test specifying numbered list
705 TestSpecifyNumberedList();
706         # Test 'updateFile()'
707 TestUpdateFile();
708         # Test using CSS
709 TestUsingCSS();