Test creation of each type of Node and check intial values

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


Attribute creation using createElement on an HTML doc:
PASS attr.nodeName is 'foo'
PASS attr.name is 'foo'
FAIL attr.localName should be null (of type object). Was foo (of type string).
PASS attr.namespaceURI is null
PASS attr.prefix is null
PASS attr.nodeValue is ''
PASS attr.value is ''
PASS attr.attributes is null
Attribute creation using createElementNS on an HTML doc:
PASS attr.nodeName is 'example:foo'
PASS attr.name is 'example:foo'
PASS attr.localName is 'foo'
PASS attr.namespaceURI is 'http://www.example.com'
PASS attr.prefix is 'example'
PASS attr.nodeValue is ''
PASS attr.value is ''
PASS attr.attributes is null
Attribute creation using createElement on an XHTML doc:
PASS attr.nodeName is 'foo'
PASS attr.name is 'foo'
FAIL attr.localName should be null (of type object). Was foo (of type string).
PASS attr.namespaceURI is null
PASS attr.prefix is null
PASS attr.nodeValue is ''
PASS attr.value is ''
PASS attr.attributes is null
Attribute creation using createElementNS on an XHTML doc:
PASS attr.nodeName is 'example:foo'
PASS attr.name is 'example:foo'
PASS attr.localName is 'foo'
PASS attr.namespaceURI is 'http://www.example.com'
PASS attr.prefix is 'example'
PASS attr.nodeValue is ''
PASS attr.value is ''
PASS attr.attributes is null
PASS comment.nodeName is '#comment'
PASS comment.localName is null
PASS comment.namespaceURI is null
PASS comment.prefix is null
PASS comment.nodeValue is 'foo'
PASS comment.data is 'foo'
PASS comment.attributes is null
PASS document.createCDATASection('foo') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
PASS cdata.nodeName is '#cdata-section'
PASS cdata.localName is null
PASS cdata.namespaceURI is null
PASS cdata.prefix is null
PASS cdata.nodeValue is 'foo'
PASS cdata.data is 'foo'
PASS cdata.attributes is null
PASS fragment.nodeName is '#document-fragment'
PASS fragment.localName is null
PASS fragment.namespaceURI is null
PASS fragment.prefix is null
PASS fragment.nodeValue is null
PASS fragment.attributes is null
PASS doc.nodeName is '#document'
PASS doc.localName is null
FAIL doc.namespaceURI should be http://www.w3.org/1999/xhtml (of type string). Was null (of type object).
PASS doc.prefix is null
PASS doc.nodeValue is null
PASS doc.attributes is null
PASS doctype.nodeName is 'svg'
PASS doctype.name is 'svg'
PASS doctype.localName is null
PASS doctype.namespaceURI is null
PASS doctype.prefix is null
PASS doctype.nodeValue is null
PASS doctype.attributes is null
Element creation using createElement on an HTML doc:
PASS element.nodeName is 'PRE'
FAIL element.localName should be null (of type object). Was pre (of type string).
FAIL element.namespaceURI should be null (of type object). Was http://www.w3.org/1999/xhtml (of type string).
PASS element.prefix is null
PASS element.nodeValue is null
PASS element.attributes.toString() is '[object NamedNodeMap]'
Element creation using createElementNS on an HTML doc:
FAIL element.nodeName should be html:pre. Was PRE.
PASS element.localName is 'pre'
PASS element.namespaceURI is 'http://www.w3.org/1999/xhtml'
PASS element.prefix is 'html'
PASS element.nodeValue is null
PASS element.attributes.toString() is '[object NamedNodeMap]'
Element creation using createElement on an XHTML doc:
PASS element.nodeName is 'pre'
FAIL element.localName should be null (of type object). Was pre (of type string).
FAIL element.namespaceURI should be null (of type object). Was http://www.w3.org/1999/xhtml (of type string).
PASS element.prefix is null
PASS element.nodeValue is null
PASS element.attributes.toString() is '[object NamedNodeMap]'
Element creation using createElementNS on an XHTML doc:
PASS element.nodeName is 'html:pre'
PASS element.localName is 'pre'
PASS element.namespaceURI is 'http://www.w3.org/1999/xhtml'
PASS element.prefix is 'html'
PASS element.nodeValue is null
PASS element.attributes.toString() is '[object NamedNodeMap]'
PASS document.createEntityReference('gt') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
PASS entityReference.nodeName is 'gt'
PASS entityReference.localName is null
PASS entityReference.namespaceURI is null
PASS entityReference.prefix is null
PASS entityReference.nodeValue is null
PASS entityReference.attributes is null
PASS document.createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="missing.xsl"') threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
PASS processingInstruction.nodeName is 'xml-stylesheet'
PASS processingInstruction.localName is null
PASS processingInstruction.namespaceURI is null
PASS processingInstruction.prefix is null
PASS processingInstruction.nodeValue is 'type="text/xsl" href="missing.xsl"'
PASS processingInstruction.attributes is null
PASS processingInstruction.target is 'xml-stylesheet'
PASS processingInstruction.data is 'type="text/xsl" href="missing.xsl"'
PASS text.nodeName is '#text'
PASS text.localName is null
PASS text.namespaceURI is null
PASS text.prefix is null
PASS text.nodeValue is 'foo'
PASS text.data is 'foo'
PASS text.attributes is null
PASS successfullyParsed is true

TEST COMPLETE

