| function test_getElementsByTagNameNS(context, element) { |
| test(function() { |
| assert_false(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "html") instanceof NodeList, "NodeList") |
| assert_true(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "html") instanceof HTMLCollection, "HTMLCollection") |
| var firstCollection = context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "html"), |
| secondCollection = context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "html") |
| assert_true(firstCollection !== secondCollection || firstCollection === secondCollection, |
| "Caching is allowed.") |
| }) |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "body")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| var actual = context.getElementsByTagNameNS("*", "body"); |
| var expected = []; |
| var get_elements = function(node) { |
| for (var i = 0; i < node.childNodes.length; i++) { |
| var child = node.childNodes[i]; |
| if (child.nodeType === child.ELEMENT_NODE) { |
| if (child.localName == "body") { |
| expected.push(child); |
| } |
| get_elements(child); |
| } |
| } |
| } |
| get_elements(context); |
| assert_array_equals(actual, expected); |
| }, "getElementsByTagNameNS('*', 'body')") |
| |
| test(function() { |
| assert_array_equals(context.getElementsByTagNameNS("", "*"), []); |
| var t = element.appendChild(document.createElementNS("", "body")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("", "*"), [t]); |
| }, "Empty string namespace") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "body")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("test", "body"), [t]); |
| }, "body element in test namespace, no prefix") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "test:body")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("test", "body"), [t]); |
| }, "body element in test namespace, prefix") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "BODY")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("test", "BODY"), [t]); |
| assert_array_equals(context.getElementsByTagNameNS("test", "body"), []); |
| }, "BODY element in test namespace, no prefix") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "abc")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "abc"), [t]); |
| assert_array_equals(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "ABC"), []); |
| assert_array_equals(context.getElementsByTagNameNS("test", "ABC"), []); |
| }, "abc element in html namespace") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "ABC")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "abc"), []); |
| assert_array_equals(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "ABC"), [t]); |
| }, "ABC element in html namespace") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "AÇ")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "AÇ"), [t]); |
| assert_array_equals(context.getElementsByTagNameNS("test", "aÇ"), []); |
| assert_array_equals(context.getElementsByTagNameNS("test", "aç"), []); |
| }, "AÇ, case sensitivity") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "test:BODY")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| assert_array_equals(context.getElementsByTagNameNS("test", "BODY"), [t]); |
| assert_array_equals(context.getElementsByTagNameNS("test", "body"), []); |
| }, "BODY element in test namespace, prefix") |
| |
| test(function() { |
| var t = element.appendChild(document.createElementNS("test", "test:test")) |
| this.add_cleanup(function() {element.removeChild(t)}) |
| var actual = context.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "*"); |
| var expected = []; |
| var get_elements = function(node) { |
| for (var i = 0; i < node.childNodes.length; i++) { |
| var child = node.childNodes[i]; |
| if (child.nodeType === child.ELEMENT_NODE) { |
| if (child !== t) { |
| expected.push(child); |
| } |
| get_elements(child); |
| } |
| } |
| } |
| get_elements(context); |
| assert_array_equals(actual, expected); |
| }, "getElementsByTagNameNS('http://www.w3.org/1999/xhtml', '*')") |
| |
| test(function() { |
| var actual = context.getElementsByTagNameNS("*", "*"); |
| var expected = []; |
| var get_elements = function(node) { |
| for (var i = 0; i < node.childNodes.length; i++) { |
| var child = node.childNodes[i]; |
| if (child.nodeType === child.ELEMENT_NODE) { |
| expected.push(child); |
| get_elements(child); |
| } |
| } |
| } |
| get_elements(context); |
| assert_array_equals(actual, expected); |
| }, "getElementsByTagNameNS('*', '*')") |
| |
| test(function() { |
| assert_array_equals(context.getElementsByTagNameNS("**", "*"), []); |
| assert_array_equals(context.getElementsByTagNameNS(null, "0"), []); |
| assert_array_equals(context.getElementsByTagNameNS(null, "div"), []); |
| }, "Empty lists") |
| } |