summaryrefslogtreecommitdiff
path: root/examples/includes/HTML-Toc-0.91/t/insert.t
diff options
context:
space:
mode:
Diffstat (limited to 'examples/includes/HTML-Toc-0.91/t/insert.t')
-rw-r--r--examples/includes/HTML-Toc-0.91/t/insert.t336
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 &nbsp;Chapter</h1></a>
+ <a name=h-a.A><h2>a.A &nbsp;Paragraph</h2></a>
+ <a name=h-a.A.1><h3>a.A.1 &nbsp;Paragraph</h3></a>
+ <a name=h-a.A.2><h3>a.A.2 &nbsp;Paragraph</h3></a>
+ <a name=h-a.A.3><h3>a.A.3 &nbsp;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();