/* eslint id-length: 0 */ "use strict"; var memoize = require("../.."); module.exports = { "": function (a) { var i = 0 , fn = function (x, y, z) { ++i; return x + y + z; } , mfn , y = { toString: function () { return "foo"; } }; mfn = memoize(fn, { primitive: true }); a(mfn(y, "bar", "zeta"), "foobarzeta", "#1"); a(mfn("foo", "bar", "zeta"), "foobarzeta", "#2"); a(i, 1, "Called once"); }, "Delete": function (a) { var i = 0 , fn = function (x, y, z) { ++i; return x + y + z; } , mfn , y = { toString: function () { return "foo"; } }; mfn = memoize(fn, { primitive: true }); a(mfn(y, "bar", "zeta"), "foobarzeta", "#1"); a(mfn("foo", "bar", "zeta"), "foobarzeta", "#2"); a(i, 1, "Called once"); mfn.delete( "foo", { toString: function () { return "bar"; } }, "zeta" ); a(mfn(y, "bar", "zeta"), "foobarzeta", "#3"); a(i, 2, "Called twice"); }, "Clear": function (a) { var i = 0, fn; fn = memoize(function (x) { if (++i < 2) fn(x); }); a.throws(function () { fn("foo"); }, "CIRCULAR_INVOCATION"); i = 0; fn = memoize(function (x, y) { if (++i < 2) fn(x, y); }); a.throws(function () { fn("foo", "bar"); }, "CIRCULAR_INVOCATION"); } };