• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#--- format.t -----------------------------------------------------------------
2# function: Test ToC formatting.
3
4use strict;
5use Test;
6
7BEGIN { plan tests => 6; }
8
9use HTML::Toc;
10use HTML::TocGenerator;
11use HTML::TocInsertor;
12
13my ($output, $content, $filename);
14my $toc          = HTML::Toc->new;
15my $tocGenerator = HTML::TocGenerator->new;
16my $tocInsertor  = HTML::TocInsertor->new;
17
18$toc->setOptions({
19	'doLinkToToken'  => 0,
20	'levelIndent'       => 0,
21	'insertionPoint'    => 'before <h1>',
22	'header'            => '',
23	'footer'            => '',
24});
25
26
27BEGIN {
28		# Create test file
29	$filename = "file$$.htm";
30	die "$filename is already there" if -e $filename;
31	open(FILE, ">$filename") || die "Can't create $filename: $!";
32	print FILE <<'EOT'; close(FILE);
33<h1>Header</h1>
34EOT
35}
36
37
38END {
39		# Remove test file
40	unlink($filename) or warn "Can't unlink $filename: $!";
41}
42
43
44#--- 1. templateLevelBegin ----------------------------------------------------
45
46$toc->setOptions({
47	'templateLevelBegin' => '"<ul class=toc_$groupId$level>\n"'
48});
49$tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
50ok($output, "<ul class=toc_h1>\n<li>Header\n</ul><h1>Header</h1>");
51$toc->setOptions({'templateLevelBegin' => undef});
52
53
54#--- 2. levelToToc -----------------------------------------------------------
55
56$tocGenerator->generate($toc, "<h1>Header1</h1>\n<h2>Header2</h2>");
57$toc->setOptions({'levelToToc' => '1'});
58ok($toc->format(), "<ul>\n<li>Header1\n</ul>");
59$toc->setOptions({'levelToToc' => '.*'});
60
61
62#--- 3. groupToToc -----------------------------------------------------------
63
64$toc->setOptions({
65	'tokenToToc' => [{
66		'level' => 1,
67		'tokenBegin' => '<h1 class=-foo>'
68	}, {
69		'groupId' => 'foo',
70		'level' => 1,
71		'tokenBegin' => '<h1 class=foo>'
72	}]
73});
74$tocGenerator->generate($toc, "<h1>Header1</h1>\n<h1 class=foo>Foo</h1>");
75$toc->setOptions({'groupToToc' => 'foo'});
76ok($toc->format(), "<ul>\n<li>Foo\n</ul>");
77$toc->setOptions({'groupToToc' => '.*'});
78
79
80#--- 4. header & footer -------------------------------------------------------
81
82$toc->setOptions({
83	'tokenToToc' => [{
84		'level'      => 1,
85		'tokenBegin' => '<h1>'
86	}],
87	'header' => '<!-- TocHeader -->',
88	'footer' => '<!-- TocFooter -->',
89});
90$tocInsertor->insert($toc, "<h1>Header1</h1>", {'output' => \$output});
91ok("$output\n", <<EOT);
92<!-- TocHeader --><ul>
93<li>Header1
94</ul><!-- TocFooter --><h1>Header1</h1>
95EOT
96
97
98	# Test 'doSingleStepLevel' => 1
99TestSingleStepLevel1();
100	# Test 'doSingleStepLevel' => 0
101TestSingleStepLevel0();
102
103
104#--- 5. TestSingleStepLevel1 --------------------------------------------------
105
106sub TestSingleStepLevel1 {
107	my $toc          = new HTML::Toc;
108	my $tocGenerator = new HTML::TocGenerator;
109
110		# Generate ToC
111	$tocGenerator->generate($toc, <<EOT);
112<h1>Header 1</h1>
113<h3>Header 3</h3>
114EOT
115		# Compare output
116	ok($toc->format(), <<EOT);
117
118<!-- Table of Contents generated by Perl - HTML::Toc -->
119<ul>
120   <li><a href=#h-1>Header 1</a>
121   <ul>
122      <ul>
123         <li><a href=#h-1.0.1>Header 3</a>
124      </ul>
125   </ul>
126</ul>
127<!-- End of generated Table of Contents -->
128EOT
129}  # TestSingleStepLevel1()
130
131
132#--- 6. TestSingleStepLevel0 --------------------------------------------------
133
134sub TestSingleStepLevel0 {
135	my $toc          = new HTML::Toc;
136	my $tocGenerator = new HTML::TocGenerator;
137
138		# Set ToC options
139	$toc->setOptions({'doSingleStepLevel' => 0});
140		# Generate ToC
141	$tocGenerator->generate($toc, <<EOT);
142<h1>Header 1</h1>
143<h3>Header 3</h3>
144EOT
145	 	# Compare output
146	ok($toc->format(), <<EOT);
147
148<!-- Table of Contents generated by Perl - HTML::Toc -->
149<ul>
150   <li><a href=#h-1>Header 1</a>
151   <ul>
152      <li><a href=#h-1.0.1>Header 3</a>
153   </ul>
154</ul>
155<!-- End of generated Table of Contents -->
156EOT
157}  # TestSingleStepLevel0()
158