|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +// Flags: --expose-internals |
| 4 | + |
| 5 | +const assert = require('assert'); |
| 6 | +const freelist = require('freelist'); |
| 7 | +const internalFreelist = require('internal/freelist'); |
| 8 | + |
| 9 | +assert.equal(typeof freelist, 'object'); |
| 10 | +assert.equal(typeof freelist.FreeList, 'function'); |
| 11 | +assert.strictEqual(freelist, internalFreelist); |
| 12 | + |
| 13 | +const flist1 = new freelist.FreeList('flist1', 3, String); |
| 14 | + |
| 15 | +// Allocating when empty, should not change the list size |
| 16 | +var result = flist1.alloc('test'); |
| 17 | +assert.strictEqual(typeof result, 'string'); |
| 18 | +assert.strictEqual(result, 'test'); |
| 19 | +assert.strictEqual(flist1.list.length, 0); |
| 20 | + |
| 21 | +// Exhaust the free list |
| 22 | +assert(flist1.free('test1')); |
| 23 | +assert(flist1.free('test2')); |
| 24 | +assert(flist1.free('test3')); |
| 25 | + |
| 26 | +// Now it should not return 'true', as max length is exceeded |
| 27 | +assert.strictEqual(flist1.free('test4'), false); |
| 28 | +assert.strictEqual(flist1.free('test5'), false); |
| 29 | + |
| 30 | +// At this point 'alloc' should just return the stored values |
| 31 | +assert.strictEqual(flist1.alloc(), 'test1'); |
| 32 | +assert.strictEqual(flist1.alloc(), 'test2'); |
| 33 | +assert.strictEqual(flist1.alloc(), 'test3'); |
0 commit comments