@ -1,77 +1,63 @@
'use strict' ;
require ( '../common' ) ;
var assert = require ( 'assert' ) ;
const common = require ( '../common' ) ;
const assert = require ( 'assert' ) ;
const Readable = require ( '_stream_readable' ) ;
const Writable = require ( '_stream_writable' ) ;
const EE = require ( 'events' ) . EventEmitter ;
var Readable = require ( '_stream_readable' ) ;
var Writable = require ( '_stream_writable' ) ;
var EE = require ( 'events' ) . EventEmitter ;
var testRuns = 0 , completedRuns = 0 ;
function runTest ( highWaterMark , objectMode , produce ) {
testRuns ++ ;
var old = new EE ( ) ;
var r = new Readable ( { highWaterMark : highWaterMark ,
objectMode : objectMode } ) ;
assert . e qual( r , r . wrap ( old ) ) ;
const old = new EE ( ) ;
const r = new Readable ( { highWaterMark : highWaterMark ,
objectMode : objectMode } ) ;
assert . strictE qual( r , r . wrap ( old ) ) ;
var ended = false ;
r . on ( 'end' , function ( ) {
ended = true ;
} ) ;
r . on ( 'end' , common . mustCall ( function ( ) { } ) ) ;
old . pause = function ( ) {
console . error ( 'old.pause()' ) ;
old . emit ( 'pause' ) ;
flowing = false ;
} ;
old . resume = function ( ) {
console . error ( 'old.resume()' ) ;
old . emit ( 'resume' ) ;
flow ( ) ;
} ;
var flowing ;
var chunks = 10 ;
var oldEnded = false ;
var expected = [ ] ;
let flowing ;
let chunks = 10 ;
let oldEnded = false ;
const expected = [ ] ;
function flow ( ) {
flowing = true ;
while ( flowing && chunks -- > 0 ) {
var item = produce ( ) ;
const item = produce ( ) ;
expected . push ( item ) ;
console . log ( 'old.emit' , chunks , flowing ) ;
old . emit ( 'data' , item ) ;
console . log ( 'after emit' , chunks , flowing ) ;
}
if ( chunks <= 0 ) {
oldEnded = true ;
console . log ( 'old end' , chunks , flowing ) ;
old . emit ( 'end' ) ;
}
}
var w = new Writable ( { highWaterMark : highWaterMark * 2 ,
objectMode : objectMode } ) ;
var written = [ ] ;
const w = new Writable ( { highWaterMark : highWaterMark * 2 ,
objectMode : objectMode } ) ;
const written = [ ] ;
w . _ write = function ( chunk , encoding , cb ) {
console . log ( '_write' , chunk ) ;
written . push ( chunk ) ;
setTimeout ( cb ) ;
setTimeout ( cb , 1 ) ;
} ;
w . on ( 'finish' , function ( ) {
completedRuns ++ ;
w . on ( 'finish' , common . mustCall ( function ( ) {
performAsserts ( ) ;
} ) ;
} ) ) ;
r . pipe ( w ) ;
flow ( ) ;
function performAsserts ( ) {
assert ( ended ) ;
assert ( oldEnded ) ;
assert . deepStrictEqual ( written , expected ) ;
}
@ -81,10 +67,5 @@ runTest(100, false, function() { return Buffer.allocUnsafe(100); });
runTest ( 10 , false , function ( ) { return Buffer . from ( 'xxxxxxxxxx' ) ; } ) ;
runTest ( 1 , true , function ( ) { return { foo : 'bar' } ; } ) ;
var objectChunks = [ 5 , 'a' , false , 0 , '' , 'xyz' , { x : 4 } , 7 , [ ] , 555 ] ;
const objectChunks = [ 5 , 'a' , false , 0 , '' , 'xyz' , { x : 4 } , 7 , [ ] , 555 ] ;
runTest ( 1 , true , function ( ) { return objectChunks . shift ( ) ; } ) ;
process . on ( 'exit' , function ( ) {
assert . equal ( testRuns , completedRuns ) ;
console . log ( 'ok' ) ;
} ) ;