summaryrefslogtreecommitdiff
path: root/node_modules/ws/test/BufferPool.test.js
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-03-20 17:33:43 -0700
committeryo mama <pepper@scannerjammer.com>2015-03-20 17:33:43 -0700
commit2afbcf4e7d000d99fdbc582d7113684ee00e80cc (patch)
tree6ba3313b78625735fb295e3d375e59054c31e558 /node_modules/ws/test/BufferPool.test.js
first
Diffstat (limited to 'node_modules/ws/test/BufferPool.test.js')
-rw-r--r--node_modules/ws/test/BufferPool.test.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/node_modules/ws/test/BufferPool.test.js b/node_modules/ws/test/BufferPool.test.js
new file mode 100644
index 0000000..1ee7ff0
--- /dev/null
+++ b/node_modules/ws/test/BufferPool.test.js
@@ -0,0 +1,63 @@
+var BufferPool = require('../lib/BufferPool');
+require('should');
+
+describe('BufferPool', function() {
+ describe('#ctor', function() {
+ it('allocates pool', function() {
+ var db = new BufferPool(1000);
+ db.size.should.eql(1000);
+ });
+ });
+ describe('#get', function() {
+ it('grows the pool if necessary', function() {
+ var db = new BufferPool(1000);
+ var buf = db.get(2000);
+ db.size.should.be.above(1000);
+ db.used.should.eql(2000);
+ buf.length.should.eql(2000);
+ });
+ it('grows the pool after the first call, if necessary', function() {
+ var db = new BufferPool(1000);
+ var buf = db.get(1000);
+ db.used.should.eql(1000);
+ db.size.should.eql(1000);
+ buf.length.should.eql(1000);
+ var buf2 = db.get(1000);
+ db.used.should.eql(2000);
+ db.size.should.be.above(1000);
+ buf2.length.should.eql(1000);
+ });
+ it('grows the pool according to the growStrategy if necessary', function() {
+ var db = new BufferPool(1000, function(db, length) {
+ return db.size + 2345;
+ });
+ var buf = db.get(2000);
+ db.size.should.eql(3345);
+ buf.length.should.eql(2000);
+ });
+ it('doesnt grow the pool if theres enough room available', function() {
+ var db = new BufferPool(1000);
+ var buf = db.get(1000);
+ db.size.should.eql(1000);
+ buf.length.should.eql(1000);
+ });
+ });
+ describe('#reset', function() {
+ it('shinks the pool', function() {
+ var db = new BufferPool(1000);
+ var buf = db.get(2000);
+ db.reset(true);
+ db.size.should.eql(1000);
+ });
+ it('shrinks the pool according to the shrinkStrategy', function() {
+ var db = new BufferPool(1000, function(db, length) {
+ return db.used + length;
+ }, function(db) {
+ return 0;
+ });
+ var buf = db.get(2000);
+ db.reset(true);
+ db.size.should.eql(0);
+ });
+ });
+});