mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Update web-platform-tests to revision ee82278e15570e573d87fb80179ff8231b6db61a
This commit is contained in:
parent
d23bc4f1a4
commit
83e2dc11b0
278 changed files with 13348 additions and 10515 deletions
|
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue