From db8ce89fe4a8d857c5c35b0d4f5af6044e5330ac Mon Sep 17 00:00:00 2001 From: Andrew Hart Date: Sun, 31 Mar 2013 00:16:52 -0600 Subject: [PATCH] test: test intended code-paths The tests did not agree with the test comments. Tests first and second were both testing the !state.reading case. Now second tests the state.reading && state.length case. Fixes joyent/node#5183 --- test/simple/test-stream-readable-event.js | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/test/simple/test-stream-readable-event.js b/test/simple/test-stream-readable-event.js index fdbcb481034..ba6a57724d2 100644 --- a/test/simple/test-stream-readable-event.js +++ b/test/simple/test-stream-readable-event.js @@ -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'); });