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