Sync web-platform-tests up to revision a5b95cb31914507088a4eda16f7674bbc6f3313f
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / dom / nodes / Node-lookupNamespaceURI.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>LookupNamespaceURI and IsDefaultNamespace tests</title>
5 <script src=/resources/testharness.js></script>
6 <script src=/resources/testharnessreport.js></script>
7 </head>
8 <body>
9 <h1>LookupNamespaceURI and IsDefaultNamespace</h1>
10 <div id="log"/>
11 <script>
12 function lookupNamespaceURI(node, prefix, expected, name) {
13   test(function() {
14     assert_equals(node.lookupNamespaceURI(prefix), expected);
15   }, name);
16 }
17
18 function isDefaultNamespace(node, namespace, expected, name) {
19   test(function() {
20     assert_equals(node.isDefaultNamespace(namespace), expected);
21   }, name);
22 }
23
24
25 var frag = document.createDocumentFragment();
26 lookupNamespaceURI(frag, null, null, 'DocumentFragment should have null namespace, prefix null');
27 lookupNamespaceURI(frag, '', null, 'DocumentFragment should have null namespace, prefix ""');
28 lookupNamespaceURI(frag, 'foo', null, 'DocumentFragment should have null namespace, prefix "foo"');
29 lookupNamespaceURI(frag, 'xmlns', null, 'DocumentFragment should have null namespace, prefix "xmlns"');
30 isDefaultNamespace(frag, null, true, 'DocumentFragment is in default namespace, prefix null');
31 isDefaultNamespace(frag, '', true, 'DocumentFragment is in default namespace, prefix ""');
32 isDefaultNamespace(frag, 'foo', false, 'DocumentFragment is in default namespace, prefix "foo"');
33 isDefaultNamespace(frag, 'xmlns', false, 'DocumentFragment is in default namespace, prefix "xmlns"');
34
35 var docType = document.doctype;
36 lookupNamespaceURI(docType, null, null, 'DocumentType should have null nemspace, prefix null');
37 lookupNamespaceURI(docType, '', null, 'DocumentType should have null namespace, prefix ""');
38 lookupNamespaceURI(docType, 'foo', null, 'DocumentType should have null namespace, prefix "foo"');
39 lookupNamespaceURI(docType, 'xmlns', null, 'DocumentType should have null namespace, prefix "xmlns"');
40 isDefaultNamespace(docType, null, true, 'DocumentType is in default namespace, prefix null');
41 isDefaultNamespace(docType, '', true, 'DocumentType is in default namespace, prefix ""');
42 isDefaultNamespace(docType, 'foo', false, 'DocumentType is in default namespace, prefix "foo"');
43 isDefaultNamespace(docType, 'xmlns', false, 'DocumentType is in default namespace, prefix "xmlns"');
44
45 var fooElem = document.createElementNS('fooNamespace', 'prefix:elem');
46 fooElem.setAttribute('bar', 'value');
47
48 lookupNamespaceURI(fooElem, null, null, 'Element should have null namespace, prefix null');
49 lookupNamespaceURI(fooElem, '', null, 'Element should have null namespace, prefix ""');
50 lookupNamespaceURI(fooElem, 'fooNamespace', null, 'Element should not have namespace matching prefix with namespaceURI value');
51 lookupNamespaceURI(fooElem, 'xmlns', null, 'Element should not have XMLNS namespace');
52 lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix');
53 isDefaultNamespace(fooElem, null, true, 'Empty namespace is not default, prefix null');
54 isDefaultNamespace(fooElem, '', true, 'Empty namespace is not default, prefix ""');
55 isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default');
56 isDefaultNamespace(fooElem, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default');
57
58 fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
59 fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
60
61 lookupNamespaceURI(fooElem, null, 'bazURI', 'Element should have baz namespace, prefix null');
62 lookupNamespaceURI(fooElem, '', 'bazURI', 'Element should have baz namespace, prefix ""');
63 lookupNamespaceURI(fooElem, 'xmlns', null, 'Element does not has namespace with xlmns prefix');
64 lookupNamespaceURI(fooElem, 'bar', 'barURI', 'Element has bar namespace');
65
66 isDefaultNamespace(fooElem, null, false, 'Empty namespace is not default on fooElem, prefix null');
67 isDefaultNamespace(fooElem, '', false, 'Empty namespace is not default on fooElem, prefix ""');
68 isDefaultNamespace(fooElem, 'barURI', false, 'bar namespace is not default');
69 isDefaultNamespace(fooElem, 'bazURI', true, 'baz namespace is default');
70
71 var comment = document.createComment('comment');
72 fooElem.appendChild(comment);
73
74 lookupNamespaceURI(comment, null, 'bazURI', 'Comment should inherit baz namespace');
75 lookupNamespaceURI(comment, '', 'bazURI', 'Comment should inherit  baz namespace');
76 lookupNamespaceURI(comment, 'prefix', 'fooNamespace', 'Comment should inherit namespace URI matching prefix');
77 lookupNamespaceURI(comment, 'bar', 'barURI', 'Comment should inherit bar namespace');
78
79 isDefaultNamespace(comment, null, false, 'For comment, empty namespace is not default, prefix null');
80 isDefaultNamespace(comment, '', false, 'For comment, empty namespace is not default, prefix ""');
81 isDefaultNamespace(comment, 'fooNamespace', false, 'For comment, fooNamespace is not default');
82 isDefaultNamespace(comment, 'http://www.w3.org/2000/xmlns/', false, 'For comment, xmlns namespace is not default');
83 isDefaultNamespace(comment, 'barURI', false, 'For comment, inherited bar namespace is not default');
84 isDefaultNamespace(comment, 'bazURI', true, 'For comment, inherited baz namespace is default');
85
86 var fooChild = document.createElementNS('childNamespace', 'childElem');
87 fooElem.appendChild(fooChild);
88
89 lookupNamespaceURI(fooChild, null, 'childNamespace', 'Child element should inherit baz namespace');
90 lookupNamespaceURI(fooChild, '', 'childNamespace', 'Child element should have null namespace');
91 lookupNamespaceURI(fooChild, 'xmlns', null, 'Child element should not have XMLNS namespace');
92 lookupNamespaceURI(fooChild, 'prefix', 'fooNamespace', 'Child element has namespace URI matching prefix');
93
94 isDefaultNamespace(fooChild, null, false, 'Empty namespace is not default for child, prefix null');
95 isDefaultNamespace(fooChild, '', false, 'Empty namespace is not default for child, prefix ""');
96 isDefaultNamespace(fooChild, 'fooNamespace', false, 'fooNamespace is not default for child');
97 isDefaultNamespace(fooChild, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default for child');
98 isDefaultNamespace(fooChild, 'barURI', false, 'bar namespace is not default for child');
99 isDefaultNamespace(fooChild, 'bazURI', false, 'baz namespace is default for child');
100 isDefaultNamespace(fooChild, 'childNamespace', true, 'childNamespace is default for child');
101
102 document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
103 document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
104
105 lookupNamespaceURI(document, null, 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix null');
106 lookupNamespaceURI(document, '', 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace, prefix ""');
107 lookupNamespaceURI(document, 'prefix', null, 'Document has no namespace URI matching prefix');
108 lookupNamespaceURI(document, 'bar', 'barURI', 'Document has bar namespace');
109
110 isDefaultNamespace(document, null, false, 'For document, empty namespace is not default, prefix null');
111 isDefaultNamespace(document, '', false, 'For document, empty namespace is not default, prefix ""');
112 isDefaultNamespace(document, 'fooNamespace', false, 'For document, fooNamespace is not default');
113 isDefaultNamespace(document, 'http://www.w3.org/2000/xmlns/', false, 'For document, xmlns namespace is not default');
114 isDefaultNamespace(document, 'barURI', false, 'For document, bar namespace is not default');
115 isDefaultNamespace(document, 'bazURI', false, 'For document, baz namespace is not default');
116 isDefaultNamespace(document, 'http://www.w3.org/1999/xhtml', true, 'For document, xhtml namespace is default');
117
118 var comment = document.createComment('comment');
119 document.appendChild(comment);
120 lookupNamespaceURI(comment, 'bar', null, 'Comment does not have bar namespace');
121
122 </script>
123 </body>
124 </html>