const { createScheduler, createWorker } = Tesseract;

let workers = [];

before(async function cb() {
  this.timeout(0);
  const NUM_WORKERS = 5;
  console.log(`Initializing ${NUM_WORKERS} workers`);
  workers = await Promise.all(Array(NUM_WORKERS).fill(0).map(async () => {
    const w = createWorker(OPTIONS);
    await w.load();
    await w.loadLanguage('eng');
    await w.initialize('eng');
    return w;
  }));
  console.log(`Initialized ${NUM_WORKERS} workers`);
});

describe('scheduler', () => {
  describe('should speed up with more workers (running 10 jobs)', () => {
    [1, 3, 5].forEach(num => (
      it(`support using ${num} workers`, async () => {
        const NUM_JOBS = 10;
        const scheduler = createScheduler();
        workers.slice(0, num).forEach((w) => {
          scheduler.addWorker(w);
        });
        const rets = await Promise.all(Array(NUM_JOBS).fill(0).map((_, idx) => (
          scheduler.addJob('recognize', `${IMAGE_PATH}/${idx % 2 === 0 ? 'simple' : 'cosmic'}.png`)
        )));
        expect(rets.length).to.be(NUM_JOBS);
      }).timeout(60000)
    ));
  });
});