Template Upload
This commit is contained in:
396
node_modules/lru-cache/test/basic.js
generated
vendored
Normal file
396
node_modules/lru-cache/test/basic.js
generated
vendored
Normal file
@ -0,0 +1,396 @@
|
||||
var test = require("tap").test
|
||||
, LRU = require("../")
|
||||
|
||||
test("basic", function (t) {
|
||||
var cache = new LRU({max: 10})
|
||||
cache.set("key", "value")
|
||||
t.equal(cache.get("key"), "value")
|
||||
t.equal(cache.get("nada"), undefined)
|
||||
t.equal(cache.length, 1)
|
||||
t.equal(cache.max, 10)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("least recently set", function (t) {
|
||||
var cache = new LRU(2)
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "B")
|
||||
cache.set("c", "C")
|
||||
t.equal(cache.get("c"), "C")
|
||||
t.equal(cache.get("b"), "B")
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("lru recently gotten", function (t) {
|
||||
var cache = new LRU(2)
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "B")
|
||||
cache.get("a")
|
||||
cache.set("c", "C")
|
||||
t.equal(cache.get("c"), "C")
|
||||
t.equal(cache.get("b"), undefined)
|
||||
t.equal(cache.get("a"), "A")
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("del", function (t) {
|
||||
var cache = new LRU(2)
|
||||
cache.set("a", "A")
|
||||
cache.del("a")
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("max", function (t) {
|
||||
var cache = new LRU(3)
|
||||
|
||||
// test changing the max, verify that the LRU items get dropped.
|
||||
cache.max = 100
|
||||
for (var i = 0; i < 100; i ++) cache.set(i, i)
|
||||
t.equal(cache.length, 100)
|
||||
for (var i = 0; i < 100; i ++) {
|
||||
t.equal(cache.get(i), i)
|
||||
}
|
||||
cache.max = 3
|
||||
t.equal(cache.length, 3)
|
||||
for (var i = 0; i < 97; i ++) {
|
||||
t.equal(cache.get(i), undefined)
|
||||
}
|
||||
for (var i = 98; i < 100; i ++) {
|
||||
t.equal(cache.get(i), i)
|
||||
}
|
||||
|
||||
// now remove the max restriction, and try again.
|
||||
cache.max = "hello"
|
||||
for (var i = 0; i < 100; i ++) cache.set(i, i)
|
||||
t.equal(cache.length, 100)
|
||||
for (var i = 0; i < 100; i ++) {
|
||||
t.equal(cache.get(i), i)
|
||||
}
|
||||
// should trigger an immediate resize
|
||||
cache.max = 3
|
||||
t.equal(cache.length, 3)
|
||||
for (var i = 0; i < 97; i ++) {
|
||||
t.equal(cache.get(i), undefined)
|
||||
}
|
||||
for (var i = 98; i < 100; i ++) {
|
||||
t.equal(cache.get(i), i)
|
||||
}
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("reset", function (t) {
|
||||
var cache = new LRU(10)
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "B")
|
||||
cache.reset()
|
||||
t.equal(cache.length, 0)
|
||||
t.equal(cache.max, 10)
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.equal(cache.get("b"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
|
||||
test("basic with weighed length", function (t) {
|
||||
var cache = new LRU({
|
||||
max: 100,
|
||||
length: function (item) { return item.size }
|
||||
})
|
||||
cache.set("key", {val: "value", size: 50})
|
||||
t.equal(cache.get("key").val, "value")
|
||||
t.equal(cache.get("nada"), undefined)
|
||||
t.equal(cache.lengthCalculator(cache.get("key")), 50)
|
||||
t.equal(cache.length, 50)
|
||||
t.equal(cache.max, 100)
|
||||
t.end()
|
||||
})
|
||||
|
||||
|
||||
test("weighed length item too large", function (t) {
|
||||
var cache = new LRU({
|
||||
max: 10,
|
||||
length: function (item) { return item.size }
|
||||
})
|
||||
t.equal(cache.max, 10)
|
||||
|
||||
// should fall out immediately
|
||||
cache.set("key", {val: "value", size: 50})
|
||||
|
||||
t.equal(cache.length, 0)
|
||||
t.equal(cache.get("key"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("least recently set with weighed length", function (t) {
|
||||
var cache = new LRU({
|
||||
max:8,
|
||||
length: function (item) { return item.length }
|
||||
})
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "BB")
|
||||
cache.set("c", "CCC")
|
||||
cache.set("d", "DDDD")
|
||||
t.equal(cache.get("d"), "DDDD")
|
||||
t.equal(cache.get("c"), "CCC")
|
||||
t.equal(cache.get("b"), undefined)
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("lru recently gotten with weighed length", function (t) {
|
||||
var cache = new LRU({
|
||||
max: 8,
|
||||
length: function (item) { return item.length }
|
||||
})
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "BB")
|
||||
cache.set("c", "CCC")
|
||||
cache.get("a")
|
||||
cache.get("b")
|
||||
cache.set("d", "DDDD")
|
||||
t.equal(cache.get("c"), undefined)
|
||||
t.equal(cache.get("d"), "DDDD")
|
||||
t.equal(cache.get("b"), "BB")
|
||||
t.equal(cache.get("a"), "A")
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("lru recently updated with weighed length", function (t) {
|
||||
var cache = new LRU({
|
||||
max: 8,
|
||||
length: function (item) { return item.length }
|
||||
})
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "BB")
|
||||
cache.set("c", "CCC")
|
||||
t.equal(cache.length, 6) //CCC BB A
|
||||
cache.set("a", "+A")
|
||||
t.equal(cache.length, 7) //+A CCC BB
|
||||
cache.set("b", "++BB")
|
||||
t.equal(cache.length, 6) //++BB +A
|
||||
t.equal(cache.get("c"), undefined)
|
||||
|
||||
cache.set("c", "oversized")
|
||||
t.equal(cache.length, 6) //++BB +A
|
||||
t.equal(cache.get("c"), undefined)
|
||||
|
||||
cache.set("a", "oversized")
|
||||
t.equal(cache.length, 4) //++BB
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.equal(cache.get("b"), "++BB")
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("set returns proper booleans", function(t) {
|
||||
var cache = new LRU({
|
||||
max: 5,
|
||||
length: function (item) { return item.length }
|
||||
})
|
||||
|
||||
t.equal(cache.set("a", "A"), true)
|
||||
|
||||
// should return false for max exceeded
|
||||
t.equal(cache.set("b", "donuts"), false)
|
||||
|
||||
t.equal(cache.set("b", "B"), true)
|
||||
t.equal(cache.set("c", "CCCC"), true)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("drop the old items", function(t) {
|
||||
var cache = new LRU({
|
||||
max: 5,
|
||||
maxAge: 50
|
||||
})
|
||||
|
||||
cache.set("a", "A")
|
||||
|
||||
setTimeout(function () {
|
||||
cache.set("b", "b")
|
||||
t.equal(cache.get("a"), "A")
|
||||
}, 25)
|
||||
|
||||
setTimeout(function () {
|
||||
cache.set("c", "C")
|
||||
// timed out
|
||||
t.notOk(cache.get("a"))
|
||||
}, 60 + 25)
|
||||
|
||||
setTimeout(function () {
|
||||
t.notOk(cache.get("b"))
|
||||
t.equal(cache.get("c"), "C")
|
||||
}, 90)
|
||||
|
||||
setTimeout(function () {
|
||||
t.notOk(cache.get("c"))
|
||||
t.end()
|
||||
}, 155)
|
||||
})
|
||||
|
||||
test("individual item can have it's own maxAge", function(t) {
|
||||
var cache = new LRU({
|
||||
max: 5,
|
||||
maxAge: 50
|
||||
})
|
||||
|
||||
cache.set("a", "A", 20)
|
||||
setTimeout(function () {
|
||||
t.notOk(cache.get("a"))
|
||||
t.end()
|
||||
}, 25)
|
||||
})
|
||||
|
||||
test("individual item can have it's own maxAge > cache's", function(t) {
|
||||
var cache = new LRU({
|
||||
max: 5,
|
||||
maxAge: 20
|
||||
})
|
||||
|
||||
cache.set("a", "A", 50)
|
||||
setTimeout(function () {
|
||||
t.equal(cache.get("a"), "A")
|
||||
t.end()
|
||||
}, 25)
|
||||
})
|
||||
|
||||
test("disposal function", function(t) {
|
||||
var disposed = false
|
||||
var cache = new LRU({
|
||||
max: 1,
|
||||
dispose: function (k, n) {
|
||||
disposed = n
|
||||
}
|
||||
})
|
||||
|
||||
cache.set(1, 1)
|
||||
cache.set(2, 2)
|
||||
t.equal(disposed, 1)
|
||||
cache.set(3, 3)
|
||||
t.equal(disposed, 2)
|
||||
cache.reset()
|
||||
t.equal(disposed, 3)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("disposal function on too big of item", function(t) {
|
||||
var disposed = false
|
||||
var cache = new LRU({
|
||||
max: 1,
|
||||
length: function (k) {
|
||||
return k.length
|
||||
},
|
||||
dispose: function (k, n) {
|
||||
disposed = n
|
||||
}
|
||||
})
|
||||
var obj = [ 1, 2 ]
|
||||
|
||||
t.equal(disposed, false)
|
||||
cache.set("obj", obj)
|
||||
t.equal(disposed, obj)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("has()", function(t) {
|
||||
var cache = new LRU({
|
||||
max: 1,
|
||||
maxAge: 10
|
||||
})
|
||||
|
||||
cache.set('foo', 'bar')
|
||||
t.equal(cache.has('foo'), true)
|
||||
cache.set('blu', 'baz')
|
||||
t.equal(cache.has('foo'), false)
|
||||
t.equal(cache.has('blu'), true)
|
||||
setTimeout(function() {
|
||||
t.equal(cache.has('blu'), false)
|
||||
t.end()
|
||||
}, 15)
|
||||
})
|
||||
|
||||
test("stale", function(t) {
|
||||
var cache = new LRU({
|
||||
maxAge: 10,
|
||||
stale: true
|
||||
})
|
||||
|
||||
cache.set('foo', 'bar')
|
||||
t.equal(cache.get('foo'), 'bar')
|
||||
t.equal(cache.has('foo'), true)
|
||||
setTimeout(function() {
|
||||
t.equal(cache.has('foo'), false)
|
||||
t.equal(cache.get('foo'), 'bar')
|
||||
t.equal(cache.get('foo'), undefined)
|
||||
t.end()
|
||||
}, 15)
|
||||
})
|
||||
|
||||
test("lru update via set", function(t) {
|
||||
var cache = LRU({ max: 2 });
|
||||
|
||||
cache.set('foo', 1);
|
||||
cache.set('bar', 2);
|
||||
cache.del('bar');
|
||||
cache.set('baz', 3);
|
||||
cache.set('qux', 4);
|
||||
|
||||
t.equal(cache.get('foo'), undefined)
|
||||
t.equal(cache.get('bar'), undefined)
|
||||
t.equal(cache.get('baz'), 3)
|
||||
t.equal(cache.get('qux'), 4)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("least recently set w/ peek", function (t) {
|
||||
var cache = new LRU(2)
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "B")
|
||||
t.equal(cache.peek("a"), "A")
|
||||
cache.set("c", "C")
|
||||
t.equal(cache.get("c"), "C")
|
||||
t.equal(cache.get("b"), "B")
|
||||
t.equal(cache.get("a"), undefined)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test("pop the least used item", function (t) {
|
||||
var cache = new LRU(3)
|
||||
, last
|
||||
|
||||
cache.set("a", "A")
|
||||
cache.set("b", "B")
|
||||
cache.set("c", "C")
|
||||
|
||||
t.equal(cache.length, 3)
|
||||
t.equal(cache.max, 3)
|
||||
|
||||
// Ensure we pop a, c, b
|
||||
cache.get("b", "B")
|
||||
|
||||
last = cache.pop()
|
||||
t.equal(last.key, "a")
|
||||
t.equal(last.value, "A")
|
||||
t.equal(cache.length, 2)
|
||||
t.equal(cache.max, 3)
|
||||
|
||||
last = cache.pop()
|
||||
t.equal(last.key, "c")
|
||||
t.equal(last.value, "C")
|
||||
t.equal(cache.length, 1)
|
||||
t.equal(cache.max, 3)
|
||||
|
||||
last = cache.pop()
|
||||
t.equal(last.key, "b")
|
||||
t.equal(last.value, "B")
|
||||
t.equal(cache.length, 0)
|
||||
t.equal(cache.max, 3)
|
||||
|
||||
last = cache.pop()
|
||||
t.equal(last, null)
|
||||
t.equal(cache.length, 0)
|
||||
t.equal(cache.max, 3)
|
||||
|
||||
t.end()
|
||||
})
|
120
node_modules/lru-cache/test/foreach.js
generated
vendored
Normal file
120
node_modules/lru-cache/test/foreach.js
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
var test = require('tap').test
|
||||
var LRU = require('../')
|
||||
|
||||
test('forEach', function (t) {
|
||||
var l = new LRU(5)
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
l.set(i.toString(), i.toString(2))
|
||||
}
|
||||
|
||||
var i = 9
|
||||
l.forEach(function (val, key, cache) {
|
||||
t.equal(cache, l)
|
||||
t.equal(key, i.toString())
|
||||
t.equal(val, i.toString(2))
|
||||
i -= 1
|
||||
})
|
||||
|
||||
// get in order of most recently used
|
||||
l.get(6)
|
||||
l.get(8)
|
||||
|
||||
var order = [ 8, 6, 9, 7, 5 ]
|
||||
var i = 0
|
||||
|
||||
l.forEach(function (val, key, cache) {
|
||||
var j = order[i ++]
|
||||
t.equal(cache, l)
|
||||
t.equal(key, j.toString())
|
||||
t.equal(val, j.toString(2))
|
||||
})
|
||||
t.equal(i, order.length);
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('keys() and values()', function (t) {
|
||||
var l = new LRU(5)
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
l.set(i.toString(), i.toString(2))
|
||||
}
|
||||
|
||||
t.similar(l.keys(), ['9', '8', '7', '6', '5'])
|
||||
t.similar(l.values(), ['1001', '1000', '111', '110', '101'])
|
||||
|
||||
// get in order of most recently used
|
||||
l.get(6)
|
||||
l.get(8)
|
||||
|
||||
t.similar(l.keys(), ['8', '6', '9', '7', '5'])
|
||||
t.similar(l.values(), ['1000', '110', '1001', '111', '101'])
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('all entries are iterated over', function(t) {
|
||||
var l = new LRU(5)
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
l.set(i.toString(), i.toString(2))
|
||||
}
|
||||
|
||||
var i = 0
|
||||
l.forEach(function (val, key, cache) {
|
||||
if (i > 0) {
|
||||
cache.del(key)
|
||||
}
|
||||
i += 1
|
||||
})
|
||||
|
||||
t.equal(i, 5)
|
||||
t.equal(l.keys().length, 1)
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('all stale entries are removed', function(t) {
|
||||
var l = new LRU({ max: 5, maxAge: -5, stale: true })
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
l.set(i.toString(), i.toString(2))
|
||||
}
|
||||
|
||||
var i = 0
|
||||
l.forEach(function () {
|
||||
i += 1
|
||||
})
|
||||
|
||||
t.equal(i, 5)
|
||||
t.equal(l.keys().length, 0)
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('expires', function (t) {
|
||||
var l = new LRU({
|
||||
max: 10,
|
||||
maxAge: 50
|
||||
})
|
||||
for (var i = 0; i < 10; i++) {
|
||||
l.set(i.toString(), i.toString(2), ((i % 2) ? 25 : undefined))
|
||||
}
|
||||
|
||||
var i = 0
|
||||
var order = [ 8, 6, 4, 2, 0 ]
|
||||
setTimeout(function () {
|
||||
l.forEach(function (val, key, cache) {
|
||||
var j = order[i++]
|
||||
t.equal(cache, l)
|
||||
t.equal(key, j.toString())
|
||||
t.equal(val, j.toString(2))
|
||||
})
|
||||
t.equal(i, order.length);
|
||||
|
||||
setTimeout(function () {
|
||||
var count = 0;
|
||||
l.forEach(function (val, key, cache) { count++; })
|
||||
t.equal(0, count);
|
||||
t.end()
|
||||
}, 25)
|
||||
|
||||
}, 26)
|
||||
})
|
51
node_modules/lru-cache/test/memory-leak.js
generated
vendored
Normal file
51
node_modules/lru-cache/test/memory-leak.js
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env node --expose_gc
|
||||
|
||||
|
||||
var weak = require('weak');
|
||||
var test = require('tap').test
|
||||
var LRU = require('../')
|
||||
var l = new LRU({ max: 10 })
|
||||
var refs = 0
|
||||
function X() {
|
||||
refs ++
|
||||
weak(this, deref)
|
||||
}
|
||||
|
||||
function deref() {
|
||||
refs --
|
||||
}
|
||||
|
||||
test('no leaks', function (t) {
|
||||
// fill up the cache
|
||||
for (var i = 0; i < 100; i++) {
|
||||
l.set(i, new X);
|
||||
// throw some gets in there, too.
|
||||
if (i % 2 === 0)
|
||||
l.get(i / 2)
|
||||
}
|
||||
|
||||
gc()
|
||||
|
||||
var start = process.memoryUsage()
|
||||
|
||||
// capture the memory
|
||||
var startRefs = refs
|
||||
|
||||
// do it again, but more
|
||||
for (var i = 0; i < 10000; i++) {
|
||||
l.set(i, new X);
|
||||
// throw some gets in there, too.
|
||||
if (i % 2 === 0)
|
||||
l.get(i / 2)
|
||||
}
|
||||
|
||||
gc()
|
||||
|
||||
var end = process.memoryUsage()
|
||||
t.equal(refs, startRefs, 'no leaky refs')
|
||||
|
||||
console.error('start: %j\n' +
|
||||
'end: %j', start, end);
|
||||
t.pass();
|
||||
t.end();
|
||||
})
|
216
node_modules/lru-cache/test/serialize.js
generated
vendored
Normal file
216
node_modules/lru-cache/test/serialize.js
generated
vendored
Normal file
@ -0,0 +1,216 @@
|
||||
var test = require('tap').test
|
||||
var 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)
|
||||
|
||||
})
|
||||
|
Reference in New Issue
Block a user