blob: 0097215d4cbea07df95f18d646680614e849f19e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="http://www.w3.org/TR/2012/WD-dom-20121206/#interface-domimplementation">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<script>
description("Checks that the DOMImplementation api arguments are correctly validated")
var testDocument, testPrototype, testNamespace, testQualifiedName, testDocType;
function validateDocument(document, prototype, namespace, qualifiedName, docType)
{
testDocument = document;
testPrototype = prototype;
testNamespace = namespace;
testQualifiedName = qualifiedName;
testDocType = docType;
shouldBe('testDocument.__proto__', 'window["' + prototype + '"].prototype');
if (!testQualifiedName || testQualifiedName == "") {
shouldBeNull('testDocument.documentElement');
} else {
shouldBeEqualToString('testDocument.documentElement.tagName', '' + qualifiedName);
if (namespace)
shouldBeEqualToString('testDocument.documentElement.namespaceURI', '' + namespace);
else
shouldBeNull('testDocument.documentElement.namespaceURI');
}
if (docType)
shouldBe('testDocument.doctype', 'testDocType');
else
shouldBeNull('testDocument.doctype');
}
debug('\nDocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);');
shouldThrow('document.implementation.createDocumentType()', '"TypeError: Failed to execute \'createDocumentType\' on \'DOMImplementation\': 3 arguments required, but only 0 present."');
shouldThrow('document.implementation.createDocumentType("qualifiedName")', '"TypeError: Failed to execute \'createDocumentType\' on \'DOMImplementation\': 3 arguments required, but only 1 present."');
shouldThrow('document.implementation.createDocumentType("qualifiedName", "publicId")', '"TypeError: Failed to execute \'createDocumentType\' on \'DOMImplementation\': 3 arguments required, but only 2 present."');
var docType;
shouldNotThrow('docType = document.implementation.createDocumentType("qualifiedName", "publicId", "systemId")');
shouldBe('docType.__proto__', 'DocumentType.prototype');
shouldBeEqualToString('docType.name', 'qualifiedName');
shouldBeEqualToString('docType.publicId', 'publicId');
shouldBeEqualToString('docType.systemId', 'systemId');
debug('\nXMLDocument createDocument(DOMString? namespace, [TreatNullAs=EmptyString] DOMString qualifiedName, DocumentType? doctype);');
shouldThrow('document.implementation.createDocument()', '"TypeError: Failed to execute \'createDocument\' on \'DOMImplementation\': 2 arguments required, but only 0 present."');
shouldThrow('document.implementation.createDocument("namespace")', '"TypeError: Failed to execute \'createDocument\' on \'DOMImplementation\': 2 arguments required, but only 1 present."');
shouldNotThrow('document.implementation.createDocument("namespace", "qualifiedName")');
var doc;
shouldNotThrow('doc = document.implementation.createDocument("namespace", "qualifiedName", null)');
validateDocument(doc, 'XMLDocument', 'namespace', 'qualifiedName', null);
shouldNotThrow('doc = document.implementation.createDocument(null, "qualifiedName", null)');
validateDocument(doc, 'XMLDocument', null, 'qualifiedName', null);
shouldNotThrow('doc = document.implementation.createDocument("", null, null)')
validateDocument(doc, 'XMLDocument', "", null, null);
shouldNotThrow('doc = document.implementation.createDocument("", "", null)')
validateDocument(doc, 'XMLDocument', "", "", null);
shouldNotThrow('doc = document.implementation.createDocument("namespace", "qualifiedName")');
validateDocument(doc, 'XMLDocument', "namespace", "qualifiedName", null);
shouldNotThrow('doc = document.implementation.createDocument("namespace", "qualifiedName", docType)');
validateDocument(doc, 'XMLDocument', "namespace", "qualifiedName", docType);
debug('\nDocument createHTMLDocument(optional DOMString title);');
shouldNotThrow('doc = document.implementation.createHTMLDocument()');
validateDocument(doc, 'HTMLDocument', "http://www.w3.org/1999/xhtml", "HTML", doc.doctype);
shouldNotThrow('doc = document.implementation.createHTMLDocument("title")');
validateDocument(doc, 'HTMLDocument', "http://www.w3.org/1999/xhtml", "HTML", doc.doctype);
</script>
</body>
</html>