Path: blob/main/src/vs/base/test/node/nodeStreams.test.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/456import { Writable } from 'stream';7import assert from 'assert';8import { StreamSplitter } from '../../node/nodeStreams.js';9import { ensureNoDisposablesAreLeakedInTestSuite } from '../common/utils.js';1011suite('StreamSplitter', () => {12ensureNoDisposablesAreLeakedInTestSuite();1314test('should split a stream on a single character splitter', (done) => {15const chunks: string[] = [];16const splitter = new StreamSplitter('\n');17const writable = new Writable({18write(chunk, _encoding, callback) {19chunks.push(chunk.toString());20callback();21},22});2324splitter.pipe(writable);25splitter.write('hello\nwor');26splitter.write('ld\n');27splitter.write('foo\nbar\nz');28splitter.end(() => {29assert.deepStrictEqual(chunks, ['hello\n', 'world\n', 'foo\n', 'bar\n', 'z']);30done();31});32});3334test('should split a stream on a multi-character splitter', (done) => {35const chunks: string[] = [];36const splitter = new StreamSplitter('---');37const writable = new Writable({38write(chunk, _encoding, callback) {39chunks.push(chunk.toString());40callback();41},42});4344splitter.pipe(writable);45splitter.write('hello---wor');46splitter.write('ld---');47splitter.write('foo---bar---z');48splitter.end(() => {49assert.deepStrictEqual(chunks, ['hello---', 'world---', 'foo---', 'bar---', 'z']);50done();51});52});53});545556