feat: add utilization to pool information
[poolifier.git] / tests / utils.test.js
CommitLineData
aba955e1 1const { expect } = require('expect')
afe0d5bf
JB
2const {
3 availableParallelism,
4 isPlainObject,
5 median,
6 round
7} = require('../lib/utils')
47aacbaa
JB
8const {
9 isKillBehavior,
10 KillBehaviors
11} = require('../lib/worker/worker-options')
aba955e1
JB
12
13describe('Utils test suite', () => {
afe0d5bf
JB
14 it('Verify availableParallelism() behavior', () => {
15 expect(typeof availableParallelism() === 'number').toBe(true)
16 })
17
bb615bd0 18 it('Verify median() computation', () => {
4a45e8d2 19 expect(median([])).toBe(0)
76845835
JB
20 expect(median([0.08])).toBe(0.08)
21 expect(median([0.25, 4.75, 3.05, 6.04, 1.01, 2.02, 5.03])).toBe(3.05)
22 expect(median([0.25, 4.75, 3.05, 6.04, 1.01, 2.02])).toBe(2.535)
aba955e1
JB
23 })
24
afe0d5bf
JB
25 it('Verify round() behavior', () => {
26 expect(round(0)).toBe(0)
27 expect(round(0.5, 0)).toBe(1)
28 expect(round(0.5)).toBe(0.5)
29 expect(round(-0.5, 0)).toBe(-1)
30 expect(round(-0.5)).toBe(-0.5)
31 expect(round(1.005)).toBe(1.01)
32 expect(round(2.175)).toBe(2.18)
33 expect(round(5.015)).toBe(5.02)
34 expect(round(-1.005)).toBe(-1.01)
35 expect(round(-2.175)).toBe(-2.18)
36 expect(round(-5.015)).toBe(-5.02)
37 })
38
aba955e1
JB
39 it('Verify isPlainObject() behavior', () => {
40 expect(isPlainObject(null)).toBe(false)
41 expect(isPlainObject(undefined)).toBe(false)
42 expect(isPlainObject(true)).toBe(false)
43 expect(isPlainObject(false)).toBe(false)
44 expect(isPlainObject(0)).toBe(false)
45 expect(isPlainObject('')).toBe(false)
46 expect(isPlainObject([])).toBe(false)
47 expect(isPlainObject(() => {})).toBe(false)
48 expect(isPlainObject(new Date())).toBe(false)
49 expect(isPlainObject(new RegExp())).toBe(false)
50 expect(isPlainObject(new Error())).toBe(false)
51 expect(isPlainObject(new Map())).toBe(false)
52 expect(isPlainObject(new Set())).toBe(false)
53 expect(isPlainObject(new WeakMap())).toBe(false)
54 expect(isPlainObject(new WeakSet())).toBe(false)
55 expect(isPlainObject(new Int8Array())).toBe(false)
56 expect(isPlainObject(new Uint8Array())).toBe(false)
57 expect(isPlainObject(new Uint8ClampedArray())).toBe(false)
58 expect(isPlainObject(new Int16Array())).toBe(false)
59 expect(isPlainObject(new Uint16Array())).toBe(false)
60 expect(isPlainObject(new Int32Array())).toBe(false)
61 expect(isPlainObject(new Uint32Array())).toBe(false)
62 expect(isPlainObject(new Float32Array())).toBe(false)
63 expect(isPlainObject(new Float64Array())).toBe(false)
64 expect(isPlainObject(new BigInt64Array())).toBe(false)
65 expect(isPlainObject(new BigUint64Array())).toBe(false)
66 expect(isPlainObject(new Promise(() => {}))).toBe(false)
67 expect(isPlainObject(new WeakRef({}))).toBe(false)
68 expect(isPlainObject(new FinalizationRegistry(() => {}))).toBe(false)
69 expect(isPlainObject(new ArrayBuffer())).toBe(false)
70 expect(isPlainObject(new SharedArrayBuffer())).toBe(false)
71 expect(isPlainObject(new DataView(new ArrayBuffer()))).toBe(false)
72 expect(isPlainObject({})).toBe(true)
73 expect(isPlainObject({ a: 1 })).toBe(true)
74 })
47aacbaa
JB
75
76 it('Verify isKillBehavior() behavior', () => {
77 expect(isKillBehavior(KillBehaviors.SOFT, KillBehaviors.SOFT)).toBe(true)
78 expect(isKillBehavior(KillBehaviors.SOFT, KillBehaviors.HARD)).toBe(false)
79 expect(isKillBehavior(KillBehaviors.HARD, KillBehaviors.HARD)).toBe(true)
80 expect(isKillBehavior(KillBehaviors.HARD, KillBehaviors.SOFT)).toBe(false)
81 expect(isKillBehavior(KillBehaviors.SOFT)).toBe(false)
82 expect(isKillBehavior(KillBehaviors.HARD)).toBe(false)
83 expect(isKillBehavior(KillBehaviors.HARD, null)).toBe(false)
84 expect(isKillBehavior(KillBehaviors.SOFT, 'unknown')).toBe(false)
85 })
aba955e1 86})