import { fill, join, line } from "../../src/document/index.js"; import { printDocToString } from "../../src/document/printer/printer.js"; test("`printDocToString` should not manipulate docs", () => { const printOptions = { printWidth: 40, tabWidth: 2 }; const doc = fill( join( line, Array.from({ length: 255 }, (_, index) => String(index + 1)), ), ); expect(doc.parts.length).toBe(255 + 254); const { formatted: firstPrint } = printDocToString(doc, printOptions); expect(doc.parts.length).toBe(255 + 254); const { formatted: secondPrint } = printDocToString(doc, printOptions); expect(firstPrint).toBe(secondPrint); { // About 1000 lines, #3263 const WORD = "word"; const hugeParts = join( line, Array.from( { length: 1000 * Math.ceil(printOptions.printWidth / WORD.length) }, () => WORD, ), ); const orignalLength = hugeParts.length; const { formatted } = printDocToString(fill(hugeParts), printOptions); expect(hugeParts.length).toBe(orignalLength); const lines = formatted.split("\n"); expect(lines.length).toBeGreaterThan(1000); } });