• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2require('../common');
3const { Readable } = require('stream');
4const assert = require('assert');
5
6{
7  // Call .setEncoding() while there are bytes already in the buffer.
8  const r = new Readable({ read() {} });
9
10  r.push(Buffer.from('a'));
11  r.push(Buffer.from('b'));
12
13  r.setEncoding('utf8');
14  const chunks = [];
15  r.on('data', (chunk) => chunks.push(chunk));
16
17  process.nextTick(() => {
18    assert.deepStrictEqual(chunks, ['ab']);
19  });
20}
21
22{
23  // Call .setEncoding() while the buffer contains a complete,
24  // but chunked character.
25  const r = new Readable({ read() {} });
26
27  r.push(Buffer.from([0xf0]));
28  r.push(Buffer.from([0x9f]));
29  r.push(Buffer.from([0x8e]));
30  r.push(Buffer.from([0x89]));
31
32  r.setEncoding('utf8');
33  const chunks = [];
34  r.on('data', (chunk) => chunks.push(chunk));
35
36  process.nextTick(() => {
37    assert.deepStrictEqual(chunks, ['��']);
38  });
39}
40
41{
42  // Call .setEncoding() while the buffer contains an incomplete character,
43  // and finish the character later.
44  const r = new Readable({ read() {} });
45
46  r.push(Buffer.from([0xf0]));
47  r.push(Buffer.from([0x9f]));
48
49  r.setEncoding('utf8');
50
51  r.push(Buffer.from([0x8e]));
52  r.push(Buffer.from([0x89]));
53
54  const chunks = [];
55  r.on('data', (chunk) => chunks.push(chunk));
56
57  process.nextTick(() => {
58    assert.deepStrictEqual(chunks, ['��']);
59  });
60}
61