You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
5.4 KiB
102 lines
5.4 KiB
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('<xml><child/></xml>');
|
|
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('<xml>start center end</xml>');
|
|
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('<xml>start <![CDATA[<encoded>]]> end<![CDATA[[[[[[[[[]]]]]]]]]]></xml>');
|
|
var root = dom.documentElement;
|
|
console.assert ( root.firstChild.data =='start ');
|
|
console.assert ( root.firstChild.nextSibling.data =='<encoded>');
|
|
console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.data =='[[[[[[[[]]]]]]]]');
|
|
},
|
|
'cdata empty': function () {
|
|
var dom = new DOMParser().parseFromString('<xml><![CDATA[]]>start <![CDATA[]]> end</xml>');
|
|
var root = dom.documentElement;
|
|
console.assert ( root.textContent =='start end');
|
|
},
|
|
'comment': function(){
|
|
var dom = new DOMParser().parseFromString('<xml><!-- comment&>< --></xml>');
|
|
var root = dom.documentElement;
|
|
console.assert ( root.firstChild.nodeValue ==' comment&>< ');
|
|
},
|
|
'cdata comment': function(){
|
|
var dom = new DOMParser().parseFromString('<xml>start <![CDATA[<encoded>]]> <!-- comment -->end</xml>');
|
|
var root = dom.documentElement;
|
|
console.assert ( root.firstChild.nodeValue =='start ');
|
|
console.assert ( root.firstChild.nextSibling.nodeValue =='<encoded>');
|
|
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('<xml/>');
|
|
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('<xml><child/></xml>');
|
|
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('<xml><child/></xml>');
|
|
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 = '<?xml version="1.0"?><root><child>&<!-- & --></child></root>';
|
|
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;
|
|
|