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