import { expect, test, vi } from "vitest" import { randomInteger } from "#Source/random/index.ts" test("randomInteger returns expected output across ranges and available random sources", () => { const singleBoundValue = randomInteger(5) expect(singleBoundValue).toBeGreaterThanOrEqual(0) expect(singleBoundValue).toBeLessThanOrEqual(5) expect(Number.isInteger(singleBoundValue)).toBe(true) const reversedRangeValue = randomInteger(8, 3) expect(reversedRangeValue).toBeGreaterThanOrEqual(3) expect(reversedRangeValue).toBeLessThanOrEqual(8) expect(Number.isInteger(reversedRangeValue)).toBe(true) expect(randomInteger(4, 4)).toBe(4) expect(() => randomInteger(1.5)).toThrow(TypeError) expect(() => randomInteger(Number.NaN)).toThrow(TypeError) expect(() => randomInteger(1, Number.POSITIVE_INFINITY)).toThrow(TypeError) vi.stubGlobal("crypto", undefined) try { const fallbackValue = randomInteger(-2, 2) expect(fallbackValue).toBeGreaterThanOrEqual(-2) expect(fallbackValue).toBeLessThanOrEqual(2) expect(Number.isInteger(fallbackValue)).toBe(true) } finally { vi.unstubAllGlobals() } })