Files
rubic-cube/node_modules/@gkucmierz/utils/spec/memoize.spec.mjs

47 lines
885 B
JavaScript

import {
memoize,
} from '../src/memoize.mjs';
describe('memoize', () => {
it('called once', () => {
let cnt = 0;
const add = memoize((a, b) => {
++cnt;
return a + b;
});
expect(add(1, 2)).toBe(3);
expect(cnt).toBe(1);
expect(add(1, 2)).toBe(3);
expect(cnt).toBe(1);
expect(add(2, 1)).toBe(3);
expect(cnt).toBe(2);
});
it('variable args length', () => {
const fn = memoize((...args) => args.length);
expect(fn()).toBe(0);
expect(fn(1)).toBe(1);
expect(fn(1, 2)).toBe(2);
expect(fn(1, 2, 3)).toBe(3);
});
it('different empty object arrays', () => {
let cnt = 0;
const fn = memoize(() => ++cnt);
const emptyArr = [];
fn(emptyArr);
expect(cnt).toBe(1);
fn(emptyArr);
expect(cnt).toBe(1);
fn([]);
expect(cnt).toBe(2);
fn([]);
expect(cnt).toBe(3);
});
});