mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-12-18 06:57:59 +01:00
28 lines
914 B
TypeScript
28 lines
914 B
TypeScript
|
/**
|
||
|
* @fileOverview Utilities to aid in unit testing where multiple potential values need to be considered.
|
||
|
* Picking from a pool of limited data randomly can add further resilience.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Randomly returns either `true` or `false`
|
||
|
*/
|
||
|
export const getRandomBoolean = (): boolean => Math.random() > 0.5;
|
||
|
|
||
|
/**
|
||
|
* Returns a random integer between `min` and `max`, inclusive
|
||
|
*/
|
||
|
export function getRandomIntBetween(min: number, max: number): number {
|
||
|
const intMin = Math.ceil(min);
|
||
|
const intMax = Math.floor(max);
|
||
|
return Math.floor(Math.random() * (intMax - intMin + 1) + intMin);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns a random item from the provided `array`, throws an error if `array is empty
|
||
|
*/
|
||
|
export const getRandomArrayItem = <T>(array: T[]): T => {
|
||
|
if (array.length === 0) throw new Error('Attempt to pick random item from empty array');
|
||
|
|
||
|
return array[Math.floor(Math.random() * array.length)];
|
||
|
};
|