![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/local/lib/node_modules/forever/node_modules/from/test/ |
Upload File : |
var from = require('..') var spec = require('stream-spec') var a = require('assertions') function read(stream, callback) { var actual = [] stream.on('data', function (data) { actual.push(data) }) stream.once('end', function () { callback(null, actual) }) stream.once('error', function (err) { callback(err) }) } function pause(stream) { stream.on('data', function () { if(Math.random() > 0.1) return stream.pause() process.nextTick(function () { stream.resume() }) }) } exports['inc'] = function (test) { var fs = from(function (i) { this.emit('data', i) if(i >= 99) return this.emit('end') return true }) spec(fs).readable().validateOnExit() read(fs, function (err, arr) { test.equal(arr.length, 100) test.done() }) } exports['inc - async'] = function (test) { var fs = from(function (i, next) { this.emit('data', i) if(i >= 99) return this.emit('end') next(); }) spec(fs).readable().validateOnExit() read(fs, function (err, arr) { test.equal(arr.length, 100) test.done() }) } exports['large stream - from an array'] = function (test) { var l = 100000 , expected = [] while(l--) expected.push(l * Math.random()) var fs = from(expected.slice()) spec(fs).readable().validateOnExit() read(fs, function (err, arr) { a.deepEqual(arr, expected) test.done() }) } exports['large stream - callback return true'] = function (test) { var fs = from(function (i, next) { this.emit('data', i) if(i >= 99999) return this.emit('end') return true; }) spec(fs).readable().validateOnExit() read(fs, function (err, arr) { test.equal(arr.length, 100000) test.done() }) } exports['large stream - callback call next()'] = function (test) { var fs = from(function (i, next) { this.emit('data', i) if(i >= 99999) return this.emit('end') next(); }) spec(fs).readable().validateOnExit() read(fs, function (err, arr) { test.equal(arr.length, 100000) test.done() }) } exports['simple'] = function (test) { var l = 1000 , expected = [] while(l--) expected.push(l * Math.random()) var t = from(expected.slice()) spec(t) .readable() .pausable({strict: true}) .validateOnExit() read(t, function (err, actual) { if(err) test.error(err) //fail a.deepEqual(actual, expected) test.done() }) } exports['simple pausable'] = function (test) { var l = 1000 , expected = [] while(l--) expected.push(l * Math.random()) var t = from(expected.slice()) spec(t) .readable() .pausable({strict: true}) .validateOnExit() pause(t) read(t, function (err, actual) { if(err) test.error(err) //fail a.deepEqual(actual, expected) test.done() }) } exports['simple (not strictly pausable) setTimeout'] = function (test) { var l = 10 , expected = [] while(l--) expected.push(l * Math.random()) var _expected = expected.slice() var t = from(function (i, n) { var self = this setTimeout(function () { if(_expected.length) self.emit('data', _expected.shift()) else if(!self.ended) self.emit('end') n() }, 3) }) /* using from in this way will not be strictly pausable. it could be extended to buffer outputs, but I think a better way would be to use a PauseStream that implements strict pause. */ spec(t) .readable() .pausable({strict: false }) .validateOnExit() //pause(t) var paused = false var i = setInterval(function () { if(!paused) t.pause() else t.resume() paused = !paused }, 2) t.on('end', function () { clearInterval(i) }) read(t, function (err, actual) { if(err) test.error(err) //fail a.deepEqual(actual, expected) test.done() }) }