Opal-Estate-Pro/node_modules/memoizee/test/weak.js
2019-09-13 11:27:52 +07:00

63 lines
1.0 KiB
JavaScript
Executable File

/* eslint id-length: 0, no-shadow: 0, no-unused-vars: 0 */
"use strict";
module.exports = function (t, a, d) {
var value = [], obj = {}, memoized, count = 0, x, y, z;
memoized = t(
function (arg, x, y) {
a(arg, obj);
return x + y;
},
{
refCounter: true,
dispose: function (val) {
value.push(val);
}
}
);
a(memoized(obj, 3, 7), 10);
a(memoized(obj, 5, 8), 13);
a(memoized(obj, 12, 4), 16);
a.deep(value, [], "Pre");
a(memoized(obj, 5, 8), 13);
memoized.deleteRef(obj, 5, 8);
a.deep(value, [], "Pre");
memoized.deleteRef(obj, 5, 8);
a.deep(value, [13], "#1");
value = [];
memoized.deleteRef(obj, 12, 4);
a.deep(value, [16], "#2");
value = [];
memoized(obj, 77, 11);
x = {};
y = {};
z = {};
memoized = t(function (arg) {
return ++count;
});
a(memoized(x), 1);
a(memoized(y), 2);
a(memoized(x), 1);
a(memoized(z), 3);
a(count, 3);
count = 0;
memoized = t(
function (arg) {
return ++count;
},
{ maxAge: 1 }
);
memoized(obj);
setTimeout(function () {
memoized(obj);
a(count, 2);
d();
}, 100);
};