From 8a31e94596f4f38a2cccf6a63df57108d63b7c37 Mon Sep 17 00:00:00 2001 From: Christian Bewernitz Date: Sun, 28 Jun 2020 20:41:26 +0200 Subject: [PATCH] fix: Convert all line separators to LF This just converts the files, no enforcement yet fixes #56 --- __package__.js | 8 +- test/3rd-cases/o3xml.js | 42 ++-- test/dom/attr.vows.js | 130 ++++++------ test/dom/clone.vows.js | 48 ++--- test/dom/element.vows.js | 296 +++++++++++++-------------- test/error/error.vows.js | 190 ++++++++--------- test/error/xml-error.vows.js | 142 ++++++------- test/html/normalize.vows.js | 188 ++++++++--------- test/index.js | 130 ++++++------ test/parse/big-file-performance.js | 318 ++++++++++++++--------------- test/parse/locator.vows.js | 152 +++++++------- test/parse/namespace.vows.js | 66 +++--- test/parse/node.vows.js | 228 ++++++++++----------- test/parse/parse-element.vows.js | 68 +++--- test/parse/simple.vows.js | 104 +++++----- test/test.js | 62 +++--- 16 files changed, 1086 insertions(+), 1086 deletions(-) diff --git a/__package__.js b/__package__.js index 31916d972..bfda86ed8 100644 --- a/__package__.js +++ b/__package__.js @@ -1,4 +1,4 @@ -this.addScript('dom.js',['DOMImplementation','XMLSerializer']); -this.addScript('dom-parser.js',['DOMHandler','DOMParser'], - ['DOMImplementation','XMLReader']); -this.addScript('sax.js','XMLReader'); +this.addScript('dom.js',['DOMImplementation','XMLSerializer']); +this.addScript('dom-parser.js',['DOMHandler','DOMParser'], + ['DOMImplementation','XMLReader']); +this.addScript('sax.js','XMLReader'); diff --git a/test/3rd-cases/o3xml.js b/test/3rd-cases/o3xml.js index f15a1e086..afc2e4ea8 100644 --- a/test/3rd-cases/o3xml.js +++ b/test/3rd-cases/o3xml.js @@ -1,21 +1,21 @@ -var DOMParser = require('../../lib/dom-parser').DOMParser; -require('./mock') -//Compatibility -{ - var doc = new DOMParser().parseFromString("",'text/xml'); - var np = doc.__proto__.__proto__.__proto__; - for(var n in np){ - if(/_NODE$/.test(n)){ -// console.log(n.replace(/_NODE$/,''),np[n]) - np[n.replace(/_NODE$/,'')] = np[n]; - } - } - -} - -require.cache[require.resolve('node-o3-xml')] - = require.cache[require.resolve('./mock')]; -require('node-o3-xml').parseFromString = function(xml){ - return new DOMParser().parseFromString(xml,'text/xml'); -} -require('node-o3-xml/test/test') +var DOMParser = require('../../lib/dom-parser').DOMParser; +require('./mock') +//Compatibility +{ + var doc = new DOMParser().parseFromString("",'text/xml'); + var np = doc.__proto__.__proto__.__proto__; + for(var n in np){ + if(/_NODE$/.test(n)){ +// console.log(n.replace(/_NODE$/,''),np[n]) + np[n.replace(/_NODE$/,'')] = np[n]; + } + } + +} + +require.cache[require.resolve('node-o3-xml')] + = require.cache[require.resolve('./mock')]; +require('node-o3-xml').parseFromString = function(xml){ + return new DOMParser().parseFromString(xml,'text/xml'); +} +require('node-o3-xml/test/test') diff --git a/test/dom/attr.vows.js b/test/dom/attr.vows.js index b92332582..72346a09e 100644 --- a/test/dom/attr.vows.js +++ b/test/dom/attr.vows.js @@ -1,65 +1,65 @@ -var wows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') - -// Create a Test Suite -wows.describe('XML attrs').addBatch({ - "set attribute":function(){ - var root = new DOMParser().parseFromString("",'text/xml').documentElement; - root.setAttribute('a','1'); - assert(root.attributes[0].localName, 'a'); - root.setAttribute('b',2); - root.setAttribute('a',1); - root.setAttribute('a',1); - root.setAttribute('a',1); - assert(root.attributes.length, 2); - try { - var c = root.ownerDocument.createElement('c'); - c.setAttributeNode(root.attributes.item(0)); - } catch (e) { - assert(e.code, 10); - return; - } - assert.fail('expected error but none was thrown'); - }, - "set ns attribute":function(){ - var root = new DOMParser().parseFromString("",'text/xml').documentElement; - var child = root.firstChild - child.setAttributeNS('a','a:a','1'); - child.setAttributeNS('b','b:b','2'); - child.setAttributeNS('b','b:a','1'); - assert(child.attributes.length, 3, 'after adding 3', child); - child.setAttribute('a',1); - child.setAttributeNS('b','b:b','2'); - assert(child.attributes.length, 4, 'after adding 4 and one with namespace'); - try { - var c = root.ownerDocument.createElement('c'); - c.setAttributeNodeNS(root.attributes.item(0)); - } catch (e) { - assert(e.code, 10, 'wrong error code'); - return; - } - assert.fail('expected error but none was thrown'); - }, - "override attribute":function(){ - var root = new DOMParser().parseFromString("",'text/xml').documentElement; - root.setAttributeNS('a','a:a','1'); - assert(root.attributes.length, 4); -//not standart -// root.firstChild.setAttributeNode(root.attributes[0]); -// assert(root.attributes.length, 0); - }, - "attribute namespace":function(){ - var root = new DOMParser().parseFromString("",'text/xml').documentElement; - assert(root.getAttributeNS("a", "b"), "e"); - }, - "override ns attribute":function(){ - - }, - "set existed attribute":function(){ - - }, - "set document existed attribute":function(){ - - } -}).export(module); // Run it +var wows = require('vows'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +const assert = require('../assert') + +// Create a Test Suite +wows.describe('XML attrs').addBatch({ + "set attribute":function(){ + var root = new DOMParser().parseFromString("",'text/xml').documentElement; + root.setAttribute('a','1'); + assert(root.attributes[0].localName, 'a'); + root.setAttribute('b',2); + root.setAttribute('a',1); + root.setAttribute('a',1); + root.setAttribute('a',1); + assert(root.attributes.length, 2); + try { + var c = root.ownerDocument.createElement('c'); + c.setAttributeNode(root.attributes.item(0)); + } catch (e) { + assert(e.code, 10); + return; + } + assert.fail('expected error but none was thrown'); + }, + "set ns attribute":function(){ + var root = new DOMParser().parseFromString("",'text/xml').documentElement; + var child = root.firstChild + child.setAttributeNS('a','a:a','1'); + child.setAttributeNS('b','b:b','2'); + child.setAttributeNS('b','b:a','1'); + assert(child.attributes.length, 3, 'after adding 3', child); + child.setAttribute('a',1); + child.setAttributeNS('b','b:b','2'); + assert(child.attributes.length, 4, 'after adding 4 and one with namespace'); + try { + var c = root.ownerDocument.createElement('c'); + c.setAttributeNodeNS(root.attributes.item(0)); + } catch (e) { + assert(e.code, 10, 'wrong error code'); + return; + } + assert.fail('expected error but none was thrown'); + }, + "override attribute":function(){ + var root = new DOMParser().parseFromString("",'text/xml').documentElement; + root.setAttributeNS('a','a:a','1'); + assert(root.attributes.length, 4); +//not standart +// root.firstChild.setAttributeNode(root.attributes[0]); +// assert(root.attributes.length, 0); + }, + "attribute namespace":function(){ + var root = new DOMParser().parseFromString("",'text/xml').documentElement; + assert(root.getAttributeNS("a", "b"), "e"); + }, + "override ns attribute":function(){ + + }, + "set existed attribute":function(){ + + }, + "set document existed attribute":function(){ + + } +}).export(module); // Run it diff --git a/test/dom/clone.vows.js b/test/dom/clone.vows.js index d6f4d53b4..82043f204 100644 --- a/test/dom/clone.vows.js +++ b/test/dom/clone.vows.js @@ -1,24 +1,24 @@ -var wows = require('vows'); -var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; -var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') - -// Create a Test Suite -wows.describe('XML Namespace Parse').addBatch({ - 'clone': function () { - var doc1 = new DOMParser().parseFromString("text1text2",'text/xml') - var doc1s = new XMLSerializer().serializeToString(doc1); - var n =doc1.cloneNode(true) - assert(n, doc1s) - }, - 'import': function () { - var doc1 = new DOMParser().parseFromString("") - var doc2 = new DOMParser().parseFromString("text1text2",'text/xml') - - var doc3 = new DOMParser().parseFromString("text1text2") - var n =doc1.importNode(doc2.documentElement, true) - doc1.documentElement.appendChild(n) - assert(doc1, doc3+'') - assert.isTrue(doc2 != doc3+'') - } -}).export(module); // Run it +var wows = require('vows'); +var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; +var DOMParser = require('../../lib/dom-parser').DOMParser; +const assert = require('../assert') + +// Create a Test Suite +wows.describe('XML Namespace Parse').addBatch({ + 'clone': function () { + var doc1 = new DOMParser().parseFromString("text1text2",'text/xml') + var doc1s = new XMLSerializer().serializeToString(doc1); + var n =doc1.cloneNode(true) + assert(n, doc1s) + }, + 'import': function () { + var doc1 = new DOMParser().parseFromString("") + var doc2 = new DOMParser().parseFromString("text1text2",'text/xml') + + var doc3 = new DOMParser().parseFromString("text1text2") + var n =doc1.importNode(doc2.documentElement, true) + doc1.documentElement.appendChild(n) + assert(doc1, doc3+'') + assert.isTrue(doc2 != doc3+'') + } +}).export(module); // Run it diff --git a/test/dom/element.vows.js b/test/dom/element.vows.js index fa67d25fc..1d91dc86d 100644 --- a/test/dom/element.vows.js +++ b/test/dom/element.vows.js @@ -1,148 +1,148 @@ -var wows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert') -var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; -// Create a Test Suite -wows.describe('XML Namespace Parse').addBatch({ - // See: http://jsfiddle.net/bigeasy/ShcXP/1/ - "Document_getElementsByTagName":function () { - var doc = new DOMParser().parseFromString(''); - assert(doc.getElementsByTagName('*').length, 2, 'on doc'); - assert(doc.documentElement.getElementsByTagName('*').length, 1, 'on doc.documentElement'); - }, - 'getElementsByTagName': function () { - - - var doc = new DOMParser().parseFromString('' + - ''+ - '' + - '','text/xml'); - var childs = doc.documentElement.getElementsByTagName('child'); - assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); - assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); - assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); - assert(childs.length, 3, 'documentElement children length'); - - var childs = doc.getElementsByTagName('child'); - assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); - assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); - assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); - assert(childs.length, 3, 'doc children length'); - - - - - - var childs = doc.documentElement.getElementsByTagName('*'); - for(var i=0,buf = [];ifoo'); - var entries = feed.documentElement.getElementsByTagName('entry'); - assert.equal(entries.length , 1,'assert entry nodelist length ==1'); - assert(entries[0].nodeName, 'entry'); - assert(feed.documentElement.childNodes.item(0).nodeName, 'entry'); - }, - 'getElementsByTagNameNS': function () { - var doc = new DOMParser().parseFromString('' + - ''+ - '' + - '','text/xml'); - - var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'*'); - var i=0 - assert(childs.length, 6); - - var childs = doc.getElementsByTagNameNS("http://test.com",'*'); - assert(childs.length, 7); - - var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'test'); - assert(childs.length, 3); - - var childs = doc.getElementsByTagNameNS("http://test.com",'test'); - assert(childs.length, 3); - - var childs = doc.getElementsByTagNameNS("*", "test"); - assert(childs.length, 4); - - var childs = doc.documentElement.getElementsByTagNameNS("*", "test"); - assert(childs.length, 4); - - }, - 'getElementById': function () { - var doc = new DOMParser().parseFromString('' + - '' + - '','text/xml'); - assert.isTrue(doc.getElementById('root') != null, 'root') - assert(doc.getElementById('a1').getAttribute('title'), "1", "first"); - assert(doc.getElementById('a2').getAttribute('title'), "2", "second"); - assert(doc.getElementById('a2').getAttribute('title2'), "", "empty"); - }, - "append exist child":function(){ - var doc = new DOMParser().parseFromString('' + - '' + - '','text/xml'); - - var doc1 = doc; - var str1=new XMLSerializer().serializeToString(doc); - var doc2 = doc1.cloneNode(true); - var doc3 = doc1.cloneNode(true); - var doc4 = doc1.cloneNode(true); - - doc3.documentElement.appendChild(doc3.documentElement.lastChild); - doc4.documentElement.appendChild(doc4.documentElement.firstChild); - - var str2=new XMLSerializer().serializeToString(doc2); - var str3=new XMLSerializer().serializeToString(doc3); - var str4=new XMLSerializer().serializeToString(doc4); - assert(str1, str2, 'str1 == str2') - assert(str2, str3, 'str2 == str3'); - assert.isTrue(str3 != str4, 'str4 != str3:' + str3); - assert(str3.length, str4.length, 'str3 and str4 have same length'); - - }, - "append exist other child":function(){ - var doc = new DOMParser().parseFromString('' + - '' + - '','text/xml'); - - var doc1 = doc; - var str1=new XMLSerializer().serializeToString(doc); - var doc2 = doc1.cloneNode(true); - - assert(doc2.documentElement.lastChild.childNodes.length, 0, 'initially 0'); - doc2.documentElement.appendChild(doc2.documentElement.firstChild.firstChild); - - var str2=new XMLSerializer().serializeToString(doc2); - - assert(doc2.documentElement.lastChild.childNodes.length, 1, '1 after adding'); - assert.isTrue(str1 != str2, 'str1 != str2'); - assert.isTrue(str1.length != str2.length, 'str1/length != str2.length'); - var doc3 = new DOMParser().parseFromString(str2,'text/xml'); - doc3.documentElement.firstChild.appendChild(doc3.documentElement.lastChild); - var str3 = new XMLSerializer().serializeToString(doc3); - assert(str1, str3, 'final assertion'); - }, - "set textContent":function() { - var doc = new DOMParser().parseFromString(''); - var a = doc.documentElement.firstChild; - var b = a.nextSibling; - a.textContent = 'hello'; - assert(doc.documentElement.toString(), 'hello'); - b.textContent = 'there'; - assert(doc.documentElement.toString(), 'hellothere'); - b.textContent = ''; - assert(doc.documentElement.toString(), 'hello'); - doc.documentElement.textContent = 'bye'; - assert(doc.documentElement.toString(), 'bye'); - }, - "nested append failed":function(){ - }, - "self append failed":function(){ - } -}).export(module); // Run it +var wows = require('vows'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +var assert = require('../assert') +var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; +// Create a Test Suite +wows.describe('XML Namespace Parse').addBatch({ + // See: http://jsfiddle.net/bigeasy/ShcXP/1/ + "Document_getElementsByTagName":function () { + var doc = new DOMParser().parseFromString(''); + assert(doc.getElementsByTagName('*').length, 2, 'on doc'); + assert(doc.documentElement.getElementsByTagName('*').length, 1, 'on doc.documentElement'); + }, + 'getElementsByTagName': function () { + + + var doc = new DOMParser().parseFromString('' + + ''+ + '' + + '','text/xml'); + var childs = doc.documentElement.getElementsByTagName('child'); + assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); + assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); + assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); + assert(childs.length, 3, 'documentElement children length'); + + var childs = doc.getElementsByTagName('child'); + assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); + assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); + assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); + assert(childs.length, 3, 'doc children length'); + + + + + + var childs = doc.documentElement.getElementsByTagName('*'); + for(var i=0,buf = [];ifoo'); + var entries = feed.documentElement.getElementsByTagName('entry'); + assert.equal(entries.length , 1,'assert entry nodelist length ==1'); + assert(entries[0].nodeName, 'entry'); + assert(feed.documentElement.childNodes.item(0).nodeName, 'entry'); + }, + 'getElementsByTagNameNS': function () { + var doc = new DOMParser().parseFromString('' + + ''+ + '' + + '','text/xml'); + + var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'*'); + var i=0 + assert(childs.length, 6); + + var childs = doc.getElementsByTagNameNS("http://test.com",'*'); + assert(childs.length, 7); + + var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'test'); + assert(childs.length, 3); + + var childs = doc.getElementsByTagNameNS("http://test.com",'test'); + assert(childs.length, 3); + + var childs = doc.getElementsByTagNameNS("*", "test"); + assert(childs.length, 4); + + var childs = doc.documentElement.getElementsByTagNameNS("*", "test"); + assert(childs.length, 4); + + }, + 'getElementById': function () { + var doc = new DOMParser().parseFromString('' + + '' + + '','text/xml'); + assert.isTrue(doc.getElementById('root') != null, 'root') + assert(doc.getElementById('a1').getAttribute('title'), "1", "first"); + assert(doc.getElementById('a2').getAttribute('title'), "2", "second"); + assert(doc.getElementById('a2').getAttribute('title2'), "", "empty"); + }, + "append exist child":function(){ + var doc = new DOMParser().parseFromString('' + + '' + + '','text/xml'); + + var doc1 = doc; + var str1=new XMLSerializer().serializeToString(doc); + var doc2 = doc1.cloneNode(true); + var doc3 = doc1.cloneNode(true); + var doc4 = doc1.cloneNode(true); + + doc3.documentElement.appendChild(doc3.documentElement.lastChild); + doc4.documentElement.appendChild(doc4.documentElement.firstChild); + + var str2=new XMLSerializer().serializeToString(doc2); + var str3=new XMLSerializer().serializeToString(doc3); + var str4=new XMLSerializer().serializeToString(doc4); + assert(str1, str2, 'str1 == str2') + assert(str2, str3, 'str2 == str3'); + assert.isTrue(str3 != str4, 'str4 != str3:' + str3); + assert(str3.length, str4.length, 'str3 and str4 have same length'); + + }, + "append exist other child":function(){ + var doc = new DOMParser().parseFromString('' + + '' + + '','text/xml'); + + var doc1 = doc; + var str1=new XMLSerializer().serializeToString(doc); + var doc2 = doc1.cloneNode(true); + + assert(doc2.documentElement.lastChild.childNodes.length, 0, 'initially 0'); + doc2.documentElement.appendChild(doc2.documentElement.firstChild.firstChild); + + var str2=new XMLSerializer().serializeToString(doc2); + + assert(doc2.documentElement.lastChild.childNodes.length, 1, '1 after adding'); + assert.isTrue(str1 != str2, 'str1 != str2'); + assert.isTrue(str1.length != str2.length, 'str1/length != str2.length'); + var doc3 = new DOMParser().parseFromString(str2,'text/xml'); + doc3.documentElement.firstChild.appendChild(doc3.documentElement.lastChild); + var str3 = new XMLSerializer().serializeToString(doc3); + assert(str1, str3, 'final assertion'); + }, + "set textContent":function() { + var doc = new DOMParser().parseFromString(''); + var a = doc.documentElement.firstChild; + var b = a.nextSibling; + a.textContent = 'hello'; + assert(doc.documentElement.toString(), 'hello'); + b.textContent = 'there'; + assert(doc.documentElement.toString(), 'hellothere'); + b.textContent = ''; + assert(doc.documentElement.toString(), 'hello'); + doc.documentElement.textContent = 'bye'; + assert(doc.documentElement.toString(), 'bye'); + }, + "nested append failed":function(){ + }, + "self append failed":function(){ + } +}).export(module); // Run it diff --git a/test/error/error.vows.js b/test/error/error.vows.js index ef7a7a617..9dc469524 100644 --- a/test/error/error.vows.js +++ b/test/error/error.vows.js @@ -1,95 +1,95 @@ -var wows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') - -var xml = '\n\ -\n\ - \n\ -\n\ - \n\ - \n\ - \n\ -\n\ - '; -var error = [] - var parser = new DOMParser({ - locator:{}, - errorHandler:{ - error:function(msg){ - error.push(msg); - } - } - }); - var doc = parser.parseFromString(xml, 'text/html'); -var doc = parser.parseFromString('<;test<1 1="2"/>', 'text/xml'); - assert.isTrue(typeof error.warning === 'string', 'error.warning: '+String(error.warning)); - assert.isTrue(typeof error.error === 'string', 'error.error: '+String(error.error)); - }, - 'only one function with one argument builds list': function() { - var error = [] - var parser = new DOMParser({ - errorHandler:function(msg){error.push(msg)} - }); - var doc = parser.parseFromString('<1 1="2"/>', 'text/xml'); - error.map(function(e){error[/^\[xmldom (\w+)\]/.exec(e)[1]]=e}) - assert.isTrue(typeof error.warning === 'string', 'error.warning:'+error.warning); - assert.isTrue(typeof error.error === 'string', 'error.error:'+error.error); - }, - 'compare one function with only one key': function() { - var error = [] - var errorMap = [] - const faulty = 'test'; - new DOMParser({ - errorHandler:function(msg){error.push(msg)} - }).parseFromString(faulty, 'text/xml'); - ['warn','warning','error','fatalError'].forEach(function(k){ - var errorHandler = {[k]:[]}; - errorHandler[k] = function(msg){errorMap[k].push(msg)} - new DOMParser({errorHandler:errorHandler}).parseFromString(faulty, 'text/xml'); - assert.isTrue(errorHandler[k].length > 0, 'expected entries for '+k); - }); - var error2 = []; - for(var n in errorMap){ - error2 = error2.concat(errorMap[n]) - assert(error.length, errorMap[n].length) - } - - assert(error2.sort().join(','), error.sort().join(','), 'expected same messages') - }, - 'error function throwing is not caught': function() { - var error = [] - var parser = new DOMParser({ - locator:{}, - errorHandler:{ - error:function(msg){ - error.push(msg); - throw new Error('from throwing errroHandler.error') - } - } - }); - var doc1 = parser.parseFromString('
<;test', 'text/html'); - try{ - var doc2 = parser.parseFromString('', 'text/html'); - }catch(e){ - if (e.message !== 'from throwing errroHandler.error') throw e - } - assert.isTrue( - error.length > 0 && error.every(e => /\n@#\[line\:\d+,col\:\d+\]/.test(e)), - 'line,col must record:'+JSON.stringify(error) - ) - assert(doc1, '
<;test'); - assert(doc2, undefined); - } -}).export(module); +var wows = require('vows'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +const assert = require('../assert') + +var xml = '\n\ +\n\ + \n\ +\n\ + \n\ + \n\ + \n\ +\n\ + '; +var error = [] + var parser = new DOMParser({ + locator:{}, + errorHandler:{ + error:function(msg){ + error.push(msg); + } + } + }); + var doc = parser.parseFromString(xml, 'text/html'); +var doc = parser.parseFromString('<;test<1 1="2"/>', 'text/xml'); + assert.isTrue(typeof error.warning === 'string', 'error.warning: '+String(error.warning)); + assert.isTrue(typeof error.error === 'string', 'error.error: '+String(error.error)); + }, + 'only one function with one argument builds list': function() { + var error = [] + var parser = new DOMParser({ + errorHandler:function(msg){error.push(msg)} + }); + var doc = parser.parseFromString('<1 1="2"/>', 'text/xml'); + error.map(function(e){error[/^\[xmldom (\w+)\]/.exec(e)[1]]=e}) + assert.isTrue(typeof error.warning === 'string', 'error.warning:'+error.warning); + assert.isTrue(typeof error.error === 'string', 'error.error:'+error.error); + }, + 'compare one function with only one key': function() { + var error = [] + var errorMap = [] + const faulty = 'test'; + new DOMParser({ + errorHandler:function(msg){error.push(msg)} + }).parseFromString(faulty, 'text/xml'); + ['warn','warning','error','fatalError'].forEach(function(k){ + var errorHandler = {[k]:[]}; + errorHandler[k] = function(msg){errorMap[k].push(msg)} + new DOMParser({errorHandler:errorHandler}).parseFromString(faulty, 'text/xml'); + assert.isTrue(errorHandler[k].length > 0, 'expected entries for '+k); + }); + var error2 = []; + for(var n in errorMap){ + error2 = error2.concat(errorMap[n]) + assert(error.length, errorMap[n].length) + } + + assert(error2.sort().join(','), error.sort().join(','), 'expected same messages') + }, + 'error function throwing is not caught': function() { + var error = [] + var parser = new DOMParser({ + locator:{}, + errorHandler:{ + error:function(msg){ + error.push(msg); + throw new Error('from throwing errroHandler.error') + } + } + }); + var doc1 = parser.parseFromString('
<;test', 'text/html'); + try{ + var doc2 = parser.parseFromString('', 'text/html'); + }catch(e){ + if (e.message !== 'from throwing errroHandler.error') throw e + } + assert.isTrue( + error.length > 0 && error.every(e => /\n@#\[line\:\d+,col\:\d+\]/.test(e)), + 'line,col must record:'+JSON.stringify(error) + ) + assert(doc1, '
<;test'); + assert(doc2, undefined); + } +}).export(module); diff --git a/test/error/xml-error.vows.js b/test/error/xml-error.vows.js index 8a4636d51..8e1ecc116 100644 --- a/test/error/xml-error.vows.js +++ b/test/error/xml-error.vows.js @@ -1,71 +1,71 @@ -var vows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert'); - - -vows.describe('errorHandle').addBatch({ - 'empty document': function() { - var errors = []; - var p = new DOMParser({ - errorHandler: function(key,msg){ - errors.push(key, msg) - } - }); - var dom = p.parseFromString('', 'text/xml'); - assert(errors.length, 2) - }, - 'unclosed document': function() { - var errors = []; - var p = new DOMParser({ - errorHandler: function(key,msg){ - errors.push(key, msg) - } - }); - var dom = p.parseFromString('', 'text/xml'); - assert(errors.length, 2) - }, - 'unclosed hmtl tags': function() { - var errors = []; - var p = new DOMParser({ - errorHandler: function(key,msg){ - errors.push(key, msg) - } - }); - var dom = p.parseFromString('', 'text/html'); - assert(errors.length, 0,"unclosed html tag not need report!!") - }, - "invalid xml node":function(){ - var errors = []; - var p = new DOMParser({ - errorHandler: function(key,msg){ - errors.push(key, msg) - } - }); - assert.equal( - p.parseFromString('', -'', -' ', -' ', -' ', -'', -' ' -].join('\n') - var parser = new DOMParser({locator:{}}); - var doc = parser.parseFromString(xml, 'text/xml'); - var trans = doc.getElementsByTagName('transition')[0]; - assert.equal(trans.lineNumber , 10)//,''+trans+trans.lineNumber+'/'+trans.parentNode.previousSibling.previousSibling.lineNumber) - - }, - 'node positions': function() { - var parser = new DOMParser({locator:{}}); - var doc = parser.parseFromString('\n' + - '\n' + - ' something\nx', 'text/xml'); - var test = doc.documentElement; - var a = test.firstChild.nextSibling; - assertPosition(doc.firstChild, 1, 1,'first child'); - assertPosition(doc.firstChild.nextSibling, 1, 1+''.length,'first child nextSibling'); - assertPosition(test, 2, 1,'document element'+test); - //assertPosition(test.firstChild, 1, 7); - assertPosition(a, 3, 3,'documentElement firstchild nextSibling'+a); - assertPosition(a.firstChild, 3, 19,'a.firstchild'); - assertPosition(a.firstChild.nextSibling, 3, 19+''.length,'a.firstchild.nextsibling'); - assertPosition(test.lastChild, 4, 5,'test.lastChild'); - }, - 'error positions':function(){ - var error = [] - var parser = new DOMParser({ - locator:{systemId:'c:/test/1.xml'}, - errorHandler:function(msg){ - error.push(msg); - } - }); - var xml = '<;test'; - var doc = parser.parseFromString(xml, 'text/html'); - var attr = doc.documentElement.firstChild.attributes.item(0); - assertPosition(attr, 1, 19,'title="1<2 ') - assert(error.length, 0); - }, - 'error positions p':function(){ - var error = [] - var parser = new DOMParser({ - locator:{}, - errorHandler:function(msg){ - error.push('@@'+msg); - } - }); - var doc = parser.parseFromString('\n\t', 'text/html'); - var root = doc.documentElement; - var textNode = root.firstChild; - assert.isTrue(/\n@#\[line\:2,col\:2\]/.test(error.join(' ')),'line,col must record:'+JSON.stringify(error)); - } -}).export(module); +var wows = require('vows'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +var assert = require('../assert') + +function assertPosition(n, line, col,info) { + assert.equal(n.lineNumber , line,'lineNumber:'+n.lineNumber+'/'+line+'\n@'+info); + assert.equal(n.columnNumber , col,'columnNumber:'+n.columnNumber+'/'+col+'\n@'+info); +} + +wows.describe('DOMLocator').addBatch({ + "empty line number":function(){ +var xml= [ +'', +'', +' ', +'', +' ', +' ', +' ', +'', +' ' +].join('\n') + var parser = new DOMParser({locator:{}}); + var doc = parser.parseFromString(xml, 'text/xml'); + var trans = doc.getElementsByTagName('transition')[0]; + assert.equal(trans.lineNumber , 10)//,''+trans+trans.lineNumber+'/'+trans.parentNode.previousSibling.previousSibling.lineNumber) + + }, + 'node positions': function() { + var parser = new DOMParser({locator:{}}); + var doc = parser.parseFromString('\n' + + '\n' + + ' something\nx', 'text/xml'); + var test = doc.documentElement; + var a = test.firstChild.nextSibling; + assertPosition(doc.firstChild, 1, 1,'first child'); + assertPosition(doc.firstChild.nextSibling, 1, 1+''.length,'first child nextSibling'); + assertPosition(test, 2, 1,'document element'+test); + //assertPosition(test.firstChild, 1, 7); + assertPosition(a, 3, 3,'documentElement firstchild nextSibling'+a); + assertPosition(a.firstChild, 3, 19,'a.firstchild'); + assertPosition(a.firstChild.nextSibling, 3, 19+''.length,'a.firstchild.nextsibling'); + assertPosition(test.lastChild, 4, 5,'test.lastChild'); + }, + 'error positions':function(){ + var error = [] + var parser = new DOMParser({ + locator:{systemId:'c:/test/1.xml'}, + errorHandler:function(msg){ + error.push(msg); + } + }); + var xml = '
<;test'; + var doc = parser.parseFromString(xml, 'text/html'); + var attr = doc.documentElement.firstChild.attributes.item(0); + assertPosition(attr, 1, 19,'title="1<2 ') + assert(error.length, 0); + }, + 'error positions p':function(){ + var error = [] + var parser = new DOMParser({ + locator:{}, + errorHandler:function(msg){ + error.push('@@'+msg); + } + }); + var doc = parser.parseFromString('\n\t', 'text/html'); + var root = doc.documentElement; + var textNode = root.firstChild; + assert.isTrue(/\n@#\[line\:2,col\:2\]/.test(error.join(' ')),'line,col must record:'+JSON.stringify(error)); + } +}).export(module); diff --git a/test/parse/namespace.vows.js b/test/parse/namespace.vows.js index d7d92bdf3..1e00c62e6 100644 --- a/test/parse/namespace.vows.js +++ b/test/parse/namespace.vows.js @@ -1,33 +1,33 @@ -var wows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') - -// Create a Test Suite -wows.describe('XML Namespace Parse').addBatch({ - 'default namespace': function () { - var dom = new DOMParser().parseFromString('','text/xml'); - var root = dom.documentElement; - assert(root.namespaceURI, 'http://test.com') - assert(root.lookupNamespaceURI(''), 'http://test.com') - assert(root.firstChild.namespaceURI, 'http://test.com') - assert(root.firstChild.lookupNamespaceURI(''), 'http://test.com') - assert(root.firstChild.getAttributeNode('attr').namespaceURI, null) - }, - 'prefix namespace': function () { - var dom = new DOMParser().parseFromString('','text/xml'); - var root = dom.documentElement; - assert(root.firstChild.namespaceURI, 'http://p1.com') - assert(root.lookupNamespaceURI('p1'), 'http://p1.com') - assert(root.firstChild.getAttributeNode('attr'), null) - assert(root.firstChild.getAttributeNode('p1:attr').namespaceURI, 'http://p1.com') - assert(root.firstChild.nextSibling.namespaceURI, 'http://p2.com') - assert(root.firstChild.nextSibling.lookupNamespaceURI('p2'), 'http://p2.com') - }, - 'after prefix namespace': function () { - var dom = new DOMParser().parseFromString('','text/xml'); - var root = dom.documentElement; - assert(root.firstChild.namespaceURI, 'http://p.com') - assert(root.lastChild.namespaceURI, 'http://test.com') - assert(root.firstChild.nextSibling.lookupNamespaceURI('p'), 'http://test.com') - } -}).export(module); // Run it +var wows = require('vows'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +const assert = require('../assert') + +// Create a Test Suite +wows.describe('XML Namespace Parse').addBatch({ + 'default namespace': function () { + var dom = new DOMParser().parseFromString('','text/xml'); + var root = dom.documentElement; + assert(root.namespaceURI, 'http://test.com') + assert(root.lookupNamespaceURI(''), 'http://test.com') + assert(root.firstChild.namespaceURI, 'http://test.com') + assert(root.firstChild.lookupNamespaceURI(''), 'http://test.com') + assert(root.firstChild.getAttributeNode('attr').namespaceURI, null) + }, + 'prefix namespace': function () { + var dom = new DOMParser().parseFromString('','text/xml'); + var root = dom.documentElement; + assert(root.firstChild.namespaceURI, 'http://p1.com') + assert(root.lookupNamespaceURI('p1'), 'http://p1.com') + assert(root.firstChild.getAttributeNode('attr'), null) + assert(root.firstChild.getAttributeNode('p1:attr').namespaceURI, 'http://p1.com') + assert(root.firstChild.nextSibling.namespaceURI, 'http://p2.com') + assert(root.firstChild.nextSibling.lookupNamespaceURI('p2'), 'http://p2.com') + }, + 'after prefix namespace': function () { + var dom = new DOMParser().parseFromString('','text/xml'); + var root = dom.documentElement; + assert(root.firstChild.namespaceURI, 'http://p.com') + assert(root.lastChild.namespaceURI, 'http://test.com') + assert(root.firstChild.nextSibling.lookupNamespaceURI('p'), 'http://test.com') + } +}).export(module); // Run it diff --git a/test/parse/node.vows.js b/test/parse/node.vows.js index f09c29a9b..bf40bf422 100644 --- a/test/parse/node.vows.js +++ b/test/parse/node.vows.js @@ -1,114 +1,114 @@ -var wows = require('vows'); -var assert = require('../assert'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; -var parser = new DOMParser(); -// Create a Test Suite -wows.describe('XML Node Parse').addBatch({ - 'element': function () { - var dom = new DOMParser().parseFromString(''); - assert(dom.childNodes.length, 1); - assert(dom.documentElement.childNodes.length, 1); - assert(dom.documentElement.tagName, 'xml'); - assert(dom.documentElement.firstChild.tagName, 'child'); - }, - 'text':function(){ - var dom = new DOMParser().parseFromString('start center end'); - var root = dom.documentElement; - assert(root.firstChild.data, 'start center end'); - assert(root.firstChild.nextSibling, null); - }, - 'cdata': function () { - var dom = new DOMParser().parseFromString('start ]]> end'); - var root = dom.documentElement; - assert(root.firstChild.data, 'start '); - assert(root.firstChild.nextSibling.data, ''); - assert(root.firstChild.nextSibling.nextSibling.nextSibling.data, '[[[[[[[[]]]]]]]]'); - }, - 'cdata empty': function () { - var dom = new DOMParser().parseFromString('start end'); - var root = dom.documentElement; - assert(root.textContent, 'start end'); - }, - 'comment': function(){ - var dom = new DOMParser().parseFromString(''); - var root = dom.documentElement; - assert(root.firstChild.nodeValue, ' comment&>< '); - }, - 'cdata comment': function(){ - var dom = new DOMParser().parseFromString('start ]]> end'); - var root = dom.documentElement; - assert(root.firstChild.nodeValue, 'start '); - assert(root.firstChild.nextSibling.nodeValue, ''); - assert(root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue, ' comment '); - assert(root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue, 'end'); - }, - 'append node': function () { - var dom = new DOMParser().parseFromString(''); - var child = dom.createElement("child"); - assert(child, dom.documentElement.appendChild(child)); - assert(child, dom.documentElement.firstChild); - var fragment = new dom.createDocumentFragment(); - 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); - assert(node, child.previousSibling); - assert(node.nextSibling, child); - 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")); - assert(fragment.firstChild, first); - assert(fragment.lastChild, last); - assert(last.previousSibling, first); - assert(first.nextSibling, last); - var child = dom.documentElement.firstChild; - child.parentNode.insertBefore(fragment, child); - assert(last.previousSibling, first); - assert(first.nextSibling, last); - assert(child.parentNode.firstChild, first); - assert(last, child.previousSibling); - assert(last.nextSibling, child); - assert(first.parentNode, child.parentNode); - assert(last.parentNode, child.parentNode); - } -}).addBatch({ - "instruction":function(){ - var source = '&'; - var doc = new DOMParser().parseFromString(source,"text/xml"); - var source2 = new XMLSerializer().serializeToString(doc); - assert(source2, source); - }, - 'public id && sysid':function(){ - var error = [] - var parser = new DOMParser({ - locator:{}, - errorHandler:function(msg){ - error.push(msg); - } - }); - var doc = parser.parseFromString('', 'text/html'); - assert(doc+'', '') - - } -}).export(module); // 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; +var wows = require('vows'); +var assert = require('../assert'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; +var parser = new DOMParser(); +// Create a Test Suite +wows.describe('XML Node Parse').addBatch({ + 'element': function () { + var dom = new DOMParser().parseFromString(''); + assert(dom.childNodes.length, 1); + assert(dom.documentElement.childNodes.length, 1); + assert(dom.documentElement.tagName, 'xml'); + assert(dom.documentElement.firstChild.tagName, 'child'); + }, + 'text':function(){ + var dom = new DOMParser().parseFromString('start center end'); + var root = dom.documentElement; + assert(root.firstChild.data, 'start center end'); + assert(root.firstChild.nextSibling, null); + }, + 'cdata': function () { + var dom = new DOMParser().parseFromString('start ]]> end'); + var root = dom.documentElement; + assert(root.firstChild.data, 'start '); + assert(root.firstChild.nextSibling.data, ''); + assert(root.firstChild.nextSibling.nextSibling.nextSibling.data, '[[[[[[[[]]]]]]]]'); + }, + 'cdata empty': function () { + var dom = new DOMParser().parseFromString('start end'); + var root = dom.documentElement; + assert(root.textContent, 'start end'); + }, + 'comment': function(){ + var dom = new DOMParser().parseFromString(''); + var root = dom.documentElement; + assert(root.firstChild.nodeValue, ' comment&>< '); + }, + 'cdata comment': function(){ + var dom = new DOMParser().parseFromString('start ]]> end'); + var root = dom.documentElement; + assert(root.firstChild.nodeValue, 'start '); + assert(root.firstChild.nextSibling.nodeValue, ''); + assert(root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue, ' comment '); + assert(root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue, 'end'); + }, + 'append node': function () { + var dom = new DOMParser().parseFromString(''); + var child = dom.createElement("child"); + assert(child, dom.documentElement.appendChild(child)); + assert(child, dom.documentElement.firstChild); + var fragment = new dom.createDocumentFragment(); + 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); + assert(node, child.previousSibling); + assert(node.nextSibling, child); + 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")); + assert(fragment.firstChild, first); + assert(fragment.lastChild, last); + assert(last.previousSibling, first); + assert(first.nextSibling, last); + var child = dom.documentElement.firstChild; + child.parentNode.insertBefore(fragment, child); + assert(last.previousSibling, first); + assert(first.nextSibling, last); + assert(child.parentNode.firstChild, first); + assert(last, child.previousSibling); + assert(last.nextSibling, child); + assert(first.parentNode, child.parentNode); + assert(last.parentNode, child.parentNode); + } +}).addBatch({ + "instruction":function(){ + var source = '&'; + var doc = new DOMParser().parseFromString(source,"text/xml"); + var source2 = new XMLSerializer().serializeToString(doc); + assert(source2, source); + }, + 'public id && sysid':function(){ + var error = [] + var parser = new DOMParser({ + locator:{}, + errorHandler:function(msg){ + error.push(msg); + } + }); + var doc = parser.parseFromString('', 'text/html'); + assert(doc+'', '') + + } +}).export(module); // 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; diff --git a/test/parse/parse-element.vows.js b/test/parse/parse-element.vows.js index fc7e111fd..6431d9474 100644 --- a/test/parse/parse-element.vows.js +++ b/test/parse/parse-element.vows.js @@ -1,34 +1,34 @@ -var wows = require('vows'); -var assert = require('../assert'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; -var parser = new DOMParser(); - -wows.describe('XML Node Parse').addBatch({ - 'noAttribute': function () { - const expected = '' - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString(expected,'text/xml')+'', expected); - }, - 'simpleAttribute': function () { - const expected = '' - const expectedEmptyB = '' - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), ''); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - }, - 'nsAttribute': function () { - const expected = ''; - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected.replace('3', '3/')); - assert(new DOMParser().parseFromString('','text/xml'), expected); - } -}).export(module); +var wows = require('vows'); +var assert = require('../assert'); +var DOMParser = require('../../lib/dom-parser').DOMParser; +var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; +var parser = new DOMParser(); + +wows.describe('XML Node Parse').addBatch({ + 'noAttribute': function () { + const expected = '' + assert(new DOMParser().parseFromString('','text/xml')+'', expected); + assert(new DOMParser().parseFromString('','text/xml')+'', expected); + assert(new DOMParser().parseFromString('','text/xml')+'', expected); + assert(new DOMParser().parseFromString(expected,'text/xml')+'', expected); + }, + 'simpleAttribute': function () { + const expected = '' + const expectedEmptyB = '' + assert(new DOMParser().parseFromString('','text/xml'), expected); + assert(new DOMParser().parseFromString('','text/xml'), expected); + assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert(new DOMParser().parseFromString('','text/xml'), ''); + assert(new DOMParser().parseFromString('','text/xml'), expected); + assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + }, + 'nsAttribute': function () { + const expected = ''; + assert(new DOMParser().parseFromString('','text/xml'), expected); + assert(new DOMParser().parseFromString('','text/xml'), expected); + assert(new DOMParser().parseFromString('','text/xml'), expected.replace('3', '3/')); + assert(new DOMParser().parseFromString('','text/xml'), expected); + } +}).export(module); diff --git a/test/parse/simple.vows.js b/test/parse/simple.vows.js index e7a7de391..810521a70 100644 --- a/test/parse/simple.vows.js +++ b/test/parse/simple.vows.js @@ -1,52 +1,52 @@ -var wows = require('vows'); -var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert') - -wows.describe('parse').addBatch({ -'simple': function() { - var parser = new DOMParser(); - var doc = parser.parseFromString('', 'text/html'); - assert(doc+'', ''); - }, - 'unclosedFix':function(){ - var parser = new DOMParser(); - var dom = parser.parseFromString('', "text/xml"); - assert(dom+'', ' '); - }, - 'test':function(){ - var parser = new DOMParser(); - var dom = parser.parseFromString('