From 59b4ae8d09aab955735811efaeaa5224f27f8194 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 22 Feb 2021 09:59:19 +0100 Subject: [PATCH] TileQueue tests with events instead of setTimeout --- test/spec/ol/tilequeue.test.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/test/spec/ol/tilequeue.test.js b/test/spec/ol/tilequeue.test.js index 0c5857e5db..e069b2ebbc 100644 --- a/test/spec/ol/tilequeue.test.js +++ b/test/spec/ol/tilequeue.test.js @@ -45,8 +45,21 @@ describe('ol.TileQueue', function () { const q2 = new TileQueue(noop, noop); const numTiles = 20; + const maxLoading = numTiles / 2; + + let processedTiles = 0; for (let i = 0; i < numTiles; ++i) { const tile = createImageTile(); + tile.addEventListener('change', function processed() { + const state = tile.getState(); + if (state === TileState.LOADED || state === TileState.ERROR) { + tile.removeEventListener('change', processed); + ++processedTiles; + } + if (processedTiles === numTiles) { + setTimeout(finish, 0); + } + }); q1.enqueue([tile]); q2.enqueue([tile]); } @@ -55,8 +68,6 @@ describe('ol.TileQueue', function () { expect(q1.getCount()).to.equal(numTiles); expect(q2.getCount()).to.equal(numTiles); - const maxLoading = numTiles / 2; - // and nothing is loading expect(q1.getTilesLoading()).to.equal(0); expect(q2.getTilesLoading()).to.equal(0); @@ -74,7 +85,7 @@ describe('ol.TileQueue', function () { expect(q2.getCount()).to.equal(0); // let all tiles load - setTimeout(function () { + function finish() { expect(q1.getTilesLoading()).to.equal(0); expect(q2.getTilesLoading()).to.equal(0); @@ -86,7 +97,7 @@ describe('ol.TileQueue', function () { expect(q2.getCount()).to.equal(0); done(); - }, 20); + } }); });