Syntax previewClick to edit
1234
export default function createLruCache(maxSize) {
throw new Error('Not implemented');
}
Syntax previewClick to edit
1234567891011121314151617181920212223242526272829303132333435363738394041424344
import createLruCache from './createLruCache';
describe('createLruCache', () => {
test('throws for invalid maxSize', () => {
expect(() => createLruCache(0)).toThrow();
expect(() => createLruCache(-1)).toThrow();
expect(() => createLruCache(1.5)).toThrow();
});
test('evicts least-recently-used on overflow', () => {
const c = createLruCache(2);
c.set('a', 1);
c.set('b', 2);
c.set('c', 3);
expect(c.has('a')).toBe(false);
expect(c.has('b')).toBe(true);
expect(c.has('c')).toBe(true);
expect(c.keys()).toEqual(['b', 'c']);
});
test('get refreshes recency', () => {
const c = createLruCache(2);
c.set('a', 1);
c.set('b', 2);
expect(c.get('a')).toBe(1);
c.set('c', 3);
expect(c.has('b')).toBe(false);
expect(c.keys()).toEqual(['a', 'c']);
});
test('updating an existing key does not grow size', () => {
const c = createLruCache(2);
c.set('a', 1);
c.set('b', 2);
c.set('a', 10);
expect(c.size()).toBe(2);
expect(c.get('a')).toBe(10);
});
});
Run tests to see results.