Spaces:
Running
Running
File size: 1,440 Bytes
d8f0e51 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
'use strict'
var test = require('tape')
var reusify = require('./')
test('reuse objects', function (t) {
t.plan(6)
function MyObject () {
t.pass('constructor called')
this.next = null
}
var instance = reusify(MyObject)
var obj = instance.get()
t.notEqual(obj, instance.get(), 'two instance created')
t.notOk(obj.next, 'next must be null')
instance.release(obj)
// the internals keeps a hot copy ready for reuse
// putting this one back in the queue
instance.release(instance.get())
// comparing the old one with the one we got
// never do this in real code, after release you
// should never reuse that instance
t.equal(obj, instance.get(), 'instance must be reused')
})
test('reuse more than 2 objects', function (t) {
function MyObject () {
t.pass('constructor called')
this.next = null
}
var instance = reusify(MyObject)
var obj = instance.get()
var obj2 = instance.get()
var obj3 = instance.get()
t.notOk(obj.next, 'next must be null')
t.notOk(obj2.next, 'next must be null')
t.notOk(obj3.next, 'next must be null')
t.notEqual(obj, obj2)
t.notEqual(obj, obj3)
t.notEqual(obj3, obj2)
instance.release(obj)
instance.release(obj2)
instance.release(obj3)
// skip one
instance.get()
var obj4 = instance.get()
var obj5 = instance.get()
var obj6 = instance.get()
t.equal(obj4, obj)
t.equal(obj5, obj2)
t.equal(obj6, obj3)
t.end()
})
|