115 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #--- update.t -----------------------------------------------------------------
 | |
| # function: Test ToC updating.
 | |
| 
 | |
| use strict;
 | |
| use Test;
 | |
| 
 | |
| BEGIN { plan tests => 6; }
 | |
| 
 | |
| use HTML::Toc;
 | |
| use HTML::TocUpdator;
 | |
| 
 | |
| my ($output, $output2, $content, $filename);
 | |
| my $toc         = HTML::Toc->new;
 | |
| my $tocUpdator  = HTML::TocUpdator->new;
 | |
| 
 | |
| $toc->setOptions({
 | |
| 	'doLinkToToken'  => 1,
 | |
| 	'doNumberToken'  => 1,
 | |
| 	'levelIndent'    => 0,
 | |
| 	'insertionPoint' => 'before <h1>',
 | |
| 	'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'; close(FILE);
 | |
| <h1>Header</h1>
 | |
| EOT
 | |
| }
 | |
| 
 | |
| 
 | |
| END {
 | |
| 		# Remove test file
 | |
| 	unlink($filename) or warn "Can't unlink $filename: $!";
 | |
| }
 | |
| 
 | |
| 
 | |
| #--- 1. update ----------------------------------------------------------------
 | |
| 
 | |
| $tocUpdator->update($toc, "<h1>Header</h1>", {'output' => \$output});
 | |
| ok("$output\n", <<'EOT');
 | |
| <!-- #BeginToc --><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul><!-- #EndToc --><!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1  <!-- #EndTocNumber -->Header</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| EOT
 | |
| 
 | |
| #--- 2. updateFile ------------------------------------------------------------
 | |
| 
 | |
| $tocUpdator->updateFile($toc, $filename, {'output' => \$output});
 | |
| 	open(FILE, ">a.out1") || die "Can't create a.out1: $!";
 | |
| 	print FILE $output; close(FILE);
 | |
| $output2 = <<'EOT';
 | |
| <!-- #BeginToc --><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul><!-- #EndToc --><!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1  <!-- #EndTocNumber -->Header</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| EOT
 | |
| 	open(FILE, ">a.out2") || die "Can't create a.out2: $!";
 | |
| 	print FILE $output2; close(FILE);
 | |
| ok($output, $output2);
 | |
| 
 | |
| 
 | |
| #--- 3. insert ----------------------------------------------------------------
 | |
| 
 | |
| $tocUpdator->insert($toc, "<h1>Header</h1>", {'output' => \$output});
 | |
| ok("$output\n", <<'EOT');
 | |
| <!-- #BeginToc --><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul><!-- #EndToc --><!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1  <!-- #EndTocNumber -->Header</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| EOT
 | |
| 
 | |
| #--- 4. insertIntoFile --------------------------------------------------------
 | |
| 
 | |
| $tocUpdator->insertIntoFile($toc, $filename, {'output' => \$output});
 | |
| ok($output, <<'EOT');
 | |
| <!-- #BeginToc --><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul><!-- #EndToc --><!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1  <!-- #EndTocNumber -->Header</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| EOT
 | |
| 
 | |
| 
 | |
| #--- 5. update twice ----------------------------------------------------------
 | |
| 
 | |
| $tocUpdator->update($toc, "<h1>Header</h1>", {'output' => \$output});
 | |
| $tocUpdator->update($toc, $output, {'output' => \$output2});
 | |
| ok("$output\n", <<'EOT');
 | |
| <!-- #BeginToc --><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul><!-- #EndToc --><!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1  <!-- #EndTocNumber -->Header</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
 | |
| EOT
 | |
| 
 | |
| 
 | |
| #--- 6. tokens update begin & end ---------------------------------------------
 | |
| 
 | |
| $toc->setOptions({
 | |
| 	'tokenUpdateBeginOfAnchorNameBegin' => '<tocAnchorNameBegin>',
 | |
| 	'tokenUpdateEndOfAnchorNameBegin'   => '</tocAnchorNameBegin>',
 | |
| 	'tokenUpdateBeginOfAnchorNameEnd'   => '<tocAnchorNameEnd>',
 | |
| 	'tokenUpdateEndOfAnchorNameEnd'     => '</tocAnchorNameEnd>',
 | |
| 	'tokenUpdateBeginNumber'            => '<tocNumber>',
 | |
| 	'tokenUpdateEndNumber'              => '</tocNumber>',
 | |
| 	'tokenUpdateBeginToc'               => '<toc>',
 | |
| 	'tokenUpdateEndToc',                => '</toc>'
 | |
| });
 | |
| $tocUpdator->update($toc, "<h1>Header</h1>", {'output' => \$output});
 | |
| ok("$output\n", <<'EOT');
 | |
| <toc><ul>
 | |
| <li><a href=#h-1>Header</a>
 | |
| </ul></toc><tocAnchorNameBegin><a name=h-1></tocAnchorNameBegin><h1><tocNumber>1  </tocNumber>Header</h1><tocAnchorNameEnd></a></tocAnchorNameEnd>
 | |
| EOT
 | 
