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.
50 lines
2.0 KiB
50 lines
2.0 KiB
var wows = require('vows');
|
|
var DOMParser = require('xmldom').DOMParser;
|
|
|
|
function assertPosition(n, line, col) {
|
|
console.assert(n.lineNumber == line,'lineNumber:'+n.lineNumber+'/'+line);
|
|
console.assert(n.columnNumber == col,'columnNumber:'+n.columnNumber+'/'+col);
|
|
}
|
|
|
|
wows.describe('DOMLocator').addBatch({
|
|
'node positions': function() {
|
|
var parser = new DOMParser({locator:{}});
|
|
var doc = parser.parseFromString('<?xml version="1.0"?><!-- aaa -->\n<test>\n <a attr="value"><![CDATA[1]]>something\n</a>x</test>', 'text/xml');
|
|
var test = doc.documentElement;
|
|
var a = test.firstChild.nextSibling;
|
|
assertPosition(doc.firstChild, 1, 1);
|
|
assertPosition(doc.firstChild.nextSibling, 1, 1+'<?xml version="1.0"?>'.length);
|
|
assertPosition(test, 2, 1);
|
|
//assertPosition(test.firstChild, 1, 7);
|
|
assertPosition(a, 3, 3);
|
|
assertPosition(a.firstChild, 3, 19);
|
|
assertPosition(a.firstChild.nextSibling, 3, 19+'<![CDATA[1]]>'.length);
|
|
assertPosition(test.lastChild, 4, 5);
|
|
},
|
|
'error positions':function(){
|
|
var error = []
|
|
var parser = new DOMParser({
|
|
locator:{systemId:'c:/test/1.xml'},
|
|
errorHandler:function(msg){
|
|
error.push(msg);
|
|
}
|
|
});
|
|
var doc = parser.parseFromString('<html><body title="1<2"><table><;test</body></body></html>', 'text/html');
|
|
console.assert(/\n@c\:\/test\/1\.xml#\[line\:\d+,col\:\d+\]/.test(error.join(' ')),'line,col must record:'+error)
|
|
},
|
|
'error positions p':function(){
|
|
var error = []
|
|
var parser = new DOMParser({
|
|
locator:{},
|
|
errorHandler:function(msg){
|
|
error.push(msg);
|
|
}
|
|
});
|
|
var doc = parser.parseFromString('<root>\n\t<err</root>', 'text/html');
|
|
var root = doc.documentElement;
|
|
var textNode = root.firstChild;
|
|
console.log(root+'/'+textNode)
|
|
console.assert(/\n@#\[line\:2,col\:2\]/.test(error.join(' ')),'line,col must record:'+error);
|
|
console.log(textNode.lineNumber+'/'+textNode.columnNumber)
|
|
}
|
|
}).run(); |