ref: 5771276fda2c0f64b734c7b6f654ac842a383ec4
dir: /examples/includes/HTML-Toc-0.91/t/generate.t/
#--- generate.t --------------------------------------------------------------- # function: Test ToC generation. use strict; use Test; BEGIN { plan tests => 13; } use HTML::Toc; use HTML::TocGenerator; my ($filename); my $toc = HTML::Toc->new; my $tocGenerator = HTML::TocGenerator->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'; <h1>Header</h1> EOT close(FILE); } END { # Remove test file unlink($filename) or warn "Can't unlink $filename: $!"; } #--- 1. generate -------------------------------------------------------------- $tocGenerator->generate($toc, "<h1>Header</h1>"); ok($toc->format(), "<ul>\n<li>Header\n</ul>"); #--- 2. generateFromFile ------------------------------------------------------ $tocGenerator->generateFromFile($toc, $filename); ok($toc->format(), "<ul>\n<li>Header\n</ul>"); #--- 3. generateFromFiles ----------------------------------------------------- $tocGenerator->generateFromFile($toc, [$filename, $filename]); ok($toc->format(), "<ul>\n<li>Header\n<li>Header\n</ul>"); #--- 4. doLinkToToken ----------------------------------------------------- $toc->setOptions({'doLinkToToken' => 1}); $tocGenerator->generateFromFile($toc, $filename, {'globalGroups' => 1}); ok($toc->format(), "<ul>\n<li><a href=#h-1>Header</a>\n</ul>"); #--- 5. doLinkToFile ------------------------------------------------------- $toc->setOptions({'doLinkToFile' => 1}); $tocGenerator->generateFromFile($toc, $filename); ok($toc->format(), "<ul>\n<li><a href=$filename#h-1>Header</a>\n</ul>"); #--- 6. templateAnchorHrefBegin ----------------------------------------------- # Set options $toc->setOptions({'templateAnchorHrefBegin' => '"test-$file"'}); # Generate ToC $tocGenerator->generateFromFile($toc, $filename); # Test ToC ok($toc->format(), "<ul>\n<li>test-".$filename."Header</a>\n</ul>"); # Reset options $toc->setOptions({'templateAnchorHrefBegin' => undef}); #--- 7. templateAnchorHrefBegin function -------------------------------------- sub AssembleAnchorHrefBegin { # Get arguments my ($aFile, $aGroupId, $aLevel, $aNode) = @_; # Return value return $aFile . $aGroupId . $aLevel . $aNode; } # AssembleAnchorHrefBegin() # Set options $toc->setOptions({'templateAnchorHrefBegin' => \&AssembleAnchorHrefBegin}); # Generate ToC $tocGenerator->generateFromFile($toc, $filename); # Test ToC ok($toc->format(), "<ul>\n<li>".$filename."h11Header</a>\n</ul>"); # Reset options $toc->setOptions({'templateAnchorHrefBegin' => undef}); #--- 8. levelToToc no levels available --------------------------------------- $toc->setOptions({'levelToToc' => '2'}); $tocGenerator->generate($toc, "<h1>Header</h1>"); ok($toc->format(), ""); #--- 9. levelToToc level 1 --------------------------------------------------- # Set options $toc->setOptions({ 'levelToToc' => '1', 'doLinkToToken' => 0, }); $tocGenerator->generate($toc, "<h1>Header1</h1>\n<h2>Header2</h2>"); ok($toc->format(), "<ul>\n<li>Header1\n</ul>"); #--- 10. levelToToc level 2 -------------------------------------------------- # Set options $toc->setOptions({ 'levelToToc' => '2', 'doLinkToToken' => 0, }); $tocGenerator->generate($toc, "<h1>Header1</h1>\n<h2>Header2</h2>"); ok($toc->format(), "<ul>\n<li>Header2\n</ul>"); # Restore options $toc->setOptions({ 'levelToToc' => '.*', }); #--- 11. tokenToToc empty array ---------------------------------------------- # Set options $toc->setOptions({'tokenToToc' => []}); $tocGenerator->generate($toc, "<h1>Header</h1>"); ok($toc->format(), ""); #--- 12. groups nested -------------------------------------------------------- $toc->setOptions({ 'doNestGroup' => 1, 'tokenToToc' => [ { 'level' => 1, 'tokenBegin' => '<h1 class=-appendix>' }, { 'groupId' => 'appendix', 'level' => 1, 'tokenBegin' => '<h1 class=appendix>' } ] }); $tocGenerator->generate( $toc, "<h1>Header1</h1>\n<h1 class=appendix>Appendix</h1>" ); ok($toc->format() . "\n", <<'EOT'); <ul> <li>Header1 <ul> <li>Appendix </ul> </ul> EOT #--- 13. groups not nested ---------------------------------------------------- $toc->setOptions({ 'doNestGroup' => 0, 'tokenToToc' => [ { 'level' => 1, 'tokenBegin' => '<h1 class=-appendix>' }, { 'groupId' => 'appendix', 'level' => 1, 'tokenBegin' => '<h1 class=appendix>' } ] }); $tocGenerator->generate( $toc, "<h1>Header1</h1>\n<h1 class=appendix>Appendix</h1>" ); ok($toc->format() . "\n", <<'EOT'); <ul> <li>Header1 </ul> <ul> <li>Appendix </ul> EOT