@ -26,13 +26,14 @@ var Readable = require('stream').Readable;
( function first ( ) {
// First test, not reading when the readable is added.
// make sure that read(0 ) triggers a readable event.
// make sure that on('readable', ... ) triggers a readable event.
var r = new Readable ( {
highWaterMark : 3
} ) ;
var _ readCalled = false ;
r . _ read = function ( n ) {
r . push ( new Buffer ( new Array ( n + 1 ) . join ( 'x' ) ) ) ;
_ readCalled = true ;
} ;
// This triggers a 'readable' event, which is lost.
@ -40,12 +41,17 @@ var Readable = require('stream').Readable;
var caughtReadable = false ;
setTimeout ( function ( ) {
// we're testing what we think we are
assert ( ! r . _ readableState . reading ) ;
r . on ( 'readable' , function ( ) {
caughtReadable = true ;
} ) ;
} ) ;
process . on ( 'exit' , function ( ) {
// we're testing what we think we are
assert ( ! _ readCalled ) ;
assert ( caughtReadable ) ;
console . log ( 'ok 1' ) ;
} ) ;
@ -59,23 +65,27 @@ var Readable = require('stream').Readable;
highWaterMark : 3
} ) ;
var _ readCalled = false ;
r . _ read = function ( n ) {
setTimeout ( function ( ) {
r . push ( new Buffer ( new Array ( n + 1 ) . join ( 'x' ) ) ) ;
} ) ;
_ readCalled = true ;
} ;
// This triggers a 'readable' event, which is lost.
r . push ( new Buffer ( 'blerg ' ) ) ;
r . push ( new Buffer ( 'bl' ) ) ;
var caughtReadable = false ;
process . nextTick ( function ( ) {
setTimeout ( function ( ) {
// assert we're testing what we think we are
assert ( r . _ readableState . reading ) ;
r . on ( 'readable' , function ( ) {
caughtReadable = true ;
} ) ;
} ) ;
process . on ( 'exit' , function ( ) {
// we're testing what we think we are
assert ( _ readCalled ) ;
assert ( caughtReadable ) ;
console . log ( 'ok 2' ) ;
} ) ;
@ -88,18 +98,28 @@ var Readable = require('stream').Readable;
highWaterMark : 30
} ) ;
var _ readCalled = false ;
r . _ read = function ( n ) {
_ readCalled = true ;
} ;
// This triggers a 'readable' event, which is lost.
r . push ( new Buffer ( 'blerg' ) ) ;
r . push ( null ) ;
var caughtReadable = false ;
setTimeout ( function ( ) {
// assert we're testing what we think we are
assert ( ! r . _ readableState . reading ) ;
r . on ( 'readable' , function ( ) {
caughtReadable = true ;
} ) ;
} ) ;
process . on ( 'exit' , function ( ) {
// we're testing what we think we are
assert ( ! _ readCalled ) ;
assert ( caughtReadable ) ;
console . log ( 'ok 3' ) ;
} ) ;