LibreNMS/lib/typeahead/test/bloodhound/lru_cache_spec.js

44 lines
1.2 KiB
JavaScript

describe('LruCache', function() {
beforeEach(function() {
this.cache = new LruCache(3);
});
it('should make entries retrievable by their keys', function() {
var key = 'key', val = 42;
this.cache.set(key, val);
expect(this.cache.get(key)).toBe(val);
});
it('should return undefined if key has not been set', function() {
expect(this.cache.get('wat?')).toBeUndefined();
});
it('should hold up to maxSize entries', function() {
this.cache.set('one', 1);
this.cache.set('two', 2);
this.cache.set('three', 3);
this.cache.set('four', 4);
expect(this.cache.get('one')).toBeUndefined();
expect(this.cache.get('two')).toBe(2);
expect(this.cache.get('three')).toBe(3);
expect(this.cache.get('four')).toBe(4);
});
it('should evict lru entry if cache is full', function() {
this.cache.set('one', 1);
this.cache.set('two', 2);
this.cache.set('three', 3);
this.cache.get('one');
this.cache.set('four', 4);
expect(this.cache.get('one')).toBe(1);
expect(this.cache.get('two')).toBeUndefined();
expect(this.cache.get('three')).toBe(3);
expect(this.cache.get('four')).toBe(4);
expect(this.cache.size).toBe(3);
});
});