Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / source / libvpx / examples / includes / HTML-Toc-0.91 / t / propagate.t
1 #--- propagate.t --------------------------------------------------------------
2 # function: Test ToC propagation.
3
4 use strict;
5 use Test;
6
7 BEGIN { plan tests => 10; }
8
9 use HTML::Toc;
10 use HTML::TocGenerator;
11 use HTML::TocInsertor;
12
13 my ($output, $content, $filename);
14 my $toc          = HTML::Toc->new;
15 my $tocGenerator = HTML::TocGenerator->new;
16 my $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
27 BEGIN {
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>
34 EOT
35 }
36
37
38 END {
39                 # Remove test file
40         unlink($filename) or warn "Can't unlink $filename: $!";
41 }
42
43
44 #--- 1. propagate -------------------------------------------------------------
45
46 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
47 ok($output, "<ul>\n<li>Header\n</ul><h1>Header</h1>");
48
49
50 #--- 2. propagateFile ---------------------------------------------------------
51
52 $tocInsertor->insertIntoFile($toc, $filename, {'output' => \$output});
53 ok($output, "<ul>\n<li>Header\n</ul><h1>Header</h1>\n");
54
55
56 #--- 3. doLinkToToken -----------------------------------------------------
57
58 $toc->setOptions({'doLinkToToken' => 1});
59 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
60 ok("$output\n", <<'EOT');
61 <ul>
62 <li><a href=#h-1>Header</a>
63 </ul><a name=h-1><h1>Header</h1></a>
64 EOT
65
66
67 #--- 4. templateAnchorHrefBegin -----------------------------------------------
68
69 $toc->setOptions(
70         {'templateAnchorHrefBegin' => '"<$node${file}test${groupId}>"'}
71 );
72 $tocInsertor->insertIntoFile($toc, $filename, {'output' => \$output});
73 ok($output, "<ul>\n<li><1${filename}testh>Header</a>\n</ul><a name=h-1><h1>Header</h1></a>\n");
74 $toc->setOptions({'templateAnchorHrefBegin' => undef});
75
76
77 #--- 5. templateAnchorNameBegin -----------------------------------------------
78
79 $toc->setOptions({
80         'templateAnchorName'      => '"$node$groupId"',
81         'templateAnchorNameBegin' => '"<$anchorName>"'
82 });
83 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
84 ok($output, "<ul>\n<li><a href=#1h>Header</a>\n</ul><1h><h1>Header</h1></a>");
85 $toc->setOptions({'templateAnchorName' => undef});
86
87
88 #--- 6. templateAnchorName function -------------------------------------------
89
90 sub AssembleAnchorName {
91                 # Get arguments
92         my ($aFile, $aGroupId, $aLevel, $aNode) = @_;
93                 # Return value
94         return $aFile . $aGroupId . $aLevel . $aNode;
95 }  # AssembleAnchorName()
96
97         # Set options
98 $toc->setOptions({'templateAnchorNameBegin' => \&AssembleAnchorName});
99         # Propagate ToC
100 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
101         # Test ToC
102 ok($output, "<ul>\n<li><a href=#h-1>Header</a>\n</ul>h11<h1>Header</h1></a>");
103         # Restore options
104 $toc->setOptions({'templateAnchorNameBegin' => undef});
105
106
107 #--- 7. doNumberToken --------------------------------------------------------
108
109         # Set options
110 $toc->setOptions({'doNumberToken' => 1});
111 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
112 ok("$output\n", <<'EOT');
113 <ul>
114 <li><a href=#h-1>Header</a>
115 </ul><a name=h-1><h1>1 &nbsp;Header</h1></a>
116 EOT
117         # Reset options
118 $toc->setOptions({
119         'templateTokenNumber' => undef,
120         'doNumberToken'      => 0
121 });
122
123
124 #--- 8. templateTokenNumber ---------------------------------------------------
125
126         # Set options
127 $toc->setOptions({
128         'templateTokenNumber' => '"-$node-"',
129         'doNumberToken'      => 1
130 });
131         # Propagate ToC
132 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
133         # Test ToC
134 ok("$output\n", <<'EOT');
135 <ul>
136 <li><a href=#h-1>Header</a>
137 </ul><a name=h-1><h1>-1-Header</h1></a>
138 EOT
139         # Reset options
140 $toc->setOptions({
141         'doNumberToken'      => 0,
142         'templateTokenNumber' => undef
143 });
144
145
146 #--- 9. numberingStyle --------------------------------------------------------
147
148         # Set options
149 $toc->setOptions({
150         'doNumberToken' => 1,
151         'tokenToToc' => [{
152                 'level' => 1,
153                 'tokenBegin' => '<h1>',
154                 'numberingStyle' => 'lower-alpha'
155         }]
156 });
157         # Propagate ToC
158 $tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
159         # Test ToC
160 ok("$output\n", <<'EOT');
161 <ul>
162 <li><a href=#h-a>Header</a>
163 </ul><a name=h-a><h1>a &nbsp;Header</h1></a>
164 EOT
165         # Reset options
166 $toc->setOptions({
167         'doNumberToken' => 0,
168         'tokenToToc' => undef,
169 });
170
171
172 #--- 10. declaration pass through ---------------------------------------------
173
174 $tocInsertor->insert($toc, '<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><h1>Header</h1>', {'output' => \$output});
175         # Test ToC
176 ok($output, '<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><h1>Header</h1>');