Name: js-handler/node_modules/restify/node_modules/lru-cache/test/memory-leak.js 
1:
#!/usr/bin/env node --expose_gc
2:
 
3:
var weak = require('weak');
4:
var test = require('tap').test
5:
var LRU = require('../')
6:
var l = new LRU({ max: 10 })
7:
var refs = 0
8:
function X() {
9:
  refs ++
10:
  weak(this, deref)
11:
}
12:
 
13:
function deref() {
14:
  refs --
15:
}
16:
 
17:
test('no leaks', function (t) {
18:
  // fill up the cache
19:
  for (var i = 0; i < 100; i++) {
20:
    l.set(i, new X);
21:
    // throw some gets in there, too.
22:
    if (i % 2 === 0)
23:
      l.get(i / 2)
24:
  }
25:
 
26:
  gc()
27:
 
28:
  var start = process.memoryUsage()
29:
 
30:
  // capture the memory
31:
  var startRefs = refs
32:
 
33:
  // do it again, but more
34:
  for (var i = 0; i < 10000; i++) {
35:
    l.set(i, new X);
36:
    // throw some gets in there, too.
37:
    if (i % 2 === 0)
38:
      l.get(i / 2)
39:
  }
40:
 
41:
  gc()
42:
 
43:
  var end = process.memoryUsage()
44:
  t.equal(refs, startRefs, 'no leaky refs')
45:
 
46:
  console.error('start: %j\n' +
47:
                'end:   %j', start, end);
48:
  t.pass();
49:
  t.end();
50:
})