corrade-nucleus-nucleons

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 19  →  ?path2? @ 20
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/lru-cache/test/basic.js
@@ -0,0 +1,427 @@
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, key) {
t.isa(key, 'string')
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"), '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 its 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 its 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()
})
 
test("get and set only accepts strings and numbers as keys", function(t) {
var cache = new LRU()
 
cache.set("key", "value")
cache.set(123, 456)
 
t.equal(cache.get("key"), "value")
t.equal(cache.get(123), 456)
 
t.end()
})
 
test("peek with wierd keys", function(t) {
var cache = new LRU()
 
cache.set("key", "value")
cache.set(123, 456)
 
t.equal(cache.peek("key"), "value")
t.equal(cache.peek(123), 456)
 
t.equal(cache.peek({
toString: function() { return "key" }
}), undefined)
 
t.end()
})
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/lru-cache/test/foreach.js
@@ -0,0 +1,130 @@
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, i.toString(2))
}
 
var i = 9
l.forEach(function (val, key, cache) {
t.equal(cache, l)
t.equal(key, i)
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)
t.equal(val, j.toString(2))
})
t.equal(i, order.length)
 
i = 0
order.reverse()
l.rforEach(function (val, key, cache) {
var j = order[i ++]
t.equal(cache, l)
t.equal(key, j)
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, 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)
})
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/lru-cache/test/memory-leak.js
@@ -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();
})
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/lru-cache/test/overflow.js
@@ -0,0 +1,45 @@
var LRU = require('../')
var t = require('tap')
 
var c = new LRU(5)
 
// now the hacksy bitses
c._mru = Number.MAX_SAFE_INTEGER - 10
 
function test (c) {
t.test('mru=' + c._mru + ', lru=' + c._lru, function (t) {
t.equal(c.length, 5)
t.equal(c._cache.get(0), undefined)
t.equal(c._cache.get(1).value, 1)
t.equal(c._cache.get(2).value, 2)
t.equal(c._cache.get(3).value, 3)
t.equal(c._cache.get(4).value, 4)
t.equal(c._cache.get(5).value, 5)
t.ok(c._mru < Number.MAX_SAFE_INTEGER, 'did not overflow')
t.end()
})
}
 
for (var i = 0; i < 6; i++) {
c.set(i, i)
}
 
test(c)
 
for (var i = 0; i < 6; i++) {
c.set(i, i)
}
 
test(c)
 
for (var i = 0; i < 6; i++) {
c.set(i, i)
}
 
test(c)
 
for (var i = 0; i < 6; i++) {
c.set(i, i)
}
 
test(c)
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/lru-cache/test/serialize.js
@@ -0,0 +1,224 @@
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(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(),
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}),
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)
 
})