var wows = require('vows'); var assert = require('assert'); var DOMParser = require('xmldom').DOMParser; var XMLSerializer = require('xmldom').XMLSerializer; var parser = new DOMParser(); // Create a Test Suite wows.describe('XML Node Parse').addBatch({ 'element': function () { var dom = new DOMParser().parseFromString(''); console.assert (dom.childNodes.length== 1,dom.childNodes.length, 1); console.assert (dom.documentElement.childNodes.length== 1); console.assert (dom.documentElement.tagName== 'xml'); console.assert (dom.documentElement.firstChild.tagName== 'child'); }, 'text':function(){ var dom = new DOMParser().parseFromString('start center end'); var root = dom.documentElement; console.assert( root.firstChild.data =='start center end'); console.assert( root.firstChild.nextSibling ==null); }, 'cdata': function () { var dom = new DOMParser().parseFromString('start ]]> end'); var root = dom.documentElement; console.assert ( root.firstChild.data =='start '); console.assert ( root.firstChild.nextSibling.data ==''); console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.data =='[[[[[[[[]]]]]]]]'); }, 'cdata empty': function () { var dom = new DOMParser().parseFromString('start end'); var root = dom.documentElement; console.assert ( root.textContent =='start end'); }, 'comment': function(){ var dom = new DOMParser().parseFromString(''); var root = dom.documentElement; console.assert ( root.firstChild.nodeValue ==' comment&>< '); }, 'cdata comment': function(){ var dom = new DOMParser().parseFromString('start ]]> end'); var root = dom.documentElement; console.assert ( root.firstChild.nodeValue =='start '); console.assert ( root.firstChild.nextSibling.nodeValue ==''); console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue ==' comment '); console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue =='end'); }, 'append node': function () { var dom = new DOMParser().parseFromString(''); var child = dom.createElement("child"); console.assert ( child == dom.documentElement.appendChild(child)); console.assert ( child == dom.documentElement.firstChild); var fragment = new dom.createDocumentFragment(); console.assert ( child == fragment.appendChild(child)); }, 'insert node': function () { var dom = new DOMParser().parseFromString(''); var node = dom.createElement("sibling"); var child = dom.documentElement.firstChild; child.parentNode.insertBefore(node, child); console.assert ( node == child.previousSibling); console.assert ( node.nextSibling == child); console.assert ( node.parentNode == child.parentNode); }, 'insert fragment': function () { var dom = new DOMParser().parseFromString(''); var fragment = dom.createDocumentFragment(); assert(fragment.nodeType === 11); var first = fragment.appendChild(dom.createElement("first")); var last = fragment.appendChild(dom.createElement("last")); console.assert ( fragment.firstChild == first); console.assert ( fragment.lastChild == last); console.assert ( last.previousSibling == first); console.assert ( first.nextSibling == last); var child = dom.documentElement.firstChild; child.parentNode.insertBefore(fragment, child); console.assert ( last.previousSibling == first); console.assert ( first.nextSibling == last); console.assert ( child.parentNode.firstChild == first); console.assert ( last == child.previousSibling); console.assert ( last.nextSibling == child); console.assert ( first.parentNode == child.parentNode); console.assert ( last.parentNode == child.parentNode); } }).addBatch({ "instruction":function(){ var source = '&'; var doc = new DOMParser().parseFromString(source,"text/xml"); var source2 = new XMLSerializer().serializeToString(doc); console.assert(source == source2,source2); } }).run(); // Run it //var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; //var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; //var TEXT_NODE = NodeType.TEXT_NODE = 3; //var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; //var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; //var ENTITY_NODE = NodeType.ENTITY_NODE = 6; //var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; //var COMMENT_NODE = NodeType.COMMENT_NODE = 8; //var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; //var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; //var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; //var NOTATION_NODE = NodeType.NOTATION_NODE = 12;