|
1 | 1 | import { Metric } from "./metric.mjs"; |
2 | 2 | import { params } from "./params.mjs"; |
| 3 | +import { TEST_INVOKER_LOOKUP } from "./test-invoker.mjs"; |
3 | 4 |
|
4 | 5 | const performance = globalThis.performance; |
5 | 6 |
|
@@ -266,61 +267,6 @@ const WarmupSuite = { |
266 | 267 | ], |
267 | 268 | }; |
268 | 269 |
|
269 | | -class TestInvoker { |
270 | | - constructor(syncCallback, asyncCallback, reportCallback) { |
271 | | - this._syncCallback = syncCallback; |
272 | | - this._asyncCallback = asyncCallback; |
273 | | - this._reportCallback = reportCallback; |
274 | | - } |
275 | | -} |
276 | | - |
277 | | -class TimerTestInvoker extends TestInvoker { |
278 | | - start() { |
279 | | - return new Promise((resolve) => { |
280 | | - setTimeout(() => { |
281 | | - this._syncCallback(); |
282 | | - setTimeout(() => { |
283 | | - this._asyncCallback(); |
284 | | - requestAnimationFrame(async () => { |
285 | | - await this._reportCallback(); |
286 | | - resolve(); |
287 | | - }); |
288 | | - }, 0); |
289 | | - }, params.waitBeforeSync); |
290 | | - }); |
291 | | - } |
292 | | -} |
293 | | - |
294 | | -class RAFTestInvoker extends TestInvoker { |
295 | | - start() { |
296 | | - return new Promise((resolve) => { |
297 | | - if (params.waitBeforeSync) |
298 | | - setTimeout(() => this._scheduleCallbacks(resolve), params.waitBeforeSync); |
299 | | - else |
300 | | - this._scheduleCallbacks(resolve); |
301 | | - }); |
302 | | - } |
303 | | - |
304 | | - _scheduleCallbacks(resolve) { |
305 | | - requestAnimationFrame(() => this._syncCallback()); |
306 | | - requestAnimationFrame(() => { |
307 | | - setTimeout(() => { |
308 | | - this._asyncCallback(); |
309 | | - setTimeout(async () => { |
310 | | - await this._reportCallback(); |
311 | | - resolve(); |
312 | | - }, 0); |
313 | | - }, 0); |
314 | | - }); |
315 | | - } |
316 | | -} |
317 | | - |
318 | | -const TEST_INVOKER_LOOKUP = { |
319 | | - __proto__: null, |
320 | | - timer: TimerTestInvoker, |
321 | | - raf: RAFTestInvoker, |
322 | | -}; |
323 | | - |
324 | 270 | // https://stackoverflow.com/a/47593316 |
325 | 271 | function seededHashRandomNumberGenerator(a) { |
326 | 272 | return function () { |
@@ -658,7 +604,7 @@ export class SuiteRunner { |
658 | 604 |
|
659 | 605 | const report = () => this._recordTestResults(test, syncTime, asyncTime); |
660 | 606 | const invokerClass = TEST_INVOKER_LOOKUP[params.measurementMethod]; |
661 | | - const invoker = new invokerClass(runSync, measureAsync, report); |
| 607 | + const invoker = new invokerClass(runSync, measureAsync, report, params); |
662 | 608 |
|
663 | 609 | return invoker.start(); |
664 | 610 | } |
|
0 commit comments