+const { randomInt } = require('crypto')
const { expect } = require('expect')
const {
CircularArray,
const {
availableParallelism,
average,
+ exponentialDelay,
isAsyncFunction,
isKillBehavior,
isPlainObject,
median,
round,
+ secureRandom,
+ sleep,
updateMeasurementStatistics
} = require('../lib/utils')
const { KillBehaviors } = require('../lib/worker/worker-options')
expect(Number.isSafeInteger(availableParallelism())).toBe(true)
})
+ it('Verify sleep() behavior', async () => {
+ const now = performance.now()
+ await sleep(1000)
+ const elapsed = performance.now() - now
+ expect(elapsed).toBeGreaterThanOrEqual(1000)
+ })
+
+ it('Verify exponentialDelay() behavior', () => {
+ expect(typeof exponentialDelay(randomInt(1000)) === 'number').toBe(true)
+ expect(exponentialDelay(randomInt(1000))).toBeGreaterThanOrEqual(
+ Number.MIN_VALUE
+ )
+ expect(exponentialDelay(randomInt(1000))).toBeLessThanOrEqual(
+ Number.MAX_VALUE
+ )
+ })
+
it('Verify average() computation', () => {
expect(average([])).toBe(0)
expect(average([0.08])).toBe(0.08)
history: new CircularArray(DEFAULT_CIRCULAR_ARRAY_SIZE, 0.001, 0.003)
})
})
+
+ it('Verify secureRandom() behavior', () => {
+ const randomNumber = secureRandom()
+ expect(typeof randomNumber === 'number').toBe(true)
+ expect(randomNumber).toBeGreaterThanOrEqual(0)
+ expect(randomNumber).toBeLessThan(1)
+ })
})