Checks that the DOMImplementation api arguments are correctly validated

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
PASS document.implementation.createDocumentType() threw exception TypeError: Failed to execute 'createDocumentType' on 'DOMImplementation': 3 arguments required, but only 0 present..
PASS document.implementation.createDocumentType("qualifiedName") threw exception TypeError: Failed to execute 'createDocumentType' on 'DOMImplementation': 3 arguments required, but only 1 present..
PASS document.implementation.createDocumentType("qualifiedName", "publicId") threw exception TypeError: Failed to execute 'createDocumentType' on 'DOMImplementation': 3 arguments required, but only 2 present..
PASS docType = document.implementation.createDocumentType("qualifiedName", "publicId", "systemId") did not throw exception.
PASS docType.__proto__ is DocumentType.prototype
PASS docType.name is "qualifiedName"
PASS docType.publicId is "publicId"
PASS docType.systemId is "systemId"

XMLDocument createDocument(DOMString? namespace, [TreatNullAs=EmptyString] DOMString qualifiedName, DocumentType? doctype);
PASS document.implementation.createDocument() threw exception TypeError: Failed to execute 'createDocument' on 'DOMImplementation': 2 arguments required, but only 0 present..
PASS document.implementation.createDocument("namespace") threw exception TypeError: Failed to execute 'createDocument' on 'DOMImplementation': 2 arguments required, but only 1 present..
PASS document.implementation.createDocument("namespace", "qualifiedName") did not throw exception.
PASS doc = document.implementation.createDocument("namespace", "qualifiedName", null) did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement.tagName is "qualifiedName"
PASS testDocument.documentElement.namespaceURI is "namespace"
PASS testDocument.doctype is null
PASS doc = document.implementation.createDocument(null, "qualifiedName", null) did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement.tagName is "qualifiedName"
PASS testDocument.documentElement.namespaceURI is null
PASS testDocument.doctype is null
PASS doc = document.implementation.createDocument("", null, null) did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement is null
PASS testDocument.doctype is null
PASS doc = document.implementation.createDocument("", "", null) did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement is null
PASS testDocument.doctype is null
PASS doc = document.implementation.createDocument("namespace", "qualifiedName") did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement.tagName is "qualifiedName"
PASS testDocument.documentElement.namespaceURI is "namespace"
PASS testDocument.doctype is null
PASS doc = document.implementation.createDocument("namespace", "qualifiedName", docType) did not throw exception.
PASS testDocument.__proto__ is window["XMLDocument"].prototype
PASS testDocument.documentElement.tagName is "qualifiedName"
PASS testDocument.documentElement.namespaceURI is "namespace"
PASS testDocument.doctype is testDocType

Document createHTMLDocument(optional DOMString title);
PASS doc = document.implementation.createHTMLDocument() did not throw exception.
PASS testDocument.__proto__ is window["HTMLDocument"].prototype
PASS testDocument.documentElement.tagName is "HTML"
PASS testDocument.documentElement.namespaceURI is "http://www.w3.org/1999/xhtml"
PASS testDocument.doctype is testDocType
PASS doc = document.implementation.createHTMLDocument("title") did not throw exception.
PASS testDocument.__proto__ is window["HTMLDocument"].prototype
PASS testDocument.documentElement.tagName is "HTML"
PASS testDocument.documentElement.namespaceURI is "http://www.w3.org/1999/xhtml"
PASS testDocument.doctype is testDocType
PASS successfullyParsed is true

TEST COMPLETE

