| 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 |
|
|
|