34 lines
1 KiB
TypeScript
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)
|
|
})
|
|
})
|