710 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			710 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #--- podExamples.t ------------------------------------------------------------
 | |
| # function: Test HTML::ToC.  In particular test the examples as described in 
 | |
| #           the POD documentation.
 | |
| 
 | |
| use strict;
 | |
| use Test;
 | |
| 
 | |
| BEGIN { plan tests => 13; }
 | |
| 
 | |
| use HTML::Toc;
 | |
| use HTML::TocGenerator;
 | |
| use HTML::TocInsertor;
 | |
| use HTML::TocUpdator;
 | |
| 
 | |
| my ($filename, $filename2);
 | |
| 	
 | |
| 
 | |
| BEGIN {
 | |
| 		# Create test file
 | |
| 	$filename = "tmp.htm";
 | |
| 	die "$filename is already there" if -e $filename;
 | |
| 		# Create test file 2
 | |
| 	$filename2 = "tmp2.htm";
 | |
| 	die "$filename2 is already there" if -e $filename2;
 | |
| }
 | |
| 
 | |
| 
 | |
| END {
 | |
| 		# Remove test file
 | |
| 	unlink($filename) or warn "Can't unlink $filename: $!";
 | |
| 		# Remove test file 2
 | |
| 	unlink($filename2) or warn "Can't unlink $filename2: $!";
 | |
| }
 | |
| 
 | |
| 
 | |
| #--- TestExtendFromFile() --------------------------------------------------
 | |
| # function: Test 'HTML::TocGenerator->extendFromFile()
 | |
| 
 | |
| sub TestExtendFromFile {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <body>
 | |
|    <h1>Chapter of document 1</h1>
 | |
| </body>
 | |
| EOT
 | |
| 
 | |
| 		# Assemble test file 2
 | |
| 	open(FILE, ">$filename2") || die "Can't create $filename2: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body>
 | |
|    <h1>Chapter of document 2</h1>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc          = HTML::Toc->new();
 | |
| 	my $tocGenerator = HTML::TocGenerator->new();
 | |
| 	
 | |
| 		# Set ToC options
 | |
|    $toc->setOptions({'doLinkToFile' => 1});
 | |
| 		# Generate ToC
 | |
| 	$tocGenerator->generateFromFile($toc, $filename);
 | |
| 	$tocGenerator->extendFromFile($toc, $filename2);
 | |
| 		# Test ToC
 | |
| 	ok($toc->format(), <<EOT);
 | |
| 
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=tmp.htm#h-1>Chapter of document 1</a>
 | |
|    <li><a href=tmp2.htm#h-2>Chapter of document 2</a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| EOT
 | |
| }  # TestExtendFromFile()
 | |
| 
 | |
| 
 | |
| #--- TestGenerateFromFiles() --------------------------------------------------
 | |
| # function: Test 'HTML::TocGenerator->generateFromFile()
 | |
| 
 | |
| sub TestGenerateFromFiles {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <body>
 | |
|    <h1>Chapter of document 1</h1>
 | |
| </body>
 | |
| EOT
 | |
| 
 | |
| 		# Assemble test file 2
 | |
| 	open(FILE, ">$filename2") || die "Can't create $filename2: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body>
 | |
|    <h1>Chapter of document 2</h1>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc          = HTML::Toc->new();
 | |
| 	my $tocGenerator = HTML::TocGenerator->new();
 | |
| 	
 | |
| 		# Set ToC options
 | |
|    $toc->setOptions({'doLinkToFile' => 1});
 | |
| 		# Generate ToC
 | |
| 	$tocGenerator->generateFromFile($toc, [$filename, $filename2]);
 | |
| 		# Test ToC
 | |
| 	ok($toc->format(), <<EOT);
 | |
| 
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=tmp.htm#h-1>Chapter of document 1</a>
 | |
|    <li><a href=tmp2.htm#h-2>Chapter of document 2</a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| EOT
 | |
| }  # TestGenerateFromFiles()
 | |
| 
 | |
| 
 | |
| #--- TestGenerateFromFiles() --------------------------------------------------
 | |
| # function: Test 'HTML::TocGenerator->generateFromFile() using multiple files.
 | |
| 
 | |
| sub TestGenerateFromFile {
 | |
| 		# Assemble test file 1
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body>
 | |
|    <h1>Chapter</h1>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc          = HTML::Toc->new();
 | |
| 	my $tocGenerator = HTML::TocGenerator->new();
 | |
| 	
 | |
| 		# 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</a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| EOT
 | |
| }  # TestGenerateFromFile()
 | |
| 
 | |
| 
 | |
| #--- TestInsertIntoFile() -----------------------------------------------------
 | |
| # function: Test 'HTML::TocInsertor->insertIntoFile()
 | |
| 
 | |
| sub TestInsertIntoFile {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body>
 | |
|    <h1>Chapter</h1>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc         = HTML::Toc->new();
 | |
| 	my $tocInsertor = HTML::TocInsertor->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Generate ToC
 | |
| 	$tocInsertor->insertIntoFile($toc, $filename, {'output' => \$output});
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <html>
 | |
| <body>
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
|    <a name=h-1><h1>Chapter</h1></a>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| }  # TestInsertIntoFile()
 | |
| 
 | |
| 
 | |
| #--- TestInsertIntoFileUsingTocUpdator() --------------------------------------
 | |
| # function: Test 'HTML::TocUpdator->insertIntoFile()
 | |
| 
 | |
| sub TestInsertIntoFileUsingTocUpdator {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body>
 | |
|    <h1>
 | |
|    Chapter
 | |
|    </h1>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc        = HTML::Toc->new();
 | |
| 	my $tocUpdator = HTML::TocUpdator->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Generate ToC
 | |
| 	$tocUpdator->insertIntoFile($toc, $filename, {'output' => \$output});
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <html>
 | |
| <body><!-- #BeginToc -->
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#h-1> Chapter </a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| <!-- #EndToc -->
 | |
|    <!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1>
 | |
|    Chapter
 | |
|    </h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| }  # TestInsertIntoFileUsingTocUpdator()
 | |
| 
 | |
| 
 | |
| #--- TestGlobalGroups0() ------------------------------------------------------
 | |
| # function: Test 'HTML::TocGenerator' option 'doUseGroupsGlobal = 0'.
 | |
| 
 | |
| sub TestGlobalGroups0 {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <h1>Chapter</h1>
 | |
| <h2>Paragraph</h2>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc1         = HTML::Toc->new();
 | |
| 	my $toc2         = HTML::Toc->new();
 | |
| 	my $tocGenerator = HTML::TocGenerator->new();
 | |
| 
 | |
| 		# Set options
 | |
| 	$toc1->setOptions({
 | |
| 		'header'      => '',
 | |
| 		'footer'      => '',
 | |
| 		'tokenToToc' => [{'tokenBegin' => '<h1>'}]
 | |
| 	});
 | |
| 	$toc2->setOptions({
 | |
| 		'header'      => '',
 | |
| 		'footer'      => '',
 | |
| 		'tokenToToc' => [{'tokenBegin' => '<h2>'}]
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocGenerator->generateFromFile([$toc1, $toc2], $filename);
 | |
| 		# Test ToC
 | |
| 	ok($toc1->format() . $toc2->format() . "\n", <<'EOT');
 | |
| <ul>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
| </ul><ul>
 | |
|    <li><a href=#h-1>Paragraph</a>
 | |
| </ul>
 | |
| EOT
 | |
| }	# TestGlobalGroups0()
 | |
| 
 | |
| 
 | |
| #--- TestGlobalGroups1() ------------------------------------------------------
 | |
| # function: Test 'HTML::TocGenerator' option 'doUseGroupsGlobal = 0'.
 | |
| 
 | |
| sub TestGlobalGroups1 {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT';
 | |
| <h1>Chapter</h1>
 | |
| <h2>Paragraph</h2>
 | |
| EOT
 | |
| 	close(FILE);
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc1         = HTML::Toc->new();
 | |
| 	my $toc2         = HTML::Toc->new();
 | |
| 	my $tocGenerator = HTML::TocGenerator->new();
 | |
| 
 | |
| 		# Set options
 | |
| 	$toc1->setOptions({
 | |
| 		'header'      => '',
 | |
| 		'footer'      => '',
 | |
| 		'tokenToToc' => [{'tokenBegin' => '<h1>'}]
 | |
| 	});
 | |
| 	$toc2->setOptions({
 | |
| 		'header'      => '',
 | |
| 		'footer'      => '',
 | |
| 		'tokenToToc' => [{'tokenBegin' => '<h2>'}]
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocGenerator->generateFromFile(
 | |
| 		[$toc1, $toc2], $filename, {'doUseGroupsGlobal' => 1}
 | |
| 	);
 | |
| 		# Test ToC
 | |
| 	ok($toc1->format() . $toc2->format() . "\n", <<'EOT');
 | |
| <ul>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
| </ul><ul>
 | |
|    <li><a href=#h-2>Paragraph</a>
 | |
| </ul>
 | |
| EOT
 | |
| }	# TestGlobalGroups1()
 | |
| 
 | |
| 
 | |
| #--- TestMultipleGroupsAppendix() ---------------------------------------------
 | |
| # function: Test multiple ToCs
 | |
| 
 | |
| sub TestMultipleGroupsAppendix() {
 | |
| 		# Create objects
 | |
| 	my $toc         = HTML::Toc->new();
 | |
| 	my $tocInsertor = HTML::TocInsertor->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Set ToC options
 | |
| 	$toc->setOptions({
 | |
| 		'tokenToToc' => [{
 | |
| 				'tokenBegin' => '<h1 class=-appendix>'
 | |
| 			}, {
 | |
| 				'tokenBegin' => '<h2 class=-appendix>',
 | |
| 				'level'      => 2
 | |
| 			}, {
 | |
| 				'groupId'    => 'appendix',
 | |
| 				'tokenBegin' => '<h1 class=appendix>',
 | |
| 			}, {
 | |
| 				'groupId'    => 'appendix',
 | |
| 				'tokenBegin' => '<h2 class=appendix>',
 | |
| 				'level'      => 2
 | |
| 			}],
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocInsertor->insert($toc, <<EOT, {'output' => \$output});
 | |
| <body>
 | |
|    <h1>Chapter</h1>
 | |
|    <h2>Paragraph</h2>
 | |
|    <h3>Subparagraph</h3>
 | |
|    <h1>Chapter</h1>
 | |
|    <h1 class=appendix>Appendix Chapter</h1>
 | |
|    <h2 class=appendix>Appendix Paragraph</h2>
 | |
| </body>
 | |
| EOT
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <body>
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
|    <ul>
 | |
|       <li><a href=#h-1.1>Paragraph</a>
 | |
|    </ul>
 | |
|    <li><a href=#h-2>Chapter</a>
 | |
| </ul>
 | |
| <ul>
 | |
|    <li><a href=#appendix-1>Appendix Chapter</a>
 | |
|    <ul>
 | |
|       <li><a href=#appendix-1.1>Appendix Paragraph</a>
 | |
|    </ul>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
|    <a name=h-1><h1>Chapter</h1></a>
 | |
|    <a name=h-1.1><h2>Paragraph</h2></a>
 | |
|    <h3>Subparagraph</h3>
 | |
|    <a name=h-2><h1>Chapter</h1></a>
 | |
|    <a name=appendix-1><h1 class=appendix>Appendix Chapter</h1></a>
 | |
|    <a name=appendix-1.1><h2 class=appendix>Appendix Paragraph</h2></a>
 | |
| </body>
 | |
| EOT
 | |
| }  # TestMultipleGroupsAppendix()
 | |
| 
 | |
| 
 | |
| #--- TestMultipleGroupsPart() -------------------------------------------------
 | |
| # function: Test multiple ToCs
 | |
| 
 | |
| sub TestMultipleGroupsPart() {
 | |
| 		# Create objects
 | |
| 	my $toc         = HTML::Toc->new();
 | |
| 	my $tocInsertor = HTML::TocInsertor->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Set ToC options
 | |
| 	$toc->setOptions({
 | |
| 		'tokenToToc' => [{
 | |
| 				'tokenBegin' => '<h1 class=-part>'
 | |
| 			}, {
 | |
| 				'tokenBegin' => '<h2 class=-part>',
 | |
| 				'level'      => 2,
 | |
| 			}, {
 | |
| 				'groupId'        => 'part',
 | |
| 				'tokenBegin'     => '<h1 class=part>',
 | |
| 				'level'          => 1,
 | |
| 				'doNumberToken'  => 1,
 | |
| 				'numberingStyle' => 'upper-alpha'
 | |
| 			}]
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocInsertor->insert($toc, <<EOT, {'output' => \$output});
 | |
| <body>
 | |
|    <h1 class=part>First Part</h1>
 | |
|    <h1>Chapter</h1>
 | |
|    <h2>Paragraph</h2>
 | |
|    <h1 class=part>Second Part</h1>
 | |
|    <h1>Chapter</h1>
 | |
|    <h2>Paragraph</h2>
 | |
| </body>
 | |
| EOT
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <body>
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#part-A>First Part</a>
 | |
| </ul>
 | |
| <ul>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
|    <ul>
 | |
|       <li><a href=#h-1.1>Paragraph</a>
 | |
|    </ul>
 | |
| </ul>
 | |
| <ul>
 | |
|    <li><a href=#part-B>Second Part</a>
 | |
| </ul>
 | |
| <ul>
 | |
|    <li><a href=#h-2>Chapter</a>
 | |
|    <ul>
 | |
|       <li><a href=#h-2.1>Paragraph</a>
 | |
|    </ul>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
|    <a name=part-A><h1 class=part>A  First Part</h1></a>
 | |
|    <a name=h-1><h1>Chapter</h1></a>
 | |
|    <a name=h-1.1><h2>Paragraph</h2></a>
 | |
|    <a name=part-B><h1 class=part>B  Second Part</h1></a>
 | |
|    <a name=h-2><h1>Chapter</h1></a>
 | |
|    <a name=h-2.1><h2>Paragraph</h2></a>
 | |
| </body>
 | |
| EOT
 | |
| }  # TestMultipleGroupsPart()
 | |
| 
 | |
| 
 | |
| #--- TestMultipleTocs() -------------------------------------------------------
 | |
| # function: Test multiple ToCs
 | |
| 
 | |
| sub TestMultipleTocs() {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <body>
 | |
|    <h1>Header One</h1>
 | |
|    <img src=test1.gif alt="First picture">
 | |
|    <h2>Paragraph One</h2>
 | |
|    <img src=test2.gif alt="Second picture">
 | |
| </body>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc1        = HTML::Toc->new();
 | |
| 	my $toc2        = HTML::Toc->new();
 | |
| 	my $tocInsertor = HTML::TocInsertor->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Set ToC options
 | |
| 	$toc2->setOptions({
 | |
| 		'tokenToToc'             => [{
 | |
| 			'groupId'    => 'image',
 | |
| 			'tokenBegin' => '<img alt=@>'
 | |
| 		}],
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocInsertor->insertIntoFile(
 | |
| 		[$toc1, $toc2], $filename, {'output' => \$output}
 | |
| 	);
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <body>
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#h-1>Header One</a>
 | |
|    <ul>
 | |
|       <li><a href=#h-1.1>Paragraph One</a>
 | |
|    </ul>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#image-1>First picture</a>
 | |
|    <li><a href=#image-2>Second picture</a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
|    <a name=h-1><h1>Header One</h1></a>
 | |
|    <a name=image-1><img src=test1.gif alt="First picture"></a>
 | |
|    <a name=h-1.1><h2>Paragraph One</h2></a>
 | |
|    <a name=image-2><img src=test2.gif alt="Second picture"></a>
 | |
| </body>
 | |
| EOT
 | |
| }  # TestMultipleTocs()
 | |
| 
 | |
| 
 | |
| #--- TestSpecifyNumberedList() ------------------------------------------------
 | |
| # function: Test specifying numbered list.
 | |
| 
 | |
| sub TestSpecifyNumberedList {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <body>
 | |
|    <h1>Chapter</h1>
 | |
| 	<h2>Paragraph</h2>
 | |
| </body>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc        = HTML::Toc->new();
 | |
|    my $tocGenerator = HTML::TocGenerator->new();
 | |
| 	
 | |
| 		# Set ToC options
 | |
| 	$toc->setOptions({
 | |
| 		'templateLevelBegin' => '"<ol>\n"',
 | |
| 		'templateLevelEnd'   => '"</ol>\n"',
 | |
| 	});
 | |
| 		# Generate ToC
 | |
| 	$tocGenerator->generateFromFile($toc, $filename);
 | |
| 		# Test ToC
 | |
| 	ok($toc->format(), <<EOT);
 | |
| 
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ol>
 | |
|    <li><a href=#h-1>Chapter</a>
 | |
|    <ol>
 | |
|       <li><a href=#h-1.1>Paragraph</a>
 | |
|    </ol>
 | |
| </ol>
 | |
| <!-- End of generated Table of Contents -->
 | |
| EOT
 | |
| }  # TestSpecifyNumberedList()
 | |
| 
 | |
| 
 | |
| #--- TestUpdateFile() ---------------------------------------------------------
 | |
| # function: Test 'HTML::TocUpdator->updateFile()'
 | |
| 
 | |
| sub TestUpdateFile {
 | |
| 		# Assemble test file
 | |
| 	open(FILE, ">$filename") || die "Can't create $filename: $!";
 | |
| 	print FILE <<'EOT'; close(FILE);
 | |
| <html>
 | |
| <body><!-- #BeginToc -->
 | |
| foo
 | |
| <!-- #EndToc -->
 | |
|    <!-- #BeginTocAnchorNameBegin -->bar<!-- #EndTocAnchorNameBegin --><h1>
 | |
|    Chapter
 | |
|    </h1><!-- #BeginTocAnchorNameEnd -->foo<!-- #EndTocAnchorNameEnd -->
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc        = HTML::Toc->new();
 | |
| 	my $tocUpdator = HTML::TocUpdator->new();
 | |
| 	my $output;
 | |
| 	
 | |
| 		# Generate ToC
 | |
| 	$tocUpdator->updateFile($toc, $filename, {'output' => \$output});
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <html>
 | |
| <body><!-- #BeginToc -->
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ul>
 | |
|    <li><a href=#h-1> Chapter </a>
 | |
| </ul>
 | |
| <!-- End of generated Table of Contents -->
 | |
| <!-- #EndToc -->
 | |
|    <!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1>
 | |
|    Chapter
 | |
|    </h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| }  # TestUpdateFile()
 | |
| 
 | |
| 
 | |
| #--- TestUsingCSS() -----------------------------------------------------------
 | |
| # function: Test multiple ToCs
 | |
| 
 | |
| sub TestUsingCSS() {
 | |
| 
 | |
| 		# Create objects
 | |
| 	my $toc          = new HTML::Toc;
 | |
| 	my $tocInsertor  = new HTML::TocInsertor;
 | |
| 	my $output;
 | |
| 
 | |
|    $toc->setOptions({
 | |
| 		'templateLevelBegin'   => '"<ol class=toc_$groupId$level>\n"',
 | |
| 		'templateLevelEnd'     => '"</ol>\n"',
 | |
| 		'doNumberToken'        => 1,
 | |
|       'tokenToToc' => [{
 | |
| 				'groupId'        => 'appendix',
 | |
|             'tokenBegin'     => '<h1>',
 | |
| 				'numberingStyle' => 'upper-alpha'
 | |
| 			}, {
 | |
| 				'groupId'        => 'appendix',
 | |
|             'tokenBegin' 	  => '<h2>',
 | |
|             'level'      	  => 2,
 | |
|          }]
 | |
|    });
 | |
| 	$tocInsertor->insert($toc, <<EOT);
 | |
| <html>
 | |
| <head>
 | |
|    <style type="text/css">
 | |
|       ol.toc_appendix1 { list-style-type: upper-alpha }
 | |
|    </style>
 | |
| </head>
 | |
| <body>
 | |
|    <h1>Appendix</h1>
 | |
|    <h2>Appendix Paragraph</h2>
 | |
|    <h1>Appendix</h1>
 | |
|    <h2>Appendix Paragraph</h2>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 		# Insert ToC
 | |
| 	$tocInsertor->insert($toc, <<EOT, {'output' => \$output});
 | |
| <html>
 | |
| <head>
 | |
|    <style type="text/css">
 | |
|       ol.toc_appendix1 { list-style-type: upper-alpha }
 | |
|    </style>
 | |
| </head>
 | |
| <body>
 | |
|    <h1>Appendix</h1>
 | |
|    <h2>Appendix Paragraph</h2>
 | |
|    <h1>Appendix</h1>
 | |
|    <h2>Appendix Paragraph</h2>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| 		# Test ToC
 | |
| 	ok($output, <<EOT);
 | |
| <html>
 | |
| <head>
 | |
|    <style type="text/css">
 | |
|       ol.toc_appendix1 { list-style-type: upper-alpha }
 | |
|    </style>
 | |
| </head>
 | |
| <body>
 | |
| <!-- Table of Contents generated by Perl - HTML::Toc -->
 | |
| <ol class=toc_appendix1>
 | |
|    <li><a href=#appendix-A>Appendix</a>
 | |
|    <ol class=toc_appendix2>
 | |
|       <li><a href=#appendix-A.1>Appendix Paragraph</a>
 | |
|    </ol>
 | |
|    <li><a href=#appendix-B>Appendix</a>
 | |
|    <ol class=toc_appendix2>
 | |
|       <li><a href=#appendix-B.1>Appendix Paragraph</a>
 | |
|    </ol>
 | |
| </ol>
 | |
| <!-- End of generated Table of Contents -->
 | |
| 
 | |
|    <a name=appendix-A><h1>A  Appendix</h1></a>
 | |
|    <a name=appendix-A.1><h2>A.1  Appendix Paragraph</h2></a>
 | |
|    <a name=appendix-B><h1>B  Appendix</h1></a>
 | |
|    <a name=appendix-B.1><h2>B.1  Appendix Paragraph</h2></a>
 | |
| </body>
 | |
| </html>
 | |
| EOT
 | |
| }  # TestUsingCSS()
 | |
| 
 | |
| 
 | |
| 	# Test 'extendFromFile()'
 | |
| TestExtendFromFile();
 | |
| 	# Test 'generateFromFile()'
 | |
| TestGenerateFromFile();
 | |
| 	# Test 'generateFromFiles()'
 | |
| TestGenerateFromFiles();
 | |
| 	# Test 'doUseGroupsGlobal = 0'
 | |
| TestGlobalGroups0();
 | |
| 	# Test 'doUseGroupsGlobal = 1'
 | |
| TestGlobalGroups1();
 | |
| 	# Test 'tocInsertor->insertIntoFile'
 | |
| TestInsertIntoFile();
 | |
| 	# Test 'tocUpdator->insertIntoFile'
 | |
| TestInsertIntoFileUsingTocUpdator();
 | |
| 	# Test additional 'appendix' group
 | |
| TestMultipleGroupsAppendix();
 | |
| 	# Test additional 'part' group
 | |
| TestMultipleGroupsPart();
 | |
| 	# Test multiple ToCs
 | |
| TestMultipleTocs();
 | |
| 	# Test specifying numbered list
 | |
| TestSpecifyNumberedList();
 | |
| 	# Test 'updateFile()'
 | |
| TestUpdateFile();
 | |
| 	# Test using CSS
 | |
| TestUsingCSS();
 | 
