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