193fb6ee3Sopenharmony_ciimport * as assert from 'node:assert'; 293fb6ee3Sopenharmony_ciimport { serialize } from 'parse5'; 393fb6ee3Sopenharmony_ciimport { PlainTextConversionStream } from '../lib/index.js'; 493fb6ee3Sopenharmony_ciimport { generateTestsForEachTreeAdapter } from 'parse5-test-utils/utils/common.js'; 593fb6ee3Sopenharmony_ci 693fb6ee3Sopenharmony_cigenerateTestsForEachTreeAdapter('plain-test-conversion-stream', (treeAdapter) => { 793fb6ee3Sopenharmony_ci it('Plain text conversion stream', () => { 893fb6ee3Sopenharmony_ci const converter = new PlainTextConversionStream({ treeAdapter }); 993fb6ee3Sopenharmony_ci 1093fb6ee3Sopenharmony_ci converter.write('Hey'); 1193fb6ee3Sopenharmony_ci converter.write('\r\nyo'); 1293fb6ee3Sopenharmony_ci converter.write('\u0000'); 1393fb6ee3Sopenharmony_ci converter.end('<html><head><body>'); 1493fb6ee3Sopenharmony_ci 1593fb6ee3Sopenharmony_ci const result = serialize(converter.document, { treeAdapter }); 1693fb6ee3Sopenharmony_ci 1793fb6ee3Sopenharmony_ci assert.strictEqual( 1893fb6ee3Sopenharmony_ci result, 1993fb6ee3Sopenharmony_ci '<html><head></head><body><pre>\nHey\nyo\uFFFD<html><head><body></pre></body></html>' 2093fb6ee3Sopenharmony_ci ); 2193fb6ee3Sopenharmony_ci }); 2293fb6ee3Sopenharmony_ci}); 2393fb6ee3Sopenharmony_ci 2493fb6ee3Sopenharmony_cidescribe('plain-text-conversion-stream', () => { 2593fb6ee3Sopenharmony_ci it('Should not accept binary input (GH-269)', () => { 2693fb6ee3Sopenharmony_ci const stream = new PlainTextConversionStream(); 2793fb6ee3Sopenharmony_ci const buf = Buffer.from('test'); 2893fb6ee3Sopenharmony_ci 2993fb6ee3Sopenharmony_ci assert.throws(() => stream.write(buf), TypeError); 3093fb6ee3Sopenharmony_ci }); 3193fb6ee3Sopenharmony_ci}); 32