@google/model-viewer
Version:
Easily display interactive 3D models on the web and in AR!
65 lines • 2.5 kB
JavaScript
/*
* Copyright 2019 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { CacheEvictionPolicy } from '../../utilities/cache-eviction-policy.js';
const expect = chai.expect;
suite('CacheEvictionPolicy', () => {
let cache;
let policy;
setup(() => {
cache = new Set();
policy = new CacheEvictionPolicy(cache);
});
test('reports zero retainers for uncached items', () => {
policy.retain('foo');
expect(policy.retainerCount('bar')).to.be.equal(0);
});
test('accounts for total retainers of cached items', () => {
policy.retain('foo');
policy.retain('foo');
policy.release('foo');
policy.retain('foo');
policy.release('foo');
expect(policy.retainerCount('foo')).to.be.equal(1);
});
test('ignores non-retained cached items within the threshold', () => {
cache.add('foo');
policy.retain('foo');
policy.release('foo');
expect(policy.retainerCount('foo')).to.be.equal(0);
expect(cache.has('foo')).to.be.true;
});
test('deletes non-retained cached items outside the threshold', () => {
cache.add('foo');
policy.retain('foo');
policy.evictionThreshold = 0;
policy.release('foo');
expect(policy.retainerCount('foo')).to.be.equal(0);
expect(cache.has('foo')).to.be.false;
});
test('deletes non-retained cached items least-recently-used first', () => {
cache.add('foo');
cache.add('bar');
policy.retain('foo');
policy.retain('bar');
policy.evictionThreshold = 1;
policy.release('foo');
policy.release('bar');
expect(policy.retainerCount('foo')).to.be.equal(0);
expect(policy.retainerCount('bar')).to.be.equal(0);
expect(cache.has('foo')).to.be.false;
expect(cache.has('bar')).to.be.true;
});
});
//# sourceMappingURL=cache-eviction-policy-spec.js.map