test: add updateMeasurementStatistics() behavior test
[poolifier.git] / tests / utils.test.js
index 0bf5e50ca8a4989099500100ff2b097a96092713..6518ca924f188fc69d7de8d58adc9219c2ce311e 100644 (file)
@@ -1,14 +1,14 @@
 const { expect } = require('expect')
 const {
   availableParallelism,
+  isAsyncFunction,
+  isKillBehavior,
   isPlainObject,
   median,
-  round
+  round,
+  updateMeasurementStatistics
 } = require('../lib/utils')
-const {
-  isKillBehavior,
-  KillBehaviors
-} = require('../lib/worker/worker-options')
+const { KillBehaviors } = require('../lib/worker/worker-options')
 
 describe('Utils test suite', () => {
   it('Verify availableParallelism() behavior', () => {
@@ -81,6 +81,87 @@ describe('Utils test suite', () => {
     expect(isKillBehavior(KillBehaviors.SOFT)).toBe(false)
     expect(isKillBehavior(KillBehaviors.HARD)).toBe(false)
     expect(isKillBehavior(KillBehaviors.HARD, null)).toBe(false)
+    expect(isKillBehavior(KillBehaviors.HARD, undefined)).toBe(false)
     expect(isKillBehavior(KillBehaviors.SOFT, 'unknown')).toBe(false)
   })
+
+  it('Verify isAsyncFunction() behavior', () => {
+    expect(isAsyncFunction(null)).toBe(false)
+    expect(isAsyncFunction(undefined)).toBe(false)
+    expect(isAsyncFunction(true)).toBe(false)
+    expect(isAsyncFunction(false)).toBe(false)
+    expect(isAsyncFunction(0)).toBe(false)
+    expect(isAsyncFunction('')).toBe(false)
+    expect(isAsyncFunction([])).toBe(false)
+    expect(isAsyncFunction(new Date())).toBe(false)
+    expect(isAsyncFunction(new RegExp())).toBe(false)
+    expect(isAsyncFunction(new Error())).toBe(false)
+    expect(isAsyncFunction(new Map())).toBe(false)
+    expect(isAsyncFunction(new Set())).toBe(false)
+    expect(isAsyncFunction(new WeakMap())).toBe(false)
+    expect(isAsyncFunction(new WeakSet())).toBe(false)
+    expect(isAsyncFunction(new Int8Array())).toBe(false)
+    expect(isAsyncFunction(new Uint8Array())).toBe(false)
+    expect(isAsyncFunction(new Uint8ClampedArray())).toBe(false)
+    expect(isAsyncFunction(new Int16Array())).toBe(false)
+    expect(isAsyncFunction(new Uint16Array())).toBe(false)
+    expect(isAsyncFunction(new Int32Array())).toBe(false)
+    expect(isAsyncFunction(new Uint32Array())).toBe(false)
+    expect(isAsyncFunction(new Float32Array())).toBe(false)
+    expect(isAsyncFunction(new Float64Array())).toBe(false)
+    expect(isAsyncFunction(new BigInt64Array())).toBe(false)
+    expect(isAsyncFunction(new BigUint64Array())).toBe(false)
+    expect(isAsyncFunction(new Promise(() => {}))).toBe(false)
+    expect(isAsyncFunction(new WeakRef({}))).toBe(false)
+    expect(isAsyncFunction(new FinalizationRegistry(() => {}))).toBe(false)
+    expect(isAsyncFunction(new ArrayBuffer())).toBe(false)
+    expect(isAsyncFunction(new SharedArrayBuffer())).toBe(false)
+    expect(isAsyncFunction(new DataView(new ArrayBuffer()))).toBe(false)
+    expect(isAsyncFunction({})).toBe(false)
+    expect(isAsyncFunction({ a: 1 })).toBe(false)
+    expect(isAsyncFunction(() => {})).toBe(false)
+    expect(isAsyncFunction(function () {})).toBe(false)
+    expect(isAsyncFunction(function named () {})).toBe(false)
+    expect(isAsyncFunction(async () => {})).toBe(true)
+    expect(isAsyncFunction(async function () {})).toBe(true)
+    expect(isAsyncFunction(async function named () {})).toBe(true)
+  })
+
+  it('Verify updateMeasurementStatistics() behavior', () => {
+    const measurementStatistics = {}
+    updateMeasurementStatistics(
+      measurementStatistics,
+      { aggregate: true, average: false, median: false },
+      0.01,
+      1
+    )
+    expect(measurementStatistics).toEqual({
+      aggregate: 0.01,
+      maximum: 0.01,
+      minimum: 0.01
+    })
+    updateMeasurementStatistics(
+      measurementStatistics,
+      { aggregate: true, average: false, median: false },
+      0.02,
+      2
+    )
+    expect(measurementStatistics).toEqual({
+      aggregate: 0.03,
+      maximum: 0.02,
+      minimum: 0.01
+    })
+    updateMeasurementStatistics(
+      measurementStatistics,
+      { aggregate: true, average: true, median: false },
+      0.001,
+      3
+    )
+    expect(measurementStatistics).toEqual({
+      aggregate: 0.031,
+      maximum: 0.02,
+      minimum: 0.001,
+      average: 0.010333333333333333
+    })
+  })
 })