Update web-platform-tests to revision ee82278e15570e573d87fb80179ff8231b6db61a

This commit is contained in:
WPT Sync Bot 2018-06-03 21:07:04 -04:00
parent d23bc4f1a4
commit 83e2dc11b0
278 changed files with 13348 additions and 10515 deletions

View file

@ -4,8 +4,23 @@
<meta charset="utf-8"/>
<title>cseucpkdfmtjapanese decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'cseucpkdfmtjapanese' as for a document labeled 'euc-jp'.">
@ -15,51 +30,15 @@
<script src="jis0208_index.js"></script>
<script src="jis0212_index.js"></script>
<script src="eucjp-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(eucjpDecoder);">
<iframe src="eucjp_chars-cseucpkdfmtjapanese.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
eucjpDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
eucjpDecoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,23 @@
<meta charset="utf-8"/>
<title>x-euc-jp decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'x-euc-jp' as for a document labeled 'euc-jp'.">
@ -15,51 +30,15 @@
<script src="jis0208_index.js"></script>
<script src="jis0212_index.js"></script>
<script src="eucjp-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(eucjpDecoder);">
<iframe src="eucjp_chars-x-euc-jp.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
eucjpDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
eucjpDecoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,23 @@
<meta charset="utf-8"/>
<title>EUC-JP decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser decodes all characters as expected from a file generated by encoding all pointers in the euc-jp encoding per the encoder steps in the specification.">
@ -15,51 +30,15 @@
<script src="jis0208_index.js"></script>
<script src="jis0212_index.js"></script>
<script src="eucjp-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(eucjpDecoder);">
<iframe src="eucjp_chars.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
eucjpDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
eucjpDecoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="cseucpkdfmtjapanese"><!-- test breaks if the server overrides this -->
<title>cseucpkdfmtjapanese encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "cseucpkdfmtjapanese";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = eucjpEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,31 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (form, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,167 +41,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,21 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (form, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,132 +31,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesHangul;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,13 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (form, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,176 +23,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesMisc;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="x-euc-jp"><!-- test breaks if the server overrides this -->
<title>x-euc-jp encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "x-euc-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = eucjpEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="euc-jp"><!-- test breaks if the server overrides this -->
<title>EUC-JP encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = eucjpEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,97 +4,56 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (href, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-10000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the euc-jp encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesHan;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,62 +4,46 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (href, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-10000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding hangul characters that are not in the euc-jp encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesHangul;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,106 +4,38 @@
<meta charset="euc-jp"> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding errors (href, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding miscellaneous characters that are not in the euc-jp encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesMisc;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,59 +4,38 @@
<meta charset=euc-jp> <!-- test breaks if the server overrides this -->
<title>EUC-JP encoding (href)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="eucjp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-jp">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the euc-jp encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
}
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = eucjpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
"U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = false;
var encoder = eucjpEncoder;
var ranges = rangesAll;
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>csiso2022jp decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'csiso2022jp' as for a document labeled 'iso-2022-jp'.">
@ -14,50 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(iso2022jpDecoder);">
<iframe src="iso2022jp_chars-csiso2022jp.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
iso2022jpDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
iso2022jpDecoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>ISO 2022-JP decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser decodes all characters as expected from a file generated by encoding all pointers in the iso-2022-jp encoding per the encoder steps in the specification.">
@ -14,50 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(iso2022jpDecoder);">
<iframe src="iso2022jp_chars.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
iso2022jpDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
iso2022jpDecoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="csiso2022jp"> <!-- test breaks if the server overrides this -->
<title>csiso2022jp encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,19 +27,19 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = "\u0019";
var encodedSeperator = encodeURIComponent("\u0019");
var currentChunkIndex = 0;
var errors = false;
var separator = "\u0019";
var ranges = rangesAll;
function expect(result, codepoint) {
return result;
}
function encoder(str) {
return getByteSequence(str.codePointAt(0));
}
function getByteSequence(cp) {
// uses the Encoding spec algorithm to derive a sequence of bytes for a character that can be encoded
@ -121,118 +130,7 @@ for (p = 0; p < jis0208.length; p++) {
indexcodepoints[jis0208[p]] = p;
}
}
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = getByteSequence(i);
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = result;
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
normalizeStr(item.expected)
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "csiso2022jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,30 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022 JP encoding errors (form, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,167 +40,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = "\u0019";
var encodedSeperator = encodeURIComponent("\u0019");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
normalizeStr(item.expected)
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "iso-2022-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesHan;
var separator = "\u0019";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,21 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022 JP encoding errors (form, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,132 +31,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = "\u0019";
var encodedSeperator = encodeURIComponent("\u0019");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
normalizeStr(item.expected)
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "iso-2022-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesHangul;
var separator = "\u0019";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,13 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022 JP encoding errors (form, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,176 +23,24 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = "\u0019";
var encodedSeperator = encodeURIComponent("\u0019");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0xa0; i < 0x4ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
normalizeStr(item.expected)
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "iso-2022-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesMisc;
var separator = "\u0019";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022 JP encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,129 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = "\u0019";
var encodedSeperator = encodeURIComponent("\u0019");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
item.expected = item.expected.replace(/%1B%28%42$/, "");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "iso-2022-jp";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(normalizeStr(results[j]), cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = iso2022jpEncoder;
var ranges = rangesAll;
var separator = "\u0019";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%").replace(/%1B%28%42$/, "");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,95 +4,49 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022-JP encoding errors (href, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the iso-2022-jp encoding.">
<script src="../../resources/ranges.js"></script>
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesHan;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<script src="../../resources/encode-href-common.js"></script>
</head>
<body>
<div id="log"></div>

View file

@ -4,60 +4,40 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022-JP encoding errors (href, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding hangul characters that are not in the iso-2022-jp encoding.">
<script src="../../resources/ranges.js"></script>
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesHangul;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<script src="../../resources/encode-href-common.js"></script>
</head>
<body>
<div id="log"></div>

View file

@ -4,104 +4,32 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022-JP encoding errors (href, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding miscellaneous characters that are not in the iso-2022-jp encoding.">
<script src="../../resources/ranges.js"></script>
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
var errors = true;
var encoder = iso2022jpEncoder;
var ranges = rangesMisc;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
for (i = 0x2000; i < 0x23ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = iso2022jpEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<script src="../../resources/encode-href-common.js"></script>
</head>
<body>
<div id="log"></div>

View file

@ -4,58 +4,32 @@
<meta charset="iso-2022-jp"> <!-- test breaks if the server overrides this -->
<title>ISO 2022-JP encoding (href)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="iso2022jp-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#iso-2022-jp">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the iso-2022-jp encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification.">
<script src="../../resources/ranges.js"></script>
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
var errors = false;
var encoder = iso2022jpEncoder;
var ranges = rangesAll;
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%").replace(/%1B%28%42$/, "");;
}
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
var result = iso2022jpEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
item.expected = item.expected.replace(/%1B%28%42$/, "");
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
"U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<script src="../../resources/encode-href-common.js"></script>
</head>
<body>
<div id="log"></div>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>csshiftjis decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'csshiftjis' as for a document labeled 'shift_jis'.">
@ -14,47 +23,15 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-csshiftjis.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -7,7 +7,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser decodes characters that are not recognised from the shift_jis index as replacement characters.">
<style>
iframe { display:none }

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>ms932 decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'ms932' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-ms932.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>ms_kanji decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'ms_kanji' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-ms_kanji.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>shift-jis decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'shift-jis' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-shift-jis.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>sjis decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'sjis' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-sjis.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>windows-31j decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'windows-31j' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-windows-31j.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,17 @@
<meta charset="utf-8"/>
<title>x-sjis decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'x-sjis' as for a document labeled 'shift_jis'.">
@ -14,47 +23,14 @@
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars-x-sjis.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,57 +4,33 @@
<meta charset="utf-8"/>
<title>ShiftJIS decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser decodes all characters as expected from a file generated by encoding all pointers in the shift_jis encoding per the shift_jis encoder steps in the specification.">
<style>
iframe { display:none }
</style>
<script src="jis0208_index.js"></script>
<script src="sjis-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(sjisDecoder);">
<iframe src="sjis_chars.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
sjisDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, sjisDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="csshiftjis"> <!-- test breaks if the server overrides this -->
<title>csshiftjis encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'csshiftjis' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'csshiftjis' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "csshiftjis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,12 +4,34 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding errors (form, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references for a URL produced by a form when encoding han characters that are not in the shift_jis encoding.">
<style>
iframe { display:none }
@ -18,162 +40,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "shift_jis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,12 +4,25 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding errors (form, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references for a URL produced by a form when encoding hangul characters that are not in the shift_jis encoding.">
<style>
iframe { display:none }
@ -18,132 +31,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "shift_jis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesHangul;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,12 +4,17 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding errors (form, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references for a URL produced by a form when encoding miscellaneous characters that are not in the shift_jis encoding.">
<style>
iframe { display:none }
@ -18,172 +23,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "shift_jis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesMisc;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="ms932"> <!-- test breaks if the server overrides this -->
<title>ms932 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'ms932' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'ms932' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ms932";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="ms_kanji"> <!-- test breaks if the server overrides this -->
<title>ms_kanji encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'ms_kanji' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'ms_kanji' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ms_kanji";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="shift-jis"> <!-- test breaks if the server overrides this -->
<title>shift-jis encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'shift-jis' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'shift-jis' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "shift-jis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="sjis"> <!-- test breaks if the server overrides this -->
<title>sjis encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'sjis' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'sjis' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "sjis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="windows-31j"> <!-- test breaks if the server overrides this -->
<title>windows-31j encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'windows-31j' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'windows-31j' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "windows-31j";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="x-sjis"> <!-- test breaks if the server overrides this -->
<title>x-sjis encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'x-sjis' as for a document labeled 'euc-jp'.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the same encoding behavior for a document labeled 'x-sjis' as for a document labeled 'shift_jis'.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "x-sjis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,13 +4,22 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the shift_jis encoding after 0x9F when encoding bytes for a URL produced by a form, using the encoder steps in the specification.">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the shift_jis encoding after 0x9F when encoding bytes for a URL produced by a form, using the encoder steps in the specification.">
<style>
iframe { display:none }
form { display:none }
@ -18,131 +27,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
var encodedSeparator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "shift_jis";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,97 +4,57 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding errors (href, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-10000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the shift_jis encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,62 +4,47 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding (href, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding hangul characters that are not in the shift_jis encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesHangul;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,106 +4,39 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding (href, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding miscellaneous characters that are not in the shift_jis encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = sjisEncoder;
var ranges = rangesMisc;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,59 +4,40 @@
<meta charset="shift_jis"> <!-- test breaks if the server overrides this -->
<title>Shift_jis encoding (href)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="jis0208_index.js"></script>
<script src="sjis-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org//#shift_jis">
<link rel="help" href="https://encoding.spec.whatwg.org/#shift_jis">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the shift_jis encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
}
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = sjisEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
"U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = false;
var encoder = sjisEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="utf-8"/>
<title>cseuckr decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'cseuckr' as for a document labeled 'euc-kr'.">
@ -14,47 +33,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-cseuckr.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="utf-8"/>
<title>csksc56011987 decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'csksc56011987' as for a document labeled 'euc-kr'.">
@ -14,47 +33,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-csksc56011987.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-iso-ir-149.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-korean.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-ks_c_5601-1987.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-ks_c_5601-1989.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-ksc5601.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-ksc_5601.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars-windows-949.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -14,47 +14,14 @@
</style>
<script src="euckr_index.js"></script>
<script src="euckr-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(euckrDecoder);">
<iframe src="euckr_chars.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
euckrDecoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, euckrDecoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="cseuckr"> <!-- test breaks if the server overrides this -->
<title>cseuckr encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "cseuckr";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="csksc56011987"> <!-- test breaks if the server overrides this -->
<title>csksc56011987 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "csksc56011987";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,33 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding errors (form, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-22000">
<meta name="variant" content="?22001-23000">
<meta name="variant" content="?23001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,163 +43,19 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-kr";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = euckrEncoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,13 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding errors (form, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,172 +23,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
" U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-kr";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = euckrEncoder;
var ranges = rangesMisc;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="iso-ir-149"> <!-- test breaks if the server overrides this -->
<title>iso-ir-149 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "iso-ir-149";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="korean"> <!-- test breaks if the server overrides this -->
<title>korean encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,140 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
// set up a sparse array of all unicode codepoints listed in the index
// this will be used for lookup in getByteSequence
var indexcodepoints = []; // index is unicode cp, value is pointer
for (p = 0; p < euckr.length; p++) {
if (euckr[p] != null && indexcodepoints[euckr[p]] == null) {
indexcodepoints[euckr[p]] = p;
}
}
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "korean";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="ks_c_5601-1987"> <!-- test breaks if the server overrides this -->
<title>ks_c_5601-1987 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ks_c_5601-1987";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="ks_c_5601-1989"> <!-- test breaks if the server overrides this -->
<title>ks_c_5601-1989 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,140 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
// set up a sparse array of all unicode codepoints listed in the index
// this will be used for lookup in getByteSequence
var indexcodepoints = []; // index is unicode cp, value is pointer
for (p = 0; p < euckr.length; p++) {
if (euckr[p] != null && indexcodepoints[euckr[p]] == null) {
indexcodepoints[euckr[p]] = p;
}
}
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ks_c_5601-1989";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="ksc5601"> <!-- test breaks if the server overrides this -->
<title>ksc5601 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ksc5601";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="ksc_5601"> <!-- test breaks if the server overrides this -->
<title>ksc_5601 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "ksc_5601";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,28 @@
<meta charset="windows-949"> <!-- test breaks if the server overrides this -->
<title>windows-949 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +38,17 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "windows-949";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,27 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +37,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "euc-kr";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,97 +4,58 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding errors (href, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-22000">
<meta name="variant" content="?22001-23000">
<meta name="variant" content="?23001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-kr">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the euc-kr encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = euckrEncoder;
var ranges = rangesHan;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,106 +4,38 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding errors (href, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-kr">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding miscellaneous characters that are not in the euc-kr encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = euckrEncoder;
var ranges = rangesMisc;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,59 +4,48 @@
<meta charset="euc-kr"> <!-- test breaks if the server overrides this -->
<title>EUC-KR encoding (href)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="euckr_index.js"></script>
<script src="euckr-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#euc-kr">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the euc-kr encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
}
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0xffff; i++) {
result = euckrEncoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
"U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the testsexclude ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../ranges.js"></script>
<script>
var errors = false;
var encoder = euckrEncoder;
var ranges = rangesAll;
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../encode-href-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="utf-8"/>
<title>big5-hkscs decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'big5-hkscs' as for a document labeled 'big5'.">
@ -15,49 +31,14 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(big5Decoder);">
<iframe src="big5_chars-big5-hkscs.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="utf-8"/>
<title>cn-big5 decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'cn-big5' as for a document labeled 'big5'.">
@ -15,49 +31,14 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(big5Decoder);">
<iframe src="big5_chars-cn-big5.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="utf-8"/>
<title>csbig5 decoding</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#names-and-labels">
<meta name="assert" content="The browser produces the same decoding behavior for a document labeled 'csbig5' as for a document labeled 'big5'.">
@ -15,49 +31,14 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(big5Decoder);">
<iframe src="big5_chars-csbig5.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -15,48 +15,14 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(big5Decoder);">
<iframe src="big5_chars_extra.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -15,49 +15,14 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
<body onload="showNodes(big5Decoder);">
<iframe src="big5_chars-x-x-big5.html" name="scriptWindow" id="scrwin"></iframe>
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -15,6 +15,7 @@
</style>
<script src="big5_index.js"></script>
<script src="big5-decoder.js"></script>
<script src="../../resources/decode-common.js"></script>
</head>
<body onload="showNodes();">
@ -23,40 +24,5 @@
<div id="log"></div>
<script>
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes() {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
tests[i] = async_test(
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
big5Decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
}
for (var i = 0; i < nodes.length; i++) {
tests[i].step(function() {
assert_equals(nodes[i].textContent, big5Decoder(nodes[i].dataset.bytes));
});
tests[i].done();
}
}
</script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="big5-hkscs"> <!-- test breaks if the server overrides this -->
<title>big5-hkscs encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -17,133 +33,17 @@
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5-hkscs";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="cn-big5"> <!-- test breaks if the server overrides this -->
<title>cn-big5 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -17,133 +33,18 @@
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "cn-big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="csbig5"> <!-- test breaks if the server overrides this -->
<title>csbig5 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -17,133 +33,17 @@
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "csbig5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,31 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, extB, part1)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,133 +41,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x20000; i < 0x2536b; i++) {
// cjk extension A
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extB (pt 1)";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesExtBa;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,31 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, extB, part2)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,133 +41,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x2536b; i < 0x2a6e0; i++) {
// cjk extension A
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extB (pt 2) ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesExtBb;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,175 +34,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
/*
for (i=0x20000;i<0x2A6E0;i++) { // cjk extension A
result = getByteSequence(i)
if (!result) {
var item = {}
codepoints.push(item)
item.cp = i
item.expected = '%26%23'+item.cp+'%3B'
item.desc = 'extension A '
}
}
*/
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,21 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,132 +31,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesHangul;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,13 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,172 +23,20 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(document.getElementsByTagName("form"));
inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesMisc;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
// Overwrite normalizeStr
function normalizeStr(str) {
return str;
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,16 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (form, pua)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,132 +26,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// set up a simple array of miscellaneous unicode codepoints that are not encoded
var codepoints = [];
for (i = 0xe000; i < 0xf8ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "pua ";
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(
async_test(
item.desc +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(results[j], cplist[i][j].expected);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = true;
var encoder = big5Encoder;
var ranges = rangesPua;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="x-x-big5"> <!-- test breaks if the server overrides this -->
<title>x-x-big5 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -17,133 +33,17 @@
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "x-x-big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,8 +4,24 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding (form)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
@ -18,131 +34,16 @@
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 500;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var seperator = ",";
var encodedSeperator = encodeURIComponent(",");
var currentChunkIndex = 0;
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
currentTests.push(
async_test(
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
)
);
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = "big5";
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(seperator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeperator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
var separator = ",";
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,97 +4,56 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (href, han)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-11000">
<meta name="variant" content="?11001-12000">
<meta name="variant" content="?12001-13000">
<meta name="variant" content="?13001-14000">
<meta name="variant" content="?14001-15000">
<meta name="variant" content="?15001-16000">
<meta name="variant" content="?16001-17000">
<meta name="variant" content="?17001-18000">
<meta name="variant" content="?18001-19000">
<meta name="variant" content="?19001-20000">
<meta name="variant" content="?20001-21000">
<meta name="variant" content="?21001-22000">
<meta name="variant" content="?22001-23000">
<meta name="variant" content="?23001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#big5">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding han characters that are not in the gbk encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// create a simple list of just those code points for which there is no encoding is possible, from a representative subset of the BMP
codepoints = [];
for (i = 0x4e00; i < 0x9fba; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "cjk ";
}
}
for (i = 0xf900; i < 0xfa6e; i++) {
// compatibility
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0xfa70; i < 0xfada; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "compatibility ";
}
}
for (i = 0x3400; i < 0x4dbf; i++) {
// cjk extension A
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "extension A ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = big5Encoder;
var ranges = rangesHan;
var separator = ",";
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,62 +4,43 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (href, hangul)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-8000">
<meta name="variant" content="?8001-9000">
<meta name="variant" content="?9001-10000">
<meta name="variant" content="?10001-10000">
<meta name="variant" content="?11001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#big5">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding hangul characters that are not in the gbk encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// create a simple list of just those code points for which there is no encoding is possible, from a representative subset of the BMP
codepoints = [];
for (i = 0xac00; i < 0xd7af; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "hangul ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = big5Encoder;
var ranges = rangesHangul;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -4,105 +4,34 @@
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<title>Big5 encoding errors (href, misc)</title>
<meta name="timeout" content="long">
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#big5">
<meta name="assert" content="The browser produces percent-escaped character references when writing characters to an href value and encoding miscellaneous characters that are not in the gbk encoding.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(result, expected);
}, desc);
}
// create a simple list of just those code points for which there is no encoding is possible, from a representative subset of the BMP
codepoints = [];
for (var i = 0x80; i < 0x4ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "latin, greek, cyrillic, etc ";
}
}
for (i = 0x2000; i < 0x23ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "punctuation, currency, symbols ";
}
}
for (i = 0x2460; i < 0x26ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "enclosed chars and boxes ";
}
}
for (i = 0x3000; i < 0x33ff; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "various asian ";
}
}
for (i = 0xff00; i < 0xffef; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (!result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%26%23" + item.cp + "%3B";
item.desc = "half/full width ";
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = true;
var encoder = eucjpEncoder;
var ranges = rangesMisc;
function expect(result, codepoint) {
return "%26%23" + codepoint + "%3B";
}
</script>
<script src="../../resources/encode-form-common.js"></script>
</body>
</html>

View file

@ -4,59 +4,38 @@
<meta name="timeout" content="long">
<title>Big5 encoding (href)</title>
<meta charset="big5"> <!-- test breaks if the server overrides this -->
<meta name="variant" content="?1-1000">
<meta name="variant" content="?1001-2000">
<meta name="variant" content="?2001-3000">
<meta name="variant" content="?3001-4000">
<meta name="variant" content="?4001-5000">
<meta name="variant" content="?5001-6000">
<meta name="variant" content="?6001-7000">
<meta name="variant" content="?7001-last">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/subset-tests.js"></script>
<script src="big5_index.js"></script>
<script src="big5-encoder.js"></script>
<link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org">
<link rel="help" href="https://encoding.spec.whatwg.org/#big5">
<meta name="assert" content="The browser produces the expected byte sequences for all characters in the big5 encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification.">
<script>
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
test(function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
}
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var i = 0x80; i < 0x2a6df; i++) {
result = big5Encoder(String.fromCodePoint(i));
if (result) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = "%" + result.replace(/ /g, "%");
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
"U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the test excludes ASCII characters
</script>
<style>
iframe { display:none }
form { display:none }
</style>
</head>
<body>
<div id="log"></div>
<script src="../../resources/ranges.js"></script>
<script>
var errors = false;
var encoder = big5Encoder;
var ranges = rangesAll;
function expect(result, codepoint) {
return "%" + result.replace(/ /g, "%");
}
</script>
<script src="../../resources/encode-href-common.js"></script>
</body>
</html>

View file

@ -0,0 +1,40 @@
var tests = [];
function iframeRef(frameRef) {
return frameRef.contentWindow
? frameRef.contentWindow.document
: frameRef.contentDocument;
}
function showNodes(decoder) {
var iframe = iframeRef(document.getElementById("scrwin"));
nodes = iframe.querySelectorAll("span");
for (var i = 0; i < nodes.length; i++) {
var test = subsetTest(async_test,
"U+" +
nodes[i].dataset.cp +
" " +
String.fromCodePoint(parseInt(nodes[i].dataset.cp, 16)) +
" " +
decoder(nodes[i].dataset.bytes) +
" " +
nodes[i].dataset.bytes
);
if (test) {
tests[i] = test;
}
}
for (var i = 0; i < nodes.length; i++) {
if (tests[i]) {
tests[i].step(function() {
assert_equals(
nodes[i].textContent,
decoder(nodes[i].dataset.bytes)
);
});
tests[i].done();
}
}
}

View file

@ -0,0 +1,140 @@
// These are defined by the test:
// errors (boolean)
// encoder (function)
// ranges (array)
// separator (string)
// expect (function)
var tests = [];
var cplist = [];
var numTests = null;
var numFrames = 2;
var chunkSize = 400;
var numChunks = null;
var frames = null;
var frames = null;
var forms = null;
var encodedSeparator = encodeURIComponent(separator);
var currentChunkIndex = 0;
var pageCharset = document.querySelector("meta[charset]").getAttribute("charset");
setup(function() {
// create a simple list of just those code points for which there is an encoding possible
codepoints = [];
for (var range of ranges) {
for (var i = range[0]; i < range[1]; i++) {
result = encoder(String.fromCodePoint(i));
var success = !!result;
if (errors) {
success = !success;
}
if (success) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = expect(result, i);
item.desc = range[2];
}
}
}
// convert the information into a simple array of objects that can be easily traversed
var currentChunk = [];
var currentTests = [];
cplist = [currentChunk];
tests = [currentTests];
for (i = 0; i < codepoints.length; i++) {
if (currentChunk.length == chunkSize) {
currentChunk = [];
cplist.push(currentChunk);
currentTests = [];
tests.push(currentTests);
}
var item = {};
currentChunk.push(item);
item.cp = codepoints[i].cp;
item.expected = codepoints[i].expected;
item.desc = codepoints[i].desc;
currentTests.push(subsetTest(async_test,
(item.desc ? item.desc + " " : "") +
"U+" +
item.cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(item.cp) +
" " +
item.expected
));
}
numChunks = cplist.length;
for (var i = 0; i < numFrames; i++) {
var frame = document.createElement("iframe");
frame.id = frame.name = "frame-" + i;
document.body.appendChild(frame);
var form = document.createElement("form");
form.id = "form-" + i;
form.method = "GET";
form.action = "/common/blank.html";
form.acceptCharset = pageCharset;
form.target = frame.id;
var input = document.createElement("input");
input.id = input.name = "input-" + i;
form.appendChild(input);
document.body.appendChild(form);
}
addEventListener("load", function() {
frames = Array.prototype.slice.call(
document.getElementsByTagName("iframe")
);
forms = Array.prototype.slice.call(
document.getElementsByTagName("form")
);
inputs = Array.prototype.slice.call(
document.getElementsByTagName("input")
);
for (var i = 0; i < Math.min(numFrames, numChunks); i++) {
runNext(i);
}
});
});
function runNext(id) {
var i = currentChunkIndex;
currentChunkIndex += 1;
var iframe = frames[id];
var form = forms[id];
var input = inputs[id];
input.value = cplist[i]
.map(function(x) {
return String.fromCodePoint(x.cp);
})
.join(separator);
form.submit();
iframe.onload = function() {
var url = iframe.contentWindow.location;
var query = url.search;
var result_string = query.substr(query.indexOf("=") + 1);
var results = result_string.split(encodedSeparator);
for (var j = 0; j < cplist[i].length; j++) {
var t = tests[i][j];
if (t) {
t.step(function() {
assert_equals(
normalizeStr(results[j]),
normalizeStr(cplist[i][j].expected)
);
});
t.done();
}
}
if (currentChunkIndex < numChunks) {
runNext(id);
}
};
}

View file

@ -0,0 +1,57 @@
// These are defined by the test:
// errors (boolean)
// encoder (function)
// ranges (array)
// expect (function)
function encode(input, expected, desc) {
// tests whether a Unicode character is converted to an equivalent byte sequence by href
// input: a Unicode character
// expected: expected byte sequence
// desc: what's being tested
subsetTest(test, function() {
var a = document.createElement("a"); // <a> uses document encoding for URL's query
a.href = "https://example.com/?" + input;
result = a.search.substr(1); // remove leading "?"
assert_equals(normalizeStr(result), normalizeStr(expected));
}, desc);
}
// set up a simple array of unicode codepoints that are not encoded
var codepoints = [];
for (var range of ranges) {
for (var i = range[0]; i < range[1]; i++) {
result = encoder(String.fromCodePoint(i));
var success = !!result;
if (errors) {
success = !success;
}
if (success) {
var item = {};
codepoints.push(item);
item.cp = i;
item.expected = expect(result, i);
item.desc = range[2] ? range[2] + " " : "";
}
}
}
// run the tests
for (var x = 0; x < codepoints.length; x++) {
encode(
String.fromCodePoint(codepoints[x].cp),
codepoints[x].expected,
codepoints[x].desc +
" U+" +
codepoints[x].cp.toString(16).toUpperCase() +
" " +
String.fromCodePoint(codepoints[x].cp) +
" " +
codepoints[x].expected
);
}
// NOTES
// this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers
// the tests exclude ASCII characters

View file

@ -0,0 +1,28 @@
var rangesHan = [
[0x4e00, 0x9fba, "cjk"],
[0xf900, 0xfa6e, "compatibility"],
[0xfa70, 0xfada, "compatibility"],
[0x3400, 0x4dbf, "extension A"],
];
var rangesHangul = [
[0xac00, 0xd7af, "hangul"],
];
var rangesMisc = [
[0x80, 0x4ff, "latin, greek, cyrillic, etc"],
[0x2000, 0x23ff, "punctuation, currency, symbols"],
[0x2460, 0x26ff, "enclosed chars and boxes"],
[0x3000, 0x33ff, "various asian"],
[0xff00, 0xffef, "half/full width"],
];
var rangesAll = [
[0x80, 0xffff],
];
var rangesExtBa = [
[0x20000, 0x2536b, "extB (pt 1)"],
];
var rangesExtBb = [
[0x2536b, 0x2a6e0, "extB (pt 2)"],
];
var rangesPua = [
[0xe000, 0xf8ff, "pua"],
];

View file

@ -1,5 +1,8 @@
<!doctype html>
<meta name=timeout content=long>
<meta name="variant" content="?XMLHttpRequest">
<meta name="variant" content="?TextDecoder">
<meta name="variant" content="?document">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=resources/encodings.js></script>
@ -62,38 +65,49 @@
}
}
var subsetTest = "";
if (location.search) {
subsetTest = location.search.substr(1);
}
// Setting up all the tests
for(var i = 0, l = singleByteEncodings.length; i < l; i++) {
var encoding = singleByteEncodings[i]
for(var ii = 0, ll = encoding.labels.length; ii < ll; ii++) {
var label = encoding.labels[ii]
async_test(function(t) {
var xhr = new XMLHttpRequest,
name = encoding.name // need scoped variable
xhr.open("GET", "resources/single-byte-raw.py?label=" + label)
xhr.send(null)
xhr.onload = t.step_func_done(function() { assert_decode(xhr.responseText, name) })
}, encoding.name + ": " + label + " (XMLHttpRequest)")
if (subsetTest == "XMLHttpRequest" || !subsetTest) {
async_test(function(t) {
var xhr = new XMLHttpRequest,
name = encoding.name // need scoped variable
xhr.open("GET", "resources/single-byte-raw.py?label=" + label)
xhr.send(null)
xhr.onload = t.step_func_done(function() { assert_decode(xhr.responseText, name) })
}, encoding.name + ": " + label + " (XMLHttpRequest)")
}
test(function() {
var d = new TextDecoder(label),
data = d.decode(view)
assert_equals(d.encoding, encoding.name.toLowerCase()) // ASCII names only, so safe
assert_decode(data, encoding.name)
}, encoding.name + ": " + label + " (TextDecoder)")
if (subsetTest == "TextDecoder" || !subsetTest) {
test(function() {
var d = new TextDecoder(label),
data = d.decode(view)
assert_equals(d.encoding, encoding.name.toLowerCase()) // ASCII names only, so safe
assert_decode(data, encoding.name)
}, encoding.name + ": " + label + " (TextDecoder)")
}
async_test(function(t) {
var frame = document.createElement("iframe"),
name = encoding.name;
frame.src = "resources/text-plain-charset.py?label=" + label
frame.onload = t.step_func_done(function() {
assert_equals(frame.contentDocument.characterSet, name)
assert_equals(frame.contentDocument.inputEncoding, name)
})
t.add_cleanup(function() { document.body.removeChild(frame) })
document.body.appendChild(frame)
}, encoding.name + ": " + label + " (document.characterSet and document.inputEncoding)")
if (subsetTest == "document" || !subsetTest) {
async_test(function(t) {
var frame = document.createElement("iframe"),
name = encoding.name;
frame.src = "resources/text-plain-charset.py?label=" + label
frame.onload = t.step_func_done(function() {
assert_equals(frame.contentDocument.characterSet, name)
assert_equals(frame.contentDocument.inputEncoding, name)
})
t.add_cleanup(function() { document.body.removeChild(frame) })
document.body.appendChild(frame)
}, encoding.name + ": " + label + " (document.characterSet and document.inputEncoding)")
}
}
}
</script>