summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml
blob: 309a29ae772351d71577a0df7792a8a3fb214d76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Document.getElementsByTagName</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"></div>
<pre id="x"></pre>
<script>
test(function() {
  var t = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "I"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_equals(t.localName, "I")
  assert_equals(t.tagName, "I")
  assert_array_equals(document.getElementsByTagName("I"), [t])
  assert_array_equals(document.getElementsByTagName("i"), [])
  assert_array_equals(document.body.getElementsByTagName("I"), [t])
  assert_array_equals(document.body.getElementsByTagName("i"), [])
}, "HTML element with uppercase tag name matches in XHTML documents")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "st"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("st"), [t])
  assert_array_equals(document.getElementsByTagName("ST"), [])
}, "Element in non-HTML namespace, no prefix, lowercase name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "ST"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("ST"), [t])
  assert_array_equals(document.getElementsByTagName("st"), [])
}, "Element in non-HTML namespace, no prefix, uppercase name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "te:st"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("st"), [])
  assert_array_equals(document.getElementsByTagName("ST"), [])
  assert_array_equals(document.getElementsByTagName("te:st"), [t])
  assert_array_equals(document.getElementsByTagName("te:ST"), [])
}, "Element in non-HTML namespace, prefix, lowercase name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "te:ST"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("ST"), [])
  assert_array_equals(document.getElementsByTagName("st"), [])
  assert_array_equals(document.getElementsByTagName("te:st"), [])
  assert_array_equals(document.getElementsByTagName("te:ST"), [t])
}, "Element in non-HTML namespace, prefix, uppercase name")

test(function() {
  var t = document.body.appendChild(document.createElement("AÇ"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("AÇ"), [t], "All uppercase input")
  assert_array_equals(document.getElementsByTagName("aÇ"), [], "Ascii lowercase input")
  assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input")
}, "Element in HTML namespace, no prefix, non-ascii characters in name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "AÇ"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("AÇ"), [t], "All uppercase input")
  assert_array_equals(document.getElementsByTagName("aÇ"), [], "Ascii lowercase input")
  assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input")
}, "Element in non-HTML namespace, non-ascii characters in name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "test:aÇ"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [], "All uppercase input")
  assert_array_equals(document.getElementsByTagName("test:aÇ"), [t], "Ascii lowercase input")
  assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input")
}, "Element in HTML namespace, prefix, non-ascii characters in name")

test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "TEST:AÇ"))
  this.add_cleanup(function() {document.body.removeChild(t)})
  assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input")
  assert_array_equals(document.getElementsByTagName("test:aÇ"), [], "Ascii lowercase input")
  assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input")
}, "Element in non-HTML namespace, prefix, non-ascii characters in name")

test(function() {
  var actual = document.getElementsByTagName("*");
  var expected = [];
  var get_elements = function(node) {
    for (var i = 0; i &lt; node.childNodes.length; i++) {
      var child = node.childNodes[i];
      if (child.nodeType === child.ELEMENT_NODE) {
        expected.push(child);
        get_elements(child);
      }
    }
  }
  get_elements(document);
  assert_array_equals(actual, expected);
}, "getElementsByTagName('*')")
</script>
</body>
</html>