/
xml_suite.js
89 lines (74 loc) · 2.24 KB
/
xml_suite.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var test = require("test");
test.setup();
var xml = require('xml');
var fs = require('fs');
var path = require('path');
var props = [
[],
['tagName', 'namespaceURI', 'prefix', 'localName'],
[],
['data', 'length'],
['data', 'length'],
[],
[],
['target', 'data'],
['data', 'length'],
[],
['name', 'systemId']
];
var attr_props = ['name', 'value', 'namespaceURI', 'prefix', 'localName'];
function dump_dom(dom) {
var type = dom.nodeType;
var o = {
'nodeType': type,
'nodeName': dom.nodeName,
'nodeValue': dom.nodeValue,
'childNodes': []
};
props[type].forEach((n) => {
o[n] = dom[n];
});
if (type == 1) {
o.attributes = [];
var attrs = dom.attributes;
var sz = attrs.length;
for (var i = 0; i < sz; i++) {
var o1 = {};
var attr = attrs[i];
attr_props.forEach((n) => {
o1[n] = attr[n];
});
o.attributes.push(o1);
}
}
var childs = dom.childNodes;
if (childs) {
var sz = childs.length;
for (var i = 0; i < sz; i++)
o.childNodes.push(dump_dom(childs[i]));
}
return o;
}
describe('xml', () => {
function _test(i) {
var id = ("000" + i).slice(-4);
it("xml_files/xml/" + id + ".xml", () => {
var txt = fs.readTextFile(path.join(__dirname, "xml_files", "xml", id + ".xml"));
var json = fs.readTextFile(path.join(__dirname, "xml_files", "json", id + ".json"));
var out = fs.readTextFile(path.join(__dirname, "xml_files", "out", id + ".xml"));
var xdoc = xml.parse(txt);
assert.equal(JSON.stringify(dump_dom(xdoc)), json);
assert.equal(xdoc.toString(), out);
var xdoc1 = xdoc.cloneNode();
assert.notEqual(xdoc, xdoc1);
assert.equal(JSON.stringify(dump_dom(xdoc1)), json);
assert.equal(xdoc1.toString(), out);
xdoc1.normalize();
assert.equal(xdoc1.toString(), out);
assert.equal(JSON.stringify(dump_dom(xdoc1)), json);
});
}
for (var i = 1; i <= 1180; i++)
_test(i);
});
require.main === module && test.run(console.DEBUG);