const Lexer = require("../lexer.js"); const { expect, makeDocx, cleanRecursive } = require("./utils"); const fixtures = require("./fixtures"); const docxconfig = require("../file-type-config").docx; const inspectModule = require("../inspect-module.js"); const AssertionModule = require("./assertion-module.js"); const tagsDocxConfig = { text: docxconfig.tagsXmlTextArray, other: docxconfig.tagsXmlLexedArray, }; describe("Algorithm", function () { Object.keys(fixtures).forEach(function (key) { const fixture = fixtures[key]; (fixture.onlySync ? it.only : it)(fixture.it, function () { const doc = makeDocx(key, fixture.content); doc.setOptions(fixture.options); const iModule = inspectModule(); doc.attachModule(iModule).attachModule(new AssertionModule()); doc.setData(fixture.scope); doc.render(); cleanRecursive(iModule.inspect.lexed); cleanRecursive(iModule.inspect.parsed); cleanRecursive(iModule.inspect.postparsed); if (fixture.result !== null) { expect(iModule.inspect.content).to.be.deep.equal( fixture.result, "Content incorrect" ); } if (fixture.lexed !== null) { expect(iModule.inspect.lexed).to.be.deep.equal( fixture.lexed, "Lexed incorrect" ); } if (fixture.parsed !== null) { expect(iModule.inspect.parsed).to.be.deep.equal( fixture.parsed, "Parsed incorrect" ); } if (fixture.postparsed !== null) { expect(iModule.inspect.postparsed).to.be.deep.equal( fixture.postparsed, "Postparsed incorrect" ); } }); }); Object.keys(fixtures).forEach(function (key) { const fixture = fixtures[key]; (fixture.only ? it.only : it)(`Async ${fixture.it}`, function () { const doc = makeDocx(key, fixture.content); doc.setOptions(fixture.options); const iModule = inspectModule(); doc.attachModule(iModule); doc.compile(); return doc.resolveData(fixture.scope).then(function () { doc.render(); cleanRecursive(iModule.inspect.lexed); cleanRecursive(iModule.inspect.parsed); cleanRecursive(iModule.inspect.postparsed); if (fixture.result !== null) { expect(iModule.inspect.content).to.be.deep.equal( fixture.result, "Content incorrect" ); } if (fixture.resolved) { expect(iModule.inspect.resolved).to.be.deep.equal( fixture.resolved, "Resolved incorrect" ); } if (fixture.lexed !== null) { expect(iModule.inspect.lexed).to.be.deep.equal( fixture.lexed, "Lexed incorrect" ); } if (fixture.parsed !== null) { expect(iModule.inspect.parsed).to.be.deep.equal( fixture.parsed, "Parsed incorrect" ); } if (fixture.postparsed !== null) { expect(iModule.inspect.postparsed).to.be.deep.equal( fixture.postparsed, "Postparsed incorrect" ); } }); }); }); it("should xmlparse strange tags", function () { const xmllexed = Lexer.xmlparse( fixtures.strangetags.content, tagsDocxConfig ); cleanRecursive(xmllexed); expect(xmllexed).to.be.deep.equal(fixtures.strangetags.xmllexed); }); it("should xmlparse selfclosing tag", function () { const xmllexed = Lexer.xmlparse("", { text: [], other: ["w:rPr", "w:noProof"], }); expect(xmllexed).to.be.deep.equal([ { type: "tag", position: "start", text: false, value: "", tag: "w:rPr", }, { type: "tag", position: "selfclosing", text: false, value: "", tag: "w:noProof", }, { type: "tag", position: "end", text: false, value: "", tag: "w:rPr", }, ]); }); });