| #--- options.t ---------------------------------------------------------------- |
| # function: Test HTML::ToC. In particular test the available options. |
| |
| use strict; |
| use Test; |
| |
| BEGIN { plan tests => 5; } |
| |
| use HTML::Toc; |
| use HTML::TocGenerator; |
| use HTML::TocInsertor; |
| use HTML::TocUpdator; |
| |
| my ($filename); |
| |
| BEGIN { |
| # Create test file |
| $filename = "file$$.htm"; |
| die "$filename is already there" if -e $filename; |
| } |
| |
| |
| END { |
| # Remove test file |
| unlink($filename) or warn "Can't unlink $filename: $!"; |
| } |
| |
| |
| #--- TestAttributeToExcludeToken() -------------------------------------------- |
| # function: Test 'HTML::Toc' option 'attributeToExcludeToken' |
| |
| sub TestAttributeToExcludeToken { |
| # Assemble test file |
| open(FILE, ">$filename") || die "Can't create $filename: $!"; |
| print FILE <<'EOT'; close(FILE); |
| <body> |
| <h1>Chapter 1</h1> |
| <h1 class=appendix>Appendix</h1> |
| </body> |
| EOT |
| |
| # Create objects |
| my $toc = HTML::Toc->new(); |
| my $tocGenerator = HTML::TocGenerator->new(); |
| |
| $toc->setOptions({ |
| 'attributeToExcludeToken' => 'foo', |
| 'tokenToToc' => [{ |
| 'tokenBegin' => '<h1 class=foodix>' |
| }] |
| }); |
| # Generate ToC |
| $tocGenerator->generateFromFile($toc, $filename); |
| # Test ToC |
| ok($toc->format(), <<EOT); |
| |
| <!-- Table of Contents generated by Perl - HTML::Toc --> |
| <ul> |
| <li><a href=#h-1>Chapter 1</a> |
| </ul> |
| <!-- End of generated Table of Contents --> |
| EOT |
| } # TestAttributeToExcludeToken() |
| |
| |
| #--- TestAttributeToTocToken() ------------------------------------------------ |
| # function: Test 'HTML::Toc' option 'attributeToTocToken' |
| |
| sub TestAttributeToTocToken { |
| # Assemble test file |
| open(FILE, ">$filename") || die "Can't create $filename: $!"; |
| print FILE <<'EOT'; close(FILE); |
| <body> |
| <img src=test.gif alt=Picture> |
| </body> |
| </html> |
| EOT |
| |
| # Create objects |
| my $toc = HTML::Toc->new(); |
| my $tocGenerator = HTML::TocGenerator->new(); |
| |
| $toc->setOptions({ |
| 'attributeToTocToken' => 'foo', |
| 'tokenToToc' => [{ |
| 'groupId' => 'image', |
| 'tokenBegin' => '<img alt=foo>' |
| }], |
| }); |
| # Generate ToC |
| $tocGenerator->generateFromFile($toc, $filename); |
| # Test ToC |
| ok($toc->format(), <<EOT); |
| |
| <!-- Table of Contents generated by Perl - HTML::Toc --> |
| <ul> |
| <li><a href=#image-1>Picture</a> |
| </ul> |
| <!-- End of generated Table of Contents --> |
| EOT |
| } # TestAttributeToTocToken() |
| |
| |
| #--- TestNumberingStyleDecimal ------------------------------------------------ |
| # function: Test 'decimal' numbering style. |
| |
| sub TestNumberingStyleDecimal { |
| # Local variables |
| my $output; |
| # Create objects |
| my $toc = HTML::Toc->new(); |
| my $tocInsertor = HTML::TocInsertor->new(); |
| |
| $toc->setOptions({ |
| 'doNumberToken' => 1, |
| 'tokenToToc' => [{ |
| 'level' => 1, |
| 'tokenBegin' => '<h1>', |
| 'numberingStyle' => 'decimal' |
| }], |
| }); |
| # Generate ToC |
| $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output}); |
| # Test ToC |
| ok("$output\n", <<EOT); |
| <a name=h-1><h1>1 Header</h1></a> |
| EOT |
| } # TestNumberingStyleDecimal() |
| |
| |
| #--- TestNumberingStyleLowerAlpha --------------------------------------------- |
| # function: Test 'lower-alpha' numbering style. |
| |
| sub TestNumberingStyleLowerAlpha { |
| # Local variables |
| my $output; |
| # Create objects |
| my $toc = HTML::Toc->new(); |
| my $tocInsertor = HTML::TocInsertor->new(); |
| |
| $toc->setOptions({ |
| 'doNumberToken' => 1, |
| 'tokenToToc' => [{ |
| 'level' => 1, |
| 'tokenBegin' => '<h1>', |
| 'numberingStyle' => 'lower-alpha' |
| }], |
| }); |
| # Generate ToC |
| $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output}); |
| # Test ToC |
| ok("$output\n", <<EOT); |
| <a name=h-a><h1>a Header</h1></a> |
| EOT |
| } # TestNumberingStyleLowerAlpha() |
| |
| |
| #--- TestNumberingStyleUpperAlpha --------------------------------------------- |
| # function: Test 'upper-alpha' numbering style. |
| |
| sub TestNumberingStyleUpperAlpha { |
| # Local variables |
| my $output; |
| # Create objects |
| my $toc = HTML::Toc->new(); |
| my $tocInsertor = HTML::TocInsertor->new(); |
| |
| $toc->setOptions({ |
| 'doNumberToken' => 1, |
| 'tokenToToc' => [{ |
| 'level' => 1, |
| 'tokenBegin' => '<h1>', |
| 'numberingStyle' => 'upper-alpha' |
| }], |
| }); |
| # Generate ToC |
| $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output}); |
| # Test ToC |
| ok("$output\n", <<EOT); |
| <a name=h-A><h1>A Header</h1></a> |
| EOT |
| } # TestNumberingStyleUpperAlpha() |
| |
| |
| # Test 'attributeToTocToken' |
| TestAttributeToTocToken(); |
| # Test 'attributeToExcludeToken' |
| TestAttributeToExcludeToken(); |
| # Test 'numberingStyleDecimal' |
| TestNumberingStyleDecimal(); |
| # Test 'numberingStyleLowerAlpha' |
| TestNumberingStyleLowerAlpha(); |
| # Test 'numberingStyleUpperAlpha' |
| TestNumberingStyleUpperAlpha(); |