/[suikacvs]/www/test/dom/node/prefix/mktests.pl
Suika

Contents of /www/test/dom/node/prefix/mktests.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download)
Mon Jun 18 15:44:07 2007 UTC (17 years, 10 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -0 lines
File MIME type: text/plain
Extensions in .xhtml file was incorrect

1 #!/usr/bin/perl
2 use strict;
3
4 my @create_target;
5 for my $uri (
6 [null => 'null'],
7 [absuri => '"http://test/"'],
8 [xmluri => '"http://www.w3.org/XML/1998/namespace"'],
9 [xmlnsuri => '"http://www.w3.org/2000/xmlns/"'],
10 ) {
11 for my $prefix (
12 [null => '"localName"', 'null', '"localName"'],
13 [xml10ncname => '"originalPrefix:localName"',
14 '"originalPrefix"', '"localName"'],
15 [xml => '"xml:lang"', '"xml"', '"lang"'],
16 [xmlns => '"xmlns"', 'null', '"xmlns"'],
17 [xmlnsprefix => '"xmlns:declaredPrefix"', '"xmlns"', '"declaredPrefix"'],
18 ) {
19 push @create_target, ['Attr', $uri->[0], $prefix->[0], qq[
20 var el;
21 try {
22 el = document.createAttributeNS ($uri->[1], $prefix->[1]);
23 } catch (e) { }
24 if (!el) {
25 try {
26 el = document.createAttributeNS ($uri->[1], $prefix->[3]);
27 el.prefix = $prefix->[2];
28 } catch (e) { }
29 }
30 var ok = (el && el.prefix == $prefix->[2] &&
31 el.namespaceURI == $uri->[1]);
32 ]];
33 push @create_target, ['Element', $uri->[0], $prefix->[0], qq[
34 var el;
35 try {
36 el = document.createAttributeNS ($uri->[1], $prefix->[1]);
37 } catch (e) { }
38 if (!el) {
39 try {
40 el = document.createAttributeNS ($uri->[1], $prefix->[3]);
41 el.prefix = $prefix->[2];
42 } catch (e) { }
43 }
44 var ok = (el && el.prefix == $prefix->[2] &&
45 el.namespaceURI == $uri->[1]);
46 ]];
47 }
48 }
49
50 my @set_value = (
51 ['null', 'null'],
52 ['undefined', 'undefined'],
53 ['empty', '""'],
54 ['nonxmlname', '"12345"'],
55 ['xml10name', '"new:Prefix"'],
56 ['xml10ncname', '"newPrefix"'],
57 ['xml', '"xml"'],
58 ['xmlns', '"xmlns"'],
59 );
60
61 my $table = q[<tbody>];
62 my @items;
63 for my $create_target (@create_target) {
64 $table .= qq[<tr><th scope="row">$create_target->[0]</th>
65 <th scope="row">$create_target->[1]</th>
66 <th scope="row">$create_target->[2]</th>];
67 for my $set_value (@set_value) {
68 my $file_name = lc ($create_target->[0]) . '-' . $create_target->[1] .
69 '-' . $create_target->[2] . '-' . $set_value->[0];
70 warn $file_name, "\n";
71 $table .= qq[<td><a href="$file_name.xhtml" id="$file_name" class="FAIL"
72 title="@{[ ($create_target->[1] eq 'xmlnsuri' and
73 $create_target->[2] !~ 'xmlns') ? 'noopera' : '' ]}">FAIL (not executed)</a></td>];
74 push @items, $file_name;
75 my $file_content = qq[<head>
76 <title>$create_target->[0].prefix = $set_value->[0]</title>
77 </head><body>
78 <p id="result" class="FAIL">FAIL (not executed)</p>
79 <script type="text/javascript">// <![CDATA[
80 var result = document.getElementById ('result');
81 result.firstChild.data = 'FAIL (script error)';
82 $create_target->[3]
83 if (ok) {
84 try {
85 el.prefix = $set_value->[1];
86 result.className = '';
87 result.firstChild.data = el.prefix + ', type ' + typeof (el.prefix);
88 } catch (e) {
89 result.className = '';
90 result.firstChild.data = e.toString ();
91 }
92 } else {
93 result.className = 'NA';
94 result.firstChild.data = 'N/A';
95 }
96 // ]]></script>
97 </body></html>
98 ];
99 open my $file, '>', "$file_name.html" or die "$0: $file_name.html: $!";
100 print $file "<!DOCTYPE html><html>$file_content";
101 open $file, '>', "$file_name.xhtml" or die "$0: $file_name.xhtml: $!";
102 print $file qq'<html xmlns="http://www.w3.org/1999/xhtml">$file_content';
103 }
104 $table .= q[</tr>];
105 }
106 $table .= q[</tbody>];
107
108 for my $type (
109 ['.html' => '<!DOCTYPE html><html>'],
110 ['.xhtml' => '<html xmlns="http://www.w3.org/1999/xhtml">'],
111 ) {
112 my $table = $table;
113 $table =~ s/\.xhtml\b/$type->[0]/g;
114 open my $file, '>', "set-prefix-list$type->[0]"
115 or die "$0: set-prefix-list$type->[0]: $!";
116 print $file qq[$type->[1]
117 <head>
118 <title>prefix Attribute Test Result</title>
119 <style type="text/css">
120 a {
121 color: blue;
122 }
123 a.NA {
124 color: gray;
125 }
126 a.FAIL {
127 color: red;
128 }
129 </style>
130 </head>
131 <body>
132 <table>
133 <thead>
134 <tr>
135 <th scope="col" colspan="3">Original</th>
136 @{[ map { qq[<th scope="col">$_->[0]</th>] } @set_value ]}
137 </tr>
138 <tr>
139 <th scope="col"><var>Node</var></th>
140 <th scope="col"><code>namespaceURI</code></th>
141 <th scope="col"><code>prefix</code></th>
142 </tr>
143 </thead>
144 $table
145 </table>
146 <p><iframe></iframe></p>
147 <script type="text/javascript">// <![CDATA[
148 window.testItems = ["@{[ join '", "', @items ]}"];
149 window.currentItem = window.testItems.pop ();
150 var iframe = document.getElementsByTagName ('iframe')[0];
151 iframe.onload = function () {
152 try {
153 var result = this.contentWindow.document.getElementById ('result');
154 var resultCell = document.getElementById (window.currentItem);
155 resultCell.className = result.className;
156 resultCell.firstChild.data = result.firstChild.data;
157 } catch (e) { }
158 while (testItems.length > 0) {
159 window.currentItem = window.testItems.pop ();
160 var resultCell = document.getElementById (window.currentItem);
161 if (window.opera && resultCell.title == 'noopera') {
162 /* Don't test since Opera dies with create*NS
163 <http://suika.fam.cx/gate/2005/sw/createAttributeNS> */
164 resultCell.className = 'NA';
165 resultCell.firstChild.data = 'N/A (skipped)';
166 } else {
167 this.src = window.currentItem + "$type->[0]";
168 return;
169 }
170 }
171 this.onload = null;
172 this.style.display = 'none';
173 };
174 iframe.src = window.currentItem + "$type->[0]";
175 // ]]></script>
176 </body>
177 </html>];
178 }

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24