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