react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / fileset / node_modules / minimatch / node_modules / lru-cache / test / foreach.js
80737 viewsvar test = require('tap').test1var LRU = require('../')23test('forEach', function (t) {4var l = new LRU(5)5for (var i = 0; i < 10; i ++) {6l.set(i.toString(), i.toString(2))7}89var i = 910l.forEach(function (val, key, cache) {11t.equal(cache, l)12t.equal(key, i.toString())13t.equal(val, i.toString(2))14i -= 115})1617// get in order of most recently used18l.get(6)19l.get(8)2021var order = [ 8, 6, 9, 7, 5 ]22var i = 02324l.forEach(function (val, key, cache) {25var j = order[i ++]26t.equal(cache, l)27t.equal(key, j.toString())28t.equal(val, j.toString(2))29})30t.equal(i, order.length);3132t.end()33})3435test('keys() and values()', function (t) {36var l = new LRU(5)37for (var i = 0; i < 10; i ++) {38l.set(i.toString(), i.toString(2))39}4041t.similar(l.keys(), ['9', '8', '7', '6', '5'])42t.similar(l.values(), ['1001', '1000', '111', '110', '101'])4344// get in order of most recently used45l.get(6)46l.get(8)4748t.similar(l.keys(), ['8', '6', '9', '7', '5'])49t.similar(l.values(), ['1000', '110', '1001', '111', '101'])5051t.end()52})5354test('all entries are iterated over', function(t) {55var l = new LRU(5)56for (var i = 0; i < 10; i ++) {57l.set(i.toString(), i.toString(2))58}5960var i = 061l.forEach(function (val, key, cache) {62if (i > 0) {63cache.del(key)64}65i += 166})6768t.equal(i, 5)69t.equal(l.keys().length, 1)7071t.end()72})7374test('all stale entries are removed', function(t) {75var l = new LRU({ max: 5, maxAge: -5, stale: true })76for (var i = 0; i < 10; i ++) {77l.set(i.toString(), i.toString(2))78}7980var i = 081l.forEach(function () {82i += 183})8485t.equal(i, 5)86t.equal(l.keys().length, 0)8788t.end()89})9091test('expires', function (t) {92var l = new LRU({93max: 10,94maxAge: 5095})96for (var i = 0; i < 10; i++) {97l.set(i.toString(), i.toString(2), ((i % 2) ? 25 : undefined))98}99100var i = 0101var order = [ 8, 6, 4, 2, 0 ]102setTimeout(function () {103l.forEach(function (val, key, cache) {104var j = order[i++]105t.equal(cache, l)106t.equal(key, j.toString())107t.equal(val, j.toString(2))108})109t.equal(i, order.length);110t.end()111112setTimeout(function () {113var count = 0;114l.forEach(function (val, key, cache) { count++; })115t.equal(0, count);116t.end()117}, 25)118119}, 26)120})121122123