1 |
wakaba |
1.1 |
#!/usr/bin/perl |
2 |
|
|
use strict; |
3 |
|
|
|
4 |
|
|
my $html_header = q[<!DOCTYPE html><html>]; |
5 |
|
|
my $xhtml_header = q[<html xmlns="http://www.w3.org/1999/xhtml">]; |
6 |
|
|
|
7 |
|
|
my @type = ({id => 'noxml.html', header => $html_header}, |
8 |
|
|
{id => 'noxml.xhtml', header => $xhtml_header}); |
9 |
|
|
for my $xv ( |
10 |
|
|
[noversion => ''], |
11 |
|
|
['v10' => ' version="1.0"'], |
12 |
|
|
['v11' => ' version="1.1"'], |
13 |
|
|
[unknownversion1 => ' version="unKnown"'], |
14 |
|
|
[unknownversion2 => ' version="unknown"'], |
15 |
|
|
[illegalversion => qq[ version="\x{4E00}"]], |
16 |
|
|
) { |
17 |
|
|
for my $xe ( |
18 |
|
|
[noenc => '', ''], |
19 |
|
|
[httpenc1 => ' encoding="iso-2022-JP"', '.jis'], |
20 |
|
|
[httpenc2 => ' encoding="iso-2022-jp"', '.jis'], |
21 |
|
|
[incorrectenc => ' encoding="utf-16"', ''], |
22 |
|
|
[unknownenc => ' encoding="unknown-encoding-name"', ''], |
23 |
|
|
[illegalenc => qq[ encoding="\x{4E00}"], ''], |
24 |
|
|
) { |
25 |
|
|
for my $xs ( |
26 |
|
|
[nosa => '', ''], |
27 |
|
|
[sayes1 => ' standalone="yes"', ''], |
28 |
|
|
[sayes2 => ' standalone="Yes"', ''], |
29 |
|
|
[sayesinvalid => ' standalone="yes"', |
30 |
|
|
'<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'], |
31 |
|
|
[sano1 => ' standalone="no"', |
32 |
|
|
'<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'], |
33 |
|
|
[sano2 => ' standalone="nO"', |
34 |
|
|
'<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'], |
35 |
|
|
[sanoinvalid => ' standalone="no"', ''], |
36 |
|
|
) { |
37 |
|
|
push @type, {id => qq[xml-$xv->[0]-$xe->[0]-$xs->[0].html$xe->[2]], |
38 |
|
|
header => qq[<?xml$xv->[1]$xe->[1]$xs->[1]?>$xs->[2]$xhtml_header]}; |
39 |
|
|
push @type, {id => qq[xml-$xv->[0]-$xe->[0]-$xs->[0].xhtml$xe->[2]], |
40 |
|
|
header => qq[<?xml$xv->[1]$xe->[1]$xs->[1]?>$xs->[2]$xhtml_header]}; |
41 |
|
|
} |
42 |
|
|
} |
43 |
|
|
} |
44 |
|
|
|
45 |
|
|
for my $prop ( |
46 |
|
|
{id => 'xml-version', name => 'xmlVersion'}, |
47 |
|
|
{id => 'xml-encoding', name => 'xmlEncoding'}, |
48 |
|
|
{id => 'xml-standalone', name => 'xmlStandalone'}, |
49 |
|
|
) { |
50 |
|
|
for my $type (@type) { |
51 |
|
|
my $file_name = qq[$prop->{id}/get-$type->{id}]; |
52 |
|
|
warn $file_name, "\n"; |
53 |
|
|
open my $file, '>:encoding(iso-2022-jp)', $file_name |
54 |
|
|
or die "$0: $file_name: $!"; |
55 |
|
|
print $file qq[$type->{header}<head> |
56 |
|
|
<title>document.$prop->{name} Get</title> |
57 |
|
|
<script src="../../../../support/result.js"></script> |
58 |
|
|
</head> |
59 |
|
|
<body> |
60 |
|
|
<p id="result" class="FAIL">FAIL (not executed)</p> |
61 |
|
|
<script> setResult ('result', document.$prop->{name}) </script> |
62 |
|
|
</body> |
63 |
|
|
</html>]; |
64 |
|
|
} |
65 |
|
|
} |
66 |
|
|
|
67 |
|
|
for my $type ( |
68 |
|
|
{id => '.html', header => $html_header, |
69 |
|
|
original_value => 'null'}, |
70 |
|
|
{id => '-noxml.xhtml', header => $xhtml_header, |
71 |
|
|
original_value => '"1.0"'}, |
72 |
|
|
{id => '-xml10.xhtml', |
73 |
|
|
header => '<?xml version="1.0"?>'.$xhtml_header, |
74 |
|
|
original_value => '"1.0"'}, |
75 |
|
|
{id => '-xml11.xhtml', |
76 |
|
|
header => '<?xml version="1.1"?>'.$xhtml_header, |
77 |
|
|
original_value => '"1.1"'}, |
78 |
|
|
) { |
79 |
|
|
for my $new_value ( |
80 |
|
|
{id => 'null', new_value => 'null'}, |
81 |
|
|
{id => 'undefined', new_value => 'undefined'}, |
82 |
|
|
{id => 'empty', new_value => '""'}, |
83 |
|
|
{id => 'num1', new_value => '1.0'}, |
84 |
|
|
{id => 'num11', new_value => '1.1'}, |
85 |
|
|
{id => 'str10', new_value => '"1.0"'}, |
86 |
|
|
{id => 'str11', new_value => '"1.1"'}, |
87 |
|
|
{id => 'unknown', new_value => '"unknown"'}, |
88 |
|
|
{id => 'illegal', new_value => '"\1"'}, |
89 |
|
|
) { |
90 |
|
|
my $file_name = qq[xml-version/set-$new_value->{id}$type->{id}]; |
91 |
|
|
warn $file_name, "\n"; |
92 |
|
|
open my $file, '>', $file_name or die "$0: $file_name: $!"; |
93 |
|
|
print $file qq[$type->{header}<head> |
94 |
|
|
<title>document.xmlVersion = $new_value->{new_value}</title> |
95 |
|
|
<script src="../../../../support/result.js"></script> |
96 |
|
|
</head> |
97 |
|
|
<body> |
98 |
|
|
<p id="result" class="FAIL">FAIL (not executed)</p> |
99 |
|
|
<script> |
100 |
|
|
var result = document.getElementById ('result'); |
101 |
|
|
result.firstChild.data = 'FAIL (script error)'; |
102 |
|
|
if (document.xmlVersion === $type->{original_value}) { |
103 |
|
|
try { |
104 |
|
|
document.xmlVersion = $new_value->{new_value}; |
105 |
|
|
var xv = document.xmlVersion; |
106 |
|
|
if (xv === $new_value->{new_value}) { |
107 |
|
|
result.firstChild.data = 'new value'; |
108 |
|
|
result.className = 'see-detail'; |
109 |
|
|
} else if (xv === $type->{original_value}) { |
110 |
|
|
result.firstChild.data = 'original value'; |
111 |
|
|
result.className = 'see-detail'; |
112 |
|
|
} else { |
113 |
|
|
setResult ('result', xv); |
114 |
|
|
} |
115 |
|
|
} catch (e) { |
116 |
|
|
result.firstChild.data = e.toString (); |
117 |
|
|
result.className = 'see-detail'; |
118 |
|
|
} |
119 |
|
|
} else { |
120 |
|
|
result.firstChild.data = 'N/A'; |
121 |
|
|
result.className = 'NA'; |
122 |
|
|
} |
123 |
|
|
</script> |
124 |
|
|
</body> |
125 |
|
|
</html>]; |
126 |
|
|
} |
127 |
|
|
} |
128 |
|
|
|