193fb6ee3Sopenharmony_ciimport * as assert from 'node:assert'; 293fb6ee3Sopenharmony_ciimport { ParserStream } from '../lib/index.js'; 393fb6ee3Sopenharmony_ciimport { generateParsingTests } from 'parse5-test-utils/utils/generate-parsing-tests.js'; 493fb6ee3Sopenharmony_ciimport { parseChunked } from './utils/parse-chunked.js'; 593fb6ee3Sopenharmony_ciimport { finished } from 'parse5-test-utils/utils/common.js'; 693fb6ee3Sopenharmony_ci 793fb6ee3Sopenharmony_cigenerateParsingTests( 893fb6ee3Sopenharmony_ci 'ParserStream', 993fb6ee3Sopenharmony_ci 'ParserStream', 1093fb6ee3Sopenharmony_ci { 1193fb6ee3Sopenharmony_ci expectErrors: [ 1293fb6ee3Sopenharmony_ci //TODO(GH-448): Foreign content behaviour was updated in the HTML spec. 1393fb6ee3Sopenharmony_ci //The old test suite still tests the old behaviour. 1493fb6ee3Sopenharmony_ci '0.foreign-fragment', 1593fb6ee3Sopenharmony_ci '1.foreign-fragment', 1693fb6ee3Sopenharmony_ci '38.foreign-fragment', 1793fb6ee3Sopenharmony_ci '40.foreign-fragment', 1893fb6ee3Sopenharmony_ci '47.foreign-fragment', 1993fb6ee3Sopenharmony_ci '48.foreign-fragment', 2093fb6ee3Sopenharmony_ci ], 2193fb6ee3Sopenharmony_ci }, 2293fb6ee3Sopenharmony_ci (test, opts) => parseChunked(test, opts) 2393fb6ee3Sopenharmony_ci); 2493fb6ee3Sopenharmony_ci 2593fb6ee3Sopenharmony_cidescribe('ParserStream', () => { 2693fb6ee3Sopenharmony_ci it('Fix empty stream parsing with ParserStream (GH-196)', async () => { 2793fb6ee3Sopenharmony_ci const parser = new ParserStream(); 2893fb6ee3Sopenharmony_ci 2993fb6ee3Sopenharmony_ci parser.end(); 3093fb6ee3Sopenharmony_ci 3193fb6ee3Sopenharmony_ci await finished(parser); 3293fb6ee3Sopenharmony_ci 3393fb6ee3Sopenharmony_ci assert.ok(parser.document.childNodes.length > 0); 3493fb6ee3Sopenharmony_ci }); 3593fb6ee3Sopenharmony_ci 3693fb6ee3Sopenharmony_ci it('Should not accept binary input (GH-269)', () => { 3793fb6ee3Sopenharmony_ci const stream = new ParserStream(); 3893fb6ee3Sopenharmony_ci const buf = Buffer.from('test'); 3993fb6ee3Sopenharmony_ci 4093fb6ee3Sopenharmony_ci assert.throws(() => stream.write(buf), TypeError); 4193fb6ee3Sopenharmony_ci }); 4293fb6ee3Sopenharmony_ci}); 43