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