mirror of
https://github.com/servo/servo.git
synced 2025-08-08 15:05:35 +01:00
Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255
This commit is contained in:
parent
b2a5225831
commit
1a81b18b9f
12321 changed files with 544385 additions and 6 deletions
179
tests/wpt/web-platform-tests/dom/nodes/case.js
Normal file
179
tests/wpt/web-platform-tests/dom/nodes/case.js
Normal file
|
@ -0,0 +1,179 @@
|
|||
/*
|
||||
* document.createElement(NS)
|
||||
*
|
||||
* document.getElementsByTagName(NS)
|
||||
*
|
||||
* Element.setAttribute(NS)
|
||||
*
|
||||
* Element.getAttribute(NS)
|
||||
* Element.hasAttribute(NS)
|
||||
* Element.getElementsByTagName(NS)
|
||||
*/
|
||||
|
||||
var tests = [];
|
||||
setup(function() {
|
||||
var name_inputs = ["abc", "Abc", "ABC", "ä", "Ä"];
|
||||
var namespaces = ["http://www.w3.org/1999/xhtml", "http://www.w3.org/2000/svg", "http://FOO"];
|
||||
name_inputs.forEach(function(x) {
|
||||
tests.push(["createElement " + x, test_create_element, [x]]);
|
||||
tests.push(["setAttribute " +x, test_set_attribute, [x]]);
|
||||
tests.push(["getAttribute " +x, test_get_attribute, [x]]);
|
||||
tests.push(["getElementsByTagName a:" +x, test_get_elements_tag_name,
|
||||
[outer_product(namespaces, ["a"], name_inputs),
|
||||
x]]);
|
||||
tests.push(["getElementsByTagName " +x, test_get_elements_tag_name,
|
||||
[outer_product(namespaces, [null], name_inputs),
|
||||
x]]);
|
||||
});
|
||||
outer_product(namespaces, name_inputs, name_inputs).forEach(function(x) {
|
||||
tests.push(["createElementNS " + x, test_create_element_ns, x]);
|
||||
tests.push(["setAttributeNS " + x, test_set_attribute_ns, x]);
|
||||
tests.push(["getAttributeNS " + x, test_get_attribute_ns, x]);
|
||||
});
|
||||
outer_product([null].concat(namespaces), name_inputs).forEach(function(x) {
|
||||
tests.push(["getElementsByTagNameNS " + x, test_get_elements_tag_name_ns,
|
||||
outer_product(namespaces, name_inputs), x]);
|
||||
});
|
||||
name_inputs.forEach(function(x) {
|
||||
tests.push(["createElementNS " + x, test_create_element_ns, [null, null, x]]);
|
||||
tests.push(["setAttributeNS " + x, test_set_attribute_ns, [null, null, x]]);
|
||||
tests.push(["getAttributeNS " + x, test_get_attribute_ns, [null, null, x]]);
|
||||
});
|
||||
|
||||
});
|
||||
function outer_product() {
|
||||
var rv = [];
|
||||
function compute_outer_product() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var index = args[0];
|
||||
if (index < args.length) {
|
||||
args[index].forEach(function(x) {
|
||||
compute_outer_product.apply(this, [index+1].concat(args.slice(1, index), x, args.slice(index+1)));
|
||||
});
|
||||
} else {
|
||||
rv.push(args.slice(1));
|
||||
}
|
||||
}
|
||||
compute_outer_product.apply(this, [1].concat(Array.prototype.slice.call(arguments)));
|
||||
return rv;
|
||||
}
|
||||
|
||||
function expected_case(input) {
|
||||
//is_html gets set by a global on the page loading the tests
|
||||
if (is_html) {
|
||||
return ascii_lowercase(input);
|
||||
} else {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
function ascii_lowercase(input) {
|
||||
return input.replace(/[A-Z]/g, function(x) {
|
||||
return x.toLowerCase();
|
||||
});
|
||||
}
|
||||
|
||||
function test_create_element(name) {
|
||||
var node = document.createElement(name);
|
||||
assert_equals(node.localName, expected_case(name));
|
||||
}
|
||||
|
||||
function test_create_element_ns(namespace, prefix, local_name) {
|
||||
var qualified_name = prefix ? prefix + ":" + local_name : local_name;
|
||||
var node = document.createElementNS(namespace, qualified_name);
|
||||
assert_equals(node.prefix, prefix, "prefix");
|
||||
assert_equals(node.localName, local_name, "localName");
|
||||
}
|
||||
|
||||
function test_set_attribute(name) {
|
||||
var node = document.createElement("div");
|
||||
node.setAttribute(name, "test");
|
||||
assert_equals(node.attributes[0].localName, expected_case(name));
|
||||
}
|
||||
|
||||
function test_set_attribute_ns(namespace, prefix, local_name) {
|
||||
var qualified_name = prefix ? prefix + ":" + local_name : local_name;
|
||||
var node = document.createElement("div");
|
||||
node.setAttributeNS(namespace, qualified_name, "test");
|
||||
var attr = node.attributes[0];
|
||||
assert_equals(attr.prefix, prefix, "prefix");
|
||||
assert_equals(attr.localName, local_name, "localName");
|
||||
}
|
||||
|
||||
function test_get_attribute(name) {
|
||||
var node = document.createElement("div");
|
||||
node.setAttribute(name, "test");
|
||||
var expected_name = expected_case(name);
|
||||
assert_equals(node.getAttribute(expected_name), "test");
|
||||
if (expected_name != name) {
|
||||
assert_equals(node.getAttribute(expected_name), "test");
|
||||
} else if (name !== ascii_lowercase(name)) {
|
||||
assert_equals(node.getAttribute(ascii_lowercase(name)), null);
|
||||
}
|
||||
}
|
||||
|
||||
function test_get_attribute_ns(namespace, prefix, local_name) {
|
||||
var qualified_name = prefix ? prefix + ":" + local_name : local_name;
|
||||
var node = document.createElement("div");
|
||||
node.setAttributeNS(namespace, qualified_name, "test");
|
||||
var expected_name = local_name;
|
||||
assert_equals(node.getAttributeNS(namespace, expected_name), "test");
|
||||
if (local_name !== ascii_lowercase(local_name)) {
|
||||
assert_equals(node.getAttributeNS(namespace, ascii_lowercase(local_name)), null);
|
||||
}
|
||||
}
|
||||
|
||||
function test_get_elements_tag_name(elements_to_create, search_string) {
|
||||
var container = document.createElement("div");
|
||||
elements_to_create.forEach(function(x) {
|
||||
var qualified_name = x[1] ? x[1] + ":" + x[2] : x[2];
|
||||
var element = document.createElementNS(x[0], qualified_name);
|
||||
container.appendChild(element);
|
||||
});
|
||||
var expected = Array.prototype.filter.call(container.childNodes,
|
||||
function(node) {
|
||||
if (is_html && node.namespaceURI === "http://www.w3.org/1999/xhtml") {
|
||||
return node.localName === expected_case(search_string);
|
||||
} else {
|
||||
return node.localName === search_string;
|
||||
}
|
||||
});
|
||||
document.documentElement.appendChild(container);
|
||||
try {
|
||||
assert_array_equals(document.getElementsByTagName(search_string), expected);
|
||||
} finally {
|
||||
document.documentElement.removeChild(container);
|
||||
}
|
||||
}
|
||||
|
||||
function test_get_elements_tag_name_ns(elements_to_create, search_input) {
|
||||
var search_uri = search_input[0];
|
||||
var search_name = search_input[1];
|
||||
var container = document.createElement("div");
|
||||
elements_to_create.forEach(function(x) {
|
||||
var qualified_name = x[1] ? x[1] + ":" + x[2] : x[2];
|
||||
var element = document.createElementNS(x[0], qualified_name);
|
||||
container.appendChild(element);
|
||||
});
|
||||
var expected = Array.prototype.filter.call(container.childNodes,
|
||||
function(node) {
|
||||
return node.namespaceURI === search_uri;
|
||||
return node.localName === search_name;
|
||||
});
|
||||
document.documentElement.appendChild(container);
|
||||
try {
|
||||
assert_array_equals(document.getElementsByTagNameNS(search_uri, search_name), expected);
|
||||
} catch(e) {
|
||||
throw e;
|
||||
} finally {
|
||||
document.documentElement.removeChild(container);
|
||||
}
|
||||
}
|
||||
|
||||
function test_func() {
|
||||
var func = arguments[0];
|
||||
var rest = arguments[1];
|
||||
func.apply(this, rest);
|
||||
}
|
||||
|
||||
generate_tests(test_func, tests);
|
Loading…
Add table
Add a link
Reference in a new issue