summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/nodes/DOMImplementation-createDocumentType.html
blob: 8d23e66a2b0324ee4d4988e07ac89c9b81b8ad17 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!doctype html>
<meta charset=utf-8>
<title>DOMImplementation.createDocumentType(qualifiedName, publicId, systemId)</title>
<link rel=help href="https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype">
<link rel=help href="https://dom.spec.whatwg.org/#dom-documenttype-name">
<link rel=help href="https://dom.spec.whatwg.org/#dom-documenttype-publicid">
<link rel=help href="https://dom.spec.whatwg.org/#dom-documenttype-systemid">
<link rel=help href="https://dom.spec.whatwg.org/#dom-node-ownerdocument">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
  var tests = [
    ["", "", "", "INVALID_CHARACTER_ERR"],
    ["test:root", "1234", "", null],
    ["test:root", "1234", "test", null],
    ["test:root", "test", "", null],
    ["test:root", "test", "test", null],
    ["_:_", "", "", null],
    ["_:h0", "", "", null],
    ["_:test", "", "", null],
    ["_:_.", "", "", null],
    ["_:a-", "", "", null],
    ["l_:_", "", "", null],
    ["ns:_0", "", "", null],
    ["ns:a0", "", "", null],
    ["ns0:test", "", "", null],
    ["ns:EEE.", "", "", null],
    ["ns:_-", "", "", null],
    ["a.b:c", "", "", null],
    ["a-b:c.j", "", "", null],
    ["a-b:c", "", "", null],
    ["foo", "", "", null],
    ["1foo", "", "", "INVALID_CHARACTER_ERR"],
    ["foo1", "", "", null],
    ["f1oo", "", "", null],
    ["@foo", "", "", "INVALID_CHARACTER_ERR"],
    ["foo@", "", "", "INVALID_CHARACTER_ERR"],
    ["f@oo", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:{", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:}", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:~", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:'", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:!", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:@", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:#", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:$", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:%", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:^", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:&", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:*", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:(", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:)", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:+", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:=", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:[", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:]", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:\\", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:/", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:;", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:`", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:<", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:>", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:,", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:a ", "", "", "INVALID_CHARACTER_ERR"],
    ["edi:\"", "", "", "INVALID_CHARACTER_ERR"],
    ["{", "", "", "INVALID_CHARACTER_ERR"],
    ["}", "", "", "INVALID_CHARACTER_ERR"],
    ["'", "", "", "INVALID_CHARACTER_ERR"],
    ["~", "", "", "INVALID_CHARACTER_ERR"],
    ["`", "", "", "INVALID_CHARACTER_ERR"],
    ["@", "", "", "INVALID_CHARACTER_ERR"],
    ["#", "", "", "INVALID_CHARACTER_ERR"],
    ["$", "", "", "INVALID_CHARACTER_ERR"],
    ["%", "", "", "INVALID_CHARACTER_ERR"],
    ["^", "", "", "INVALID_CHARACTER_ERR"],
    ["&", "", "", "INVALID_CHARACTER_ERR"],
    ["*", "", "", "INVALID_CHARACTER_ERR"],
    ["(", "", "", "INVALID_CHARACTER_ERR"],
    [")", "", "", "INVALID_CHARACTER_ERR"],
    ["f:oo", "", "", null],
    [":foo", "", "", "INVALID_CHARACTER_ERR"],
    ["foo:", "", "", "INVALID_CHARACTER_ERR"],
    ["prefix::local", "", "", "INVALID_CHARACTER_ERR"],
    ["foo", "foo", "", null],
    ["foo", "", "foo", null],
    ["foo", "f'oo", "", null],
    ["foo", "", "f'oo", null],
    ["foo", 'f"oo', "", null],
    ["foo", "", 'f"oo', null],
    ["foo", "f'o\"o", "", null],
    ["foo", "", "f'o\"o", null],
    ["foo", "foo>", "", null],
    ["foo", "", "foo>", null]
  ]

  var doc = document.implementation.createHTMLDocument("title");
  var doTest = function(aDocument, aQualifiedName, aPublicId, aSystemId) {
    var doctype = aDocument.implementation.createDocumentType(aQualifiedName, aPublicId, aSystemId);
    assert_equals(doctype.name, aQualifiedName, "name")
    assert_equals(doctype.nodeName, aQualifiedName, "nodeName")
    assert_equals(doctype.publicId, aPublicId, "publicId")
    assert_equals(doctype.systemId, aSystemId, "systemId")
    assert_equals(doctype.ownerDocument, aDocument, "ownerDocument")
    assert_equals(doctype.nodeValue, null, "nodeValue")
  }
  tests.forEach(function(t) {
    var qualifiedName = t[0], publicId = t[1], systemId = t[2], expected = t[3]
    test(function() {
      if (expected) {
        assert_throws_dom(expected, function() {
          document.implementation.createDocumentType(qualifiedName, publicId, systemId)
        })
      } else {
        doTest(document, qualifiedName, publicId, systemId);
        doTest(doc, qualifiedName, publicId, systemId);
      }
    }, "createDocumentType(" + format_value(qualifiedName) + ", " + format_value(publicId) + ", " + format_value(systemId) + ") should " +
       (expected ? "throw " + expected : "work"));
  });
})
</script>