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&lt;html&gt;&lt;head&gt;&lt;body&gt;</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