You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							66 lines
						
					
					
						
							1.4 KiB
						
					
					
				| '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() | |
| })
 | |
| 
 |