ref: 1b27e93cd13ff60798e31634ddb362fa7aa9749d
dir: /examples/includes/HTML-Toc-0.91/t/insert.t/
#--- 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();