maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
44 lines (32 loc) • 1.33 kB
text/typescript
import WorkerPool from './worker_pool';
describe('WorkerPool', () => {
test('#acquire', () => {
Object.defineProperty(WorkerPool, 'workerCount', {value: 4});
const pool = new WorkerPool();
expect(pool.workers).toBeFalsy();
const workers1 = pool.acquire('map-1');
const workers2 = pool.acquire('map-2');
expect(workers1).toHaveLength(4);
expect(workers2).toHaveLength(4);
// check that the two different dispatchers' workers arrays correspond
workers1.forEach((w, i) => { expect(w).toBe(workers2[i]); });
});
test('#release', () => {
let workersTerminated = 0;
Object.defineProperty(WorkerPool, 'workerCount', {value: 4});
const pool = new WorkerPool();
pool.acquire('map-1');
const workers = pool.acquire('map-2');
workers.forEach((w) => {
w.terminate = function () { workersTerminated += 1; };
});
pool.release('map-2');
// keeps workers if a dispatcher is still active
expect(workersTerminated).toBe(0);
expect(pool.workers.length > 0).toBeTruthy();
// terminates workers if no dispatchers are active
pool.release('map-1');
expect(workersTerminated).toBe(4);
expect(pool.workers).toBeFalsy();
});
});