SAP-BTP-Spielwiese/app1/node_modules/lru-cache/test/serialize.js

228 lines
4.6 KiB
JavaScript
Raw Normal View History

var test = require('tap').test
var LRU = require('../')
var Yallist = require('yallist')
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(123, 456)
t.deepEqual(cache.dump(), [
{ k: 123, v: 456, e: 0 },
{ k: 'b', v: 'B', e: 0 },
{ k: 'a', v: 'A', e: 0 }
])
cache.del(123)
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()
var copy = new LRU()
cache.set('a', 'A')
cache.set('b', 'B')
cache.set(123, 456)
copy.load(cache.dump())
t.deepEquals(cache.dump(), copy.dump())
t.end()
})
test('load staled cache', function (t) {
var cache = new LRU({maxAge: 50})
var copy = new LRU({maxAge: 50})
var 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})
var 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: 250})
var aged = new LRU({maxAge: 500})
var simple = new LRU()
var arr
// created at 0
// a would be valid till 0 + 250
cache.set('a', 'A')
setTimeout(function () {
// created at 20
// b would be valid till 100 + 250
cache.set('b', 'B')
// b would be valid till 100 + 350
cache.set('c', 'C', 350)
arr = cache.dump()
t.equal(arr.length, 3)
}, 100)
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')
}, 300)
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')
}, 400)
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()
}, 500)
})
test('dumpLru', function (t) {
var l = LRU()
t.isa(l.dumpLru(), Yallist)
t.end()
})