• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2require('../common');
3const assert = require('assert');
4
5const stream = require('stream');
6
7class MyWritable extends stream.Writable {
8  _write(chunk, encoding, callback) {
9    assert.notStrictEqual(chunk, null);
10    callback();
11  }
12}
13
14assert.throws(
15  () => {
16    const m = new MyWritable({ objectMode: true });
17    m.write(null, (err) => assert.ok(err));
18  },
19  {
20    code: 'ERR_STREAM_NULL_VALUES',
21    name: 'TypeError',
22    message: 'May not write null values to stream'
23  }
24);
25
26{ // Should not throw.
27  const m = new MyWritable({ objectMode: true }).on('error', assert);
28  m.write(null, assert);
29}
30
31assert.throws(
32  () => {
33    const m = new MyWritable();
34    m.write(false, (err) => assert.ok(err));
35  },
36  {
37    code: 'ERR_INVALID_ARG_TYPE',
38    name: 'TypeError'
39  }
40);
41
42{ // Should not throw.
43  const m = new MyWritable().on('error', assert);
44  m.write(false, assert);
45}
46
47{ // Should not throw.
48  const m = new MyWritable({ objectMode: true });
49  m.write(false, assert.ifError);
50}
51
52{ // Should not throw.
53  const m = new MyWritable({ objectMode: true }).on('error', (e) => {
54    assert.ifError(e || new Error('should not get here'));
55  });
56  m.write(false, assert.ifError);
57}
58