| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 | var test = require('tap').testvar LRU = require('../')test('dump', function (t) {  var cache = new LRU()  t.equal(cache.dump().length, 0, "nothing in dump for empty cache")  cache.set("a", "A")  cache.set("b", "B")  t.deepEqual(cache.dump(), [    { k: "b", v: "B", e: 0 },    { k: "a", v: "A", e: 0 }  ])  cache.set("a", "A");  t.deepEqual(cache.dump(), [    { k: "a", v: "A", e: 0 },    { k: "b", v: "B", e: 0 }  ])  cache.get("b");  t.deepEqual(cache.dump(), [    { k: "b", v: "B", e: 0 },    { k: "a", v: "A", e: 0 }  ])  cache.del("a");  t.deepEqual(cache.dump(), [    { k: "b", v: "B",  e: 0 }  ])  t.end()})test("do not dump stale items", function(t) {  var cache = new LRU({    max: 5,    maxAge: 50  })  //expires at 50  cache.set("a", "A")  setTimeout(function () {    //expires at 75    cache.set("b", "B")    var s = cache.dump()    t.equal(s.length, 2)    t.equal(s[0].k, "b")    t.equal(s[1].k, "a")  }, 25)  setTimeout(function () {    //expires at 110    cache.set("c", "C")    var s = cache.dump()    t.equal(s.length, 2)    t.equal(s[0].k, "c")    t.equal(s[1].k, "b")  }, 60)  setTimeout(function () {    //expires at 130    cache.set("d", "D", 40)    var s = cache.dump()    t.equal(s.length, 2)    t.equal(s[0].k, "d")    t.equal(s[1].k, "c")  }, 90)  setTimeout(function () {    var s = cache.dump()    t.equal(s.length, 1)    t.equal(s[0].k, "d")  }, 120)  setTimeout(function () {    var s = cache.dump()    t.deepEqual(s, [])    t.end()  }, 155)})test("load basic cache", function(t) {  var cache = new LRU(),      copy = new LRU()  cache.set("a", "A")  cache.set("b", "B")  copy.load(cache.dump())  t.deepEquals(cache.dump(), copy.dump())  t.end()})test("load staled cache", function(t) {  var cache = new LRU({maxAge: 50}),      copy = new LRU({maxAge: 50}),      arr  //expires at 50  cache.set("a", "A")  setTimeout(function () {    //expires at 80    cache.set("b", "B")    arr = cache.dump()    t.equal(arr.length, 2)  }, 30)  setTimeout(function () {    copy.load(arr)    t.equal(copy.get("a"), undefined)    t.equal(copy.get("b"), "B")  }, 60)  setTimeout(function () {    t.equal(copy.get("b"), undefined)    t.end()  }, 90)})test("load to other size cache", function(t) {  var cache = new LRU({max: 2}),      copy = new LRU({max: 1})  cache.set("a", "A")  cache.set("b", "B")  copy.load(cache.dump())  t.equal(copy.get("a"), undefined)  t.equal(copy.get("b"), "B")  //update the last read from original cache  cache.get("a")  copy.load(cache.dump())  t.equal(copy.get("a"), "A")  t.equal(copy.get("b"), undefined)  t.end()})test("load to other age cache", function(t) {  var cache = new LRU({maxAge: 50}),      aged = new LRU({maxAge: 100}),      simple = new LRU(),      arr,      expired  //created at 0  //a would be valid till 0 + 50  cache.set("a", "A")  setTimeout(function () {    //created at 20    //b would be valid till 20 + 50    cache.set("b", "B")    //b would be valid till 20 + 70    cache.set("c", "C", 70)    arr = cache.dump()    t.equal(arr.length, 3)  }, 20)  setTimeout(function () {    t.equal(cache.get("a"), undefined)    t.equal(cache.get("b"), "B")    t.equal(cache.get("c"), "C")    aged.load(arr)    t.equal(aged.get("a"), undefined)    t.equal(aged.get("b"), "B")    t.equal(aged.get("c"), "C")    simple.load(arr)    t.equal(simple.get("a"), undefined)    t.equal(simple.get("b"), "B")    t.equal(simple.get("c"), "C")  }, 60)  setTimeout(function () {    t.equal(cache.get("a"), undefined)    t.equal(cache.get("b"), undefined)    t.equal(cache.get("c"), "C")    aged.load(arr)    t.equal(aged.get("a"), undefined)    t.equal(aged.get("b"), undefined)    t.equal(aged.get("c"), "C")    simple.load(arr)    t.equal(simple.get("a"), undefined)    t.equal(simple.get("b"), undefined)    t.equal(simple.get("c"), "C")  }, 80)  setTimeout(function () {    t.equal(cache.get("a"), undefined)    t.equal(cache.get("b"), undefined)    t.equal(cache.get("c"), undefined)    aged.load(arr)    t.equal(aged.get("a"), undefined)    t.equal(aged.get("b"), undefined)    t.equal(aged.get("c"), undefined)    simple.load(arr)    t.equal(simple.get("a"), undefined)    t.equal(simple.get("b"), undefined)    t.equal(simple.get("c"), undefined)    t.end()  }, 100)})
 |