await pool.destroy()
})
+ it('Verify that mapExecute() is working', async () => {
+ const pool = new DynamicThreadPool(
+ Math.floor(numberOfWorkers / 2),
+ numberOfWorkers,
+ './tests/worker-files/thread/testMultipleTaskFunctionsWorker.mjs'
+ )
+ expect(() => pool.mapExecute()).toThrow(
+ new TypeError('data argument must be a defined iterable')
+ )
+ expect(() => pool.mapExecute(0)).toThrow(
+ new TypeError('data argument must be an iterable')
+ )
+ let results = await pool.mapExecute([{}, {}, {}, {}])
+ expect(results).toStrictEqual([{ ok: 1 }, { ok: 1 }, { ok: 1 }, { ok: 1 }])
+ expect(pool.info.executingTasks).toBe(0)
+ expect(pool.info.executedTasks).toBe(4)
+ results = await pool.mapExecute(
+ [{ n: 10 }, { n: 20 }, { n: 30 }, { n: 40 }],
+ 'factorial'
+ )
+ expect(results).toStrictEqual([
+ 3628800, 2432902008176640000, 2.6525285981219103e32, 8.159152832478977e47,
+ ])
+ expect(pool.info.executingTasks).toBe(0)
+ expect(pool.info.executedTasks).toBe(8)
+ results = await pool.mapExecute(
+ new Set([{ n: 10 }, { n: 20 }, { n: 30 }, { n: 40 }]),
+ 'factorial'
+ )
+ expect(results).toStrictEqual([
+ 3628800, 2432902008176640000, 2.6525285981219103e32, 8.159152832478977e47,
+ ])
+ expect(pool.info.executingTasks).toBe(0)
+ expect(pool.info.executedTasks).toBe(12)
+ await pool.destroy()
+ })
+
it('Verify that task function objects worker is working', async () => {
const pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),