#--- 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';

Header

EOT close(FILE); } END { # Remove test file unlink($filename) or warn "Can't unlink $filename: $!"; } #--- 1. generate -------------------------------------------------------------- $tocGenerator->generate($toc, "

Header

"); ok($toc->format(), ""); #--- 2. generateFromFile ------------------------------------------------------ $tocGenerator->generateFromFile($toc, $filename); ok($toc->format(), ""); #--- 3. generateFromFiles ----------------------------------------------------- $tocGenerator->generateFromFile($toc, [$filename, $filename]); ok($toc->format(), ""); #--- 4. doLinkToToken ----------------------------------------------------- $toc->setOptions({'doLinkToToken' => 1}); $tocGenerator->generateFromFile($toc, $filename, {'globalGroups' => 1}); ok($toc->format(), ""); #--- 5. doLinkToFile ------------------------------------------------------- $toc->setOptions({'doLinkToFile' => 1}); $tocGenerator->generateFromFile($toc, $filename); ok($toc->format(), ""); #--- 6. templateAnchorHrefBegin ----------------------------------------------- # Set options $toc->setOptions({'templateAnchorHrefBegin' => '"test-$file"'}); # Generate ToC $tocGenerator->generateFromFile($toc, $filename); # Test ToC ok($toc->format(), ""); # 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(), ""); # Reset options $toc->setOptions({'templateAnchorHrefBegin' => undef}); #--- 8. levelToToc no levels available --------------------------------------- $toc->setOptions({'levelToToc' => '2'}); $tocGenerator->generate($toc, "

Header

"); ok($toc->format(), ""); #--- 9. levelToToc level 1 --------------------------------------------------- # Set options $toc->setOptions({ 'levelToToc' => '1', 'doLinkToToken' => 0, }); $tocGenerator->generate($toc, "

Header1

\n

Header2

"); ok($toc->format(), ""); #--- 10. levelToToc level 2 -------------------------------------------------- # Set options $toc->setOptions({ 'levelToToc' => '2', 'doLinkToToken' => 0, }); $tocGenerator->generate($toc, "

Header1

\n

Header2

"); ok($toc->format(), ""); # Restore options $toc->setOptions({ 'levelToToc' => '.*', }); #--- 11. tokenToToc empty array ---------------------------------------------- # Set options $toc->setOptions({'tokenToToc' => []}); $tocGenerator->generate($toc, "

Header

"); ok($toc->format(), ""); #--- 12. groups nested -------------------------------------------------------- $toc->setOptions({ 'doNestGroup' => 1, 'tokenToToc' => [ { 'level' => 1, 'tokenBegin' => '

' }, { 'groupId' => 'appendix', 'level' => 1, 'tokenBegin' => '

' } ] }); $tocGenerator->generate( $toc, "

Header1

\n

Appendix

" ); ok($toc->format() . "\n", <<'EOT'); EOT #--- 13. groups not nested ---------------------------------------------------- $toc->setOptions({ 'doNestGroup' => 0, 'tokenToToc' => [ { 'level' => 1, 'tokenBegin' => '

' }, { 'groupId' => 'appendix', 'level' => 1, 'tokenBegin' => '

' } ] }); $tocGenerator->generate( $toc, "

Header1

\n

Appendix

" ); ok($toc->format() . "\n", <<'EOT'); EOT