import fs from "fs"; import "mocha"; import should from "should"; import stream from "stream"; import zlib from "zlib"; import { XmlParser } from "../src/parser"; describe("nodes with same names", () => { it("should properly parse a simple file containing nodes with same names.", (done) => { const xmlStream = fs.createReadStream("./test/TestFiles/nodesWithSameNames.xml"); const parser = new XmlParser(); const actualData: string[] = []; const actualItems: string[] = []; let dataEventCount = 0; parser.on("data", (data) => { actualData.push(data); dataEventCount++; }); parser.on("error", (err) => { should(err).not.be.ok(); done(err); }); parser.on("item", (item) => { actualItems.push(item); }); parser.on("end", () => { should(actualItems.length).equal(18); should(dataEventCount).equal(18); done(); }); xmlStream.pipe(parser); }); it("should properly parse a simple file containing nodes with same names and emit events on multiple nodes.", (done) => { const xmlStream = fs.createReadStream("./test/TestFiles/nodesWithSameNames.xml"); const parser = new XmlParser(); let dataEventCount = 0; let itemEventCount = 0; let subitemEventCount = 0; parser.on("data", (data) => { dataEventCount++; }); parser.on("error", (err) => { should(err).not.be.ok(); done(err); }); parser.on("item", (item) => { itemEventCount++; }); parser.on("subitem", (subitem) => { subitemEventCount++; }); parser.on("end", () => { should(itemEventCount).equal(18); should(subitemEventCount).equal(13); should(dataEventCount).equal(31); done(); }); xmlStream.pipe(parser); }); it("should properly parse a medium size file with same names randomly.", (done) => { const xmlStream = fs.createReadStream("./test/TestFiles/nodesWithSameNamesRandomly.xml"); const parser = new XmlParser(); let dataEventCount = 0; let itemEventCount = 0; let subitemEventCount = 0; parser.on("data", (data) => { dataEventCount++; }); parser.on("error", (err) => { done(err); }); parser.on("item", (item) => { itemEventCount++; }); parser.on("subitem", (subitem) => { subitemEventCount++; }); parser.on("end", () => { // console.log('dataEventCount=', dataEventCount) // console.log('itemEventCount=', itemEventCount) // console.log('subitemEventCount=', subitemEventCount) should(dataEventCount).equal(32); should(itemEventCount).equal(19); should(subitemEventCount).equal(13); done(); }); xmlStream.pipe(parser); }); });