diff options
Diffstat (limited to 'node_modules/memorystream/test')
-rw-r--r-- | node_modules/memorystream/test/example.js | 18 | ||||
-rw-r--r-- | node_modules/memorystream/test/memorystream.test.js | 333 |
2 files changed, 351 insertions, 0 deletions
diff --git a/node_modules/memorystream/test/example.js b/node_modules/memorystream/test/example.js new file mode 100644 index 0000000..7d94369 --- /dev/null +++ b/node_modules/memorystream/test/example.js @@ -0,0 +1,18 @@ +var http = require('http'), + MemoryStream = require('../index'), + util = require('util'); + +var options = { + host: 'google.com' +}; +var memStream = new MemoryStream(null,{ + readable : false +}); + +var req = http.request(options, function(res) { + util.pump(res, memStream); + res.on('end',function(){ + console.log(memStream.toString()); + }); +}); +req.end(); diff --git a/node_modules/memorystream/test/memorystream.test.js b/node_modules/memorystream/test/memorystream.test.js new file mode 100644 index 0000000..2b80b50 --- /dev/null +++ b/node_modules/memorystream/test/memorystream.test.js @@ -0,0 +1,333 @@ +var MemoryStream = require('../index.js'), + expect = require('expect.js'), + STREAM = require('stream'), + Q = require('q'), + FS = require('fs'); + +describe('Test memory streams', function() { + + var writeToStream = function (mem_stream, test_data, frequency) { + var result = Q(), + i = 0; + + frequency = frequency || 0; + + test_data.forEach(function (chunk) { + var f = Q.nfbind(function (chunk,n, cb) { + setTimeout(function () { + if (n >= (test_data.length - 1) ) { + mem_stream.end(chunk); + } else { + mem_stream.write(chunk, cb); + } + }, frequency); + }, chunk ,i++); + result = result.then(function() { return f(); }); + }); + + result.done(); + }; + + var writeToStream2 = function (mem_stream, test_data) { + var i; + for (i = 0; i < test_data.length ; i++) { + setTimeout((function(n) { + return function () { + if (n >= (test_data.length - 1) ) { + mem_stream.end(test_data[n]); + } else { + mem_stream.write(test_data[n]); + } + } + })(i), i * 2); + } + }; + + describe("constructor", function() { + it('should have a MemoryStream class', function () { + expect(MemoryStream).to.be.ok(); + }); + + it('should create Readable stream', function () { + var memory_stream = new MemoryStream([], {writable : false}); + expect(memory_stream).to.be.ok(); + expect(memory_stream).to.be.a(STREAM.Readable); + + memory_stream = MemoryStream.createReadStream([]); + expect(memory_stream).to.be.a(STREAM.Readable); + }); + + it('should create Writable stream', function () { + var memory_stream = new MemoryStream([], {readable : false}); + expect(memory_stream).to.be.ok(); + expect(memory_stream).to.be.a(STREAM.Writable); + + memory_stream = MemoryStream.createWriteStream([]); + expect(memory_stream).to.be.a(STREAM.Writable); + }); + + it('should create Duplex stream', function () { + var memory_stream = new MemoryStream([]); + expect(memory_stream).to.be.ok(); + expect(memory_stream).to.be.a(STREAM.Duplex); + }); + + }); + + describe("readable stream", function () { + var test_data = 'abcdefghijklmnopqrstuvwxyz', + frequence = 50; + + it("should read data from stream", function (done) { + var mem_stream = MemoryStream.createReadStream(test_data.split('')); + + var data = '', chunks = 0; + mem_stream.on('data',function(chunk){ + data += chunk; + ++chunks; + }); + + mem_stream.on('end',function () { + expect(chunks).to.be(test_data.length); + expect(data).to.be(test_data); + done(); + }); + }); + + it("should read data from stream with frequency", function (done) { + + var mem_stream = new MemoryStream(test_data.split(''), { + writable : false, + frequence: frequence + }); + + var start_time = Date.now(); + + var data = ''; + mem_stream.on('data',function(chunk){ + data += chunk; + }); + + mem_stream.on('end',function(){ + var execution_time = Date.now() - start_time; + + expect(data).to.be(test_data); + expect(execution_time >= frequence * test_data.length).to.be(true); + + done(); + }); + }); + + it("should read data pause/resume", function (done) { + var mem_stream = MemoryStream.createReadStream(test_data.split('')); + + var start_time = Date.now(); + + var data = '', chunks = 0; + mem_stream.on('data',function(chunk){ + data += chunk; + ++chunks; + + if (! (chunks % 10) ) { + mem_stream.pause(); + setTimeout(function () { + mem_stream.resume(); + },frequence); + } + }); + + mem_stream.on('end',function() { + var execution_time = Date.now() - start_time; + + expect(data).to.be(test_data); + expect(execution_time >= frequence).to.be(true); + + done(); + }); + }); + + }); + + describe("writable stream", function () { + var test_data = 'abcdefghijklmnopqrstuvwxyz'; + + it("should write data to Writable", function (done) { + var mem_stream = MemoryStream.createWriteStream(), + i = 0; + + writeToStream(mem_stream, test_data.split('')); + + mem_stream.on('finish',function () { + expect(mem_stream.toString()).to.be(test_data); + done(); + }); + + }); + + it("should not write data to readable stream", function (done) { + var mem_stream = new MemoryStream([], {writable : false}); + expect(function () { + mem_stream.write("test"); + }).to.throwError(); + + expect(function () { + mem_stream.end("test"); + }).to.throwError(); + + done(); + }); + + it("#toString", function (done) { + var mem_stream = new MemoryStream(null, {readable : false}); + writeToStream(mem_stream, test_data.split('')); + + mem_stream.on('finish',function () { + expect(mem_stream.toString()).to.be(test_data); + done(); + }); + }); + + it("#toBuffer", function (done) { + var mem_stream = new MemoryStream(null, {readable : false}); + writeToStream(mem_stream, test_data.split('')); + + mem_stream.on('finish',function () { + expect(mem_stream.toBuffer().toString('utf-8')).to.be(test_data); + done(); + }); + }); + + it("#toBuffer all data in one buffer", function (done) { + var i = 0, + mem_stream = new MemoryStream(null, {readable : false}), + arr_test_data = [], + str_test_data = ''; + for (i = 0; i < 20; i++) { + var b = new Buffer([i]); + arr_test_data.push(b); + str_test_data += b.toString('hex'); + } + + writeToStream(mem_stream, arr_test_data, 10); + + mem_stream.on('finish',function () { + expect(mem_stream.toBuffer().toString('hex')).to.be(str_test_data); + done(); + }); + + }); + + it("not write data to the overflowed buffer", function (done) { + var mem_stream = new MemoryStream('data1'.split(''), { + readable : false, + maxbufsize : 10 + }); + + mem_stream.write('data2', function (err) { + expect(err).to.not.be.ok(); + expect(mem_stream.toString()).to.be('data1data2'); + mem_stream.write('data3', function (err) { + expect(err).to.not.be.ok(); + expect(mem_stream.toString()).to.be('data1data2'); + done(); + }); + }); + }); + + it("should process error for overflowed buffer", function (done) { + var mem_stream = new MemoryStream('data1'.split(''), { + readable : false, + maxbufsize : 10, + bufoverflow : true + }); + + mem_stream.write('data2', function (err) { + expect(err).to.not.be.ok(); + expect(mem_stream.toString()).to.be('data1data2'); + mem_stream.write('data3', function (err) { + expect(err).to.be.ok(); + expect(mem_stream.toString()).to.be('data1data2'); + done(); + }); + + }); + + mem_stream.on('error', function () { + }); + + }); + }); + + describe("duplex stream", function () { + var test_data = 'abcdefghijklmnopqrstuvwxyz'; + + it("should write/read",function (done) { + var mem_stream = new MemoryStream(); + + var data = ''; + mem_stream.on('data',function(chunk){ + data += chunk; + }); + + writeToStream(mem_stream, test_data.split('')); + + mem_stream.on('end', function () { + expect(data).to.be(test_data); + done(); + }); + }); + + it("should write/read data with init buffer", function (done) { + + var l = Math.floor(test_data.length / 2); + + var test_data1 = test_data.substr(0, l), + test_data2 = test_data.substr(l); + + var mem_stream = new MemoryStream(test_data1.split('')); + + var data = ''; + mem_stream.on('data',function(chunk){ + data += chunk; + }); + + writeToStream2(mem_stream, test_data2); + + mem_stream.on('end', function() { + expect(data).to.be(test_data); + done(); + }); + + }); + + + it("should piping data", function (done) { + var src_mem_stream = MemoryStream.createReadStream(test_data.split(''), {frequency : 25}); + var dst_mem_stream = MemoryStream.createWriteStream(); + + src_mem_stream.pipe(dst_mem_stream); + + dst_mem_stream.on('finish',function(){ + expect(dst_mem_stream.toString()).to.be(test_data); + done(); + }); + + + }); + + it("should readable/piping data", function (done) { + var src_mem_stream = MemoryStream.createReadStream(test_data.split(''), {frequency : 25}); + var dst_mem_stream = MemoryStream.createWriteStream(); + + src_mem_stream.once('readable', function () { + src_mem_stream.pipe(dst_mem_stream); + }); + + dst_mem_stream.on('finish',function(){ + expect(dst_mem_stream.toString()).to.be(test_data); + done(); + }); + }); + + }); +}); |