openpencil/tests/engine/random/basic.test.ts
2026-05-16 12:30:27 +03:00

34 lines
1 KiB
TypeScript

import { describe, expect, test } from 'bun:test'
import { randomHex, randomIndex, randomInt } from '@open-pencil/core/random'
describe('random helpers', () => {
test('randomHex returns requested byte length as hex', () => {
expect(randomHex(0)).toBe('')
expect(randomHex(8)).toMatch(/^[0-9a-f]{16}$/)
})
test('randomHex validates byte count', () => {
expect(() => randomHex(-1)).toThrow(RangeError)
expect(() => randomHex(1.5)).toThrow(RangeError)
})
test('randomInt returns an integer', () => {
expect(Number.isInteger(randomInt())).toBe(true)
})
test('randomIndex returns a bounded index', () => {
for (let i = 0; i < 100; i++) {
const index = randomIndex(10)
expect(index).toBeGreaterThanOrEqual(0)
expect(index).toBeLessThan(10)
}
})
test('randomIndex validates length', () => {
expect(() => randomIndex(0)).toThrow(RangeError)
expect(() => randomIndex(-1)).toThrow(RangeError)
expect(() => randomIndex(1.5)).toThrow(RangeError)
})
})