HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/design.system/node_modules/memoizerific/tests/surpassed-limit.js
var Memoizerific = require('../src/memoizerific');

describe("surpassed limit", () => {
	var memoizedFn,
		arg1 = { a: { b: 3 }, num: 3 },
		arg2 = { c: { d: 3 }, num: 7 },
		arg3 = [{ f: { g: 3 }, num: 11 }, { h: { i: 3 }, num: 4 }, { j: { k: 3 }, num: 6 }];

	beforeEach(function() {
		memoizedFn = Memoizerific(2)(function(arg1, arg2, arg3) {
			return arg1.num * arg2.num;
		});
		memoizedFn(arg1, arg2, arg3);
	});

	it("should be map or similar", () => { expect(memoizedFn.cache instanceof Map).toEqual(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP !== 'true') });

	it("should replace original memoized", () => {
		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);
		expect(memoizedFn.lru.length).toEqual(1);

		memoizedFn(1,1,1);
		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);

		memoizedFn(1,1,1);
		expect(memoizedFn.wasMemoized).toEqual(true);
		memoizedFn(2,2,2);
		expect(memoizedFn.wasMemoized).toEqual(false);
		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(false);
		expect(memoizedFn.lru.length).toEqual(2);

		memoizedFn(2,2,2);
		expect(memoizedFn.wasMemoized).toEqual(true);
		expect(memoizedFn.lru.length).toEqual(2);

		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);
		expect(memoizedFn.lru.length).toEqual(2);
	});


	it("should move original to most recent", () => {
		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);

		memoizedFn(1,1,1);
		expect(memoizedFn.wasMemoized).toEqual(false);

		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);

		memoizedFn(2,2,2);
		expect(memoizedFn.wasMemoized).toEqual(false);

		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);

		memoizedFn(3,3,3);
		expect(memoizedFn.wasMemoized).toEqual(false);

		memoizedFn(arg1, arg2, arg3);
		expect(memoizedFn.wasMemoized).toEqual(true);
		expect(memoizedFn.lru.length).toEqual(2);
	});
});