123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- '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()
- })
|