test: add UTs
[poolifier.git] / tests / utils.test.js
index 97b5e8a985bd9569efe405c813740b4551c4c607..c00f0307d45b257da730c3cb55f72ba96f15789c 100644 (file)
@@ -1,3 +1,4 @@
+const { randomInt } = require('crypto')
 const { expect } = require('expect')
 const {
   CircularArray,
@@ -6,11 +7,14 @@ const {
 const {
   availableParallelism,
   average,
+  exponentialDelay,
   isAsyncFunction,
   isKillBehavior,
   isPlainObject,
   median,
   round,
+  secureRandom,
+  sleep,
   updateMeasurementStatistics
 } = require('../lib/utils')
 const { KillBehaviors } = require('../lib/worker/worker-options')
@@ -22,6 +26,23 @@ describe('Utils test suite', () => {
     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)
@@ -196,4 +217,11 @@ describe('Utils test suite', () => {
       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)
+  })
 })