diff options
Diffstat (limited to 'examples/includes/HTML-Toc-0.91/t/insert.t')
-rw-r--r-- | examples/includes/HTML-Toc-0.91/t/insert.t | 336 |
1 files changed, 336 insertions, 0 deletions
diff --git a/examples/includes/HTML-Toc-0.91/t/insert.t b/examples/includes/HTML-Toc-0.91/t/insert.t new file mode 100644 index 000000000..3f1adba81 --- /dev/null +++ b/examples/includes/HTML-Toc-0.91/t/insert.t @@ -0,0 +1,336 @@ +#--- insert.t ----------------------------------------------------------------- +# function: Test ToC insertion. + +use strict; +use Test; + +BEGIN { plan tests => 10; } + +use HTML::Toc; +use HTML::TocGenerator; +use HTML::TocInsertor; + +my ($output, $content, $filename); +my $toc = HTML::Toc->new; +my $tocGenerator = HTML::TocGenerator->new; +my $tocInsertor = HTML::TocInsertor->new; + +$toc->setOptions({ + 'doLinkToToken' => 0, + 'levelIndent' => 0, + 'header' => "", + 'footer' => "", +}); + + +BEGIN { + # Create test file + $filename = "file$$.htm"; + die "$filename is already there" if -e $filename; + open(FILE, ">$filename") || die "Can't create $filename: $!"; + print FILE <<'EOT'; close(FILE); +<h1>Header</h1> +EOT +} + + +END { + # Remove test file + unlink($filename) or warn "Can't unlink $filename: $!"; +} + + +#--- 1. insert before start --------------------------------------------------- + +$toc->setOptions({'insertionPoint' => 'before <h1>'}); + # Generate ToC +$tocGenerator->generate($toc, "<h1>Header</h1>"); +$tocInsertor->insert($toc, "<h1>Header</h1>", { + 'output' => \$output, + 'doGenerateToc' => 0 +}); + # Test ToC +ok($output, "<ul>\n<li>Header\n</ul><h1>Header</h1>"); + + +#--- 2. insert after start ---------------------------------------------------- + +$toc->setOptions({'insertionPoint' => 'after <h1>'}); + # Generate ToC +$tocGenerator->generate($toc, "<h1>Header</h1>"); +$tocInsertor->insert($toc, "<h1>Header</h1>", { + 'output' => \$output, + 'doGenerateToc' => 0 +}); + # Test ToC +ok($output, "<h1><ul>\n<li>Header\n</ul>Header</h1>"); + + +#--- 3. insert before end ----------------------------------------------------- + +$toc->setOptions({'insertionPoint' => 'before </h1>'}); + # Generate ToC +$tocGenerator->generate($toc, "<h1>Header</h1>"); +$tocInsertor->insert($toc, "<h1>Header</h1>", { + 'output' => \$output, + 'doGenerateToc' => 0 +}); + # Test ToC +ok($output, "<h1>Header<ul>\n<li>Header\n</ul></h1>"); + + +#--- 4. insert after end ------------------------------------------------------ + +$toc->setOptions({'insertionPoint' => 'after </h1>'}); + # Generate ToC +$tocGenerator->generate($toc, "<h1>Header</h1>"); +$tocInsertor->insert($toc, "<h1>Header</h1>", { + 'output' => \$output, + 'doGenerateToc' => 0 +}); + # Test ToC +ok($output, "<h1>Header</h1><ul>\n<li>Header\n</ul>"); + + +#--- 5. outputFile ------------------------------------------------------------ + +$toc->setOptions({'insertionPoint' => 'before <h1>'}); + # Generate ToC +$tocGenerator->generate($toc, "<h1>Header</h1>"); + # Insert ToC, output to file +$tocInsertor->insert($toc, "<h1>Header</h1>", { + 'outputFile' => $filename, + 'doGenerateToc' => 0 +}); + # Read outputfile +open(FILE, "<$filename") || die "Can't open $filename: $!"; +$content = join('', <FILE>); +close(FILE); + # Test ToC +ok($output, "<ul>\n<li>Header\n</ul><h1>Header</h1>"); + + +#--- 6. empty toc ------------------------------------------------------------- + +$tocGenerator->generate($toc, ""); +$tocInsertor->insert($toc, "", { + 'output' => \$output, + 'doGenerateToc' => 0 +}); +ok($output, ""); + + +#--- TestAfterDeclaration() --------------------------------------------------- +# function: Test putting HTML comment after declaration. + +sub TestAfterDeclaration { + # Create objects + my $toc = HTML::Toc->new(); + my $tocInsertor = HTML::TocInsertor->new(); + my $output; + + # Set ToC options + $toc->setOptions({ + 'insertionPoint' => "after <!ToC>", + }); + # Generate ToC + $tocInsertor->insert($toc, <<EOT, {'output' => \$output}); +<!ToC><body> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> +</body> +EOT + # Test ToC + ok($output, <<EOT); +<!ToC> +<!-- Table of Contents generated by Perl - HTML::Toc --> +<ul> + <li><a href=#h-1>Appendix</a> + <ul> + <li><a href=#h-1.1>Appendix Paragraph</a> + </ul> + <li><a href=#h-2>Appendix</a> + <ul> + <li><a href=#h-2.1>Appendix Paragraph</a> + </ul> +</ul> +<!-- End of generated Table of Contents --> +<body> + <a name=h-1><h1>Appendix</h1></a> + <a name=h-1.1><h2>Appendix Paragraph</h2></a> + <a name=h-2><h1>Appendix</h1></a> + <a name=h-2.1><h2>Appendix Paragraph</h2></a> +</body> +EOT +} # TestAfterDeclaration() + + +#--- TestNumberingStyle() ----------------------------------------------------- +# function: Test numberingstyle. + +sub TestNumberingStyle { + # Create objects + my $toc = HTML::Toc->new(); + my $tocInsertor = HTML::TocInsertor->new(); + my $output; + + # Set ToC options + $toc->setOptions({ + 'numberingStyle' => 'lower-alpha', + 'doNumberToken' => 1, + 'tokenToToc' => [{ + 'tokenBegin' => '<h1>', + }, { + 'tokenBegin' => '<h2>', + 'level' => 2, + 'numberingStyle' => 'upper-alpha' + }, { + 'tokenBegin' => '<h3>', + 'level' => 3, + 'numberingStyle' => 'decimal' + }] + }); + # Generate ToC + $tocInsertor->insert($toc, <<EOT, {'output' => \$output}); +<body> + <h1>Chapter</h1> + <h2>Paragraph</h2> + <h3>Paragraph</h3> + <h3>Paragraph</h3> + <h3>Paragraph</h3> +</body> +EOT + # Test ToC + ok($output, <<EOT); +<body> +<!-- Table of Contents generated by Perl - HTML::Toc --> +<ul> + <li><a href=#h-a>Chapter</a> + <ul> + <li><a href=#h-a.A>Paragraph</a> + <ul> + <li><a href=#h-a.A.1>Paragraph</a> + <li><a href=#h-a.A.2>Paragraph</a> + <li><a href=#h-a.A.3>Paragraph</a> + </ul> + </ul> +</ul> +<!-- End of generated Table of Contents --> + + <a name=h-a><h1>a Chapter</h1></a> + <a name=h-a.A><h2>a.A Paragraph</h2></a> + <a name=h-a.A.1><h3>a.A.1 Paragraph</h3></a> + <a name=h-a.A.2><h3>a.A.2 Paragraph</h3></a> + <a name=h-a.A.3><h3>a.A.3 Paragraph</h3></a> +</body> +EOT +} # TestNumberingStyle() + + +#--- TestReplaceComment() ----------------------------------------------------- +# function: Test replacing HTML comment with ToC. + +sub TestReplaceComment { + # Create objects + my $toc = HTML::Toc->new(); + my $tocInsertor = HTML::TocInsertor->new(); + my $output; + + # Set ToC options + $toc->setOptions({ + 'insertionPoint' => "replace <!-- ToC -->" + }); + # Generate ToC + $tocInsertor->insert($toc, <<EOT, {'output' => \$output}); +<!-- ToC --> +<body> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> +</body> +EOT + # Test ToC + ok($output, <<EOT); + +<!-- Table of Contents generated by Perl - HTML::Toc --> +<ul> + <li><a href=#h-1>Appendix</a> + <ul> + <li><a href=#h-1.1>Appendix Paragraph</a> + </ul> + <li><a href=#h-2>Appendix</a> + <ul> + <li><a href=#h-2.1>Appendix Paragraph</a> + </ul> +</ul> +<!-- End of generated Table of Contents --> + +<body> + <a name=h-1><h1>Appendix</h1></a> + <a name=h-1.1><h2>Appendix Paragraph</h2></a> + <a name=h-2><h1>Appendix</h1></a> + <a name=h-2.1><h2>Appendix Paragraph</h2></a> +</body> +EOT +} # TestReplaceComment() + + +#--- TestReplaceText() ----------------------------------------------------- +# function: Test replacing HTML comment with ToC. + +sub TestReplaceText { + # Create objects + my $toc = HTML::Toc->new(); + my $tocInsertor = HTML::TocInsertor->new(); + my $output; + + # Set ToC options + $toc->setOptions({ + 'insertionPoint' => "replace ToC will be placed here[,]" + }); + # Generate ToC + $tocInsertor->insert($toc, <<EOT, {'output' => \$output}); +The ToC will be placed here, overnight. +<body> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> + <h1>Appendix</h1> + <h2>Appendix Paragraph</h2> +</body> +EOT + # Test ToC + ok($output, <<EOT); + +<!-- Table of Contents generated by Perl - HTML::Toc --> +<ul> + <li><a href=#h-1>Appendix</a> + <ul> + <li><a href=#h-1.1>Appendix Paragraph</a> + </ul> + <li><a href=#h-2>Appendix</a> + <ul> + <li><a href=#h-2.1>Appendix Paragraph</a> + </ul> +</ul> +<!-- End of generated Table of Contents --> +<body> + <a name=h-1><h1>Appendix</h1></a> + <a name=h-1.1><h2>Appendix Paragraph</h2></a> + <a name=h-2><h1>Appendix</h1></a> + <a name=h-2.1><h2>Appendix Paragraph</h2></a> +</body> +EOT +} # TestReplaceText() + + + # 7. Test 'numberingStyle' +TestNumberingStyle(); + # 8. Test replace comment +TestReplaceComment(); + # 9. Test after declaration +TestAfterDeclaration(); + # 10. Test replace text +TestReplaceText(); |