195 lines
4.6 KiB
Perl
195 lines
4.6 KiB
Perl
|
#--- 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();
|