diff --git a/src/modules/datatype/index.ts b/src/modules/datatype/index.ts index f46cfc0b80a..b8830610548 100644 --- a/src/modules/datatype/index.ts +++ b/src/modules/datatype/index.ts @@ -20,7 +20,8 @@ export class DatatypeModule extends SimpleModuleBase { * @param options.max Upper bound for generated number. Defaults to `min + 99999`. * @param options.precision Precision of the generated number. Defaults to `1`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. + * @throws When `precision` is negative. * * @see faker.number.int(): For generating a random integer. * @see faker.number.float(): For generating a random floating-point number. @@ -85,6 +86,9 @@ export class DatatypeModule extends SimpleModuleBase { * @param options.max Upper bound for generated number. Defaults to `min + 99999`. * @param options.precision Precision of the generated number. Defaults to `0.01`. * + * @throws When `min` is greater than `max`. + * @throws When `precision` is negative. + * * @see faker.number.float(): For the replacement method. * * @example diff --git a/src/modules/number/index.ts b/src/modules/number/index.ts index a20a0040fdf..91d987771e0 100644 --- a/src/modules/number/index.ts +++ b/src/modules/number/index.ts @@ -24,7 +24,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `Number.MAX_SAFE_INTEGER`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. + * @throws When there are no integers between `min` and `max`. * * @see faker.string.numeric(): For generating a `string` of digits with a given length (range). * @@ -93,6 +94,9 @@ export class NumberModule extends SimpleModuleBase { * @param options.precision Precision of the generated number, for example `0.01` will round to 2 decimal points. * If precision is passed, the upper bound is inclusive. * + * @throws When `min` is greater than `max`. + * @throws When `precision` is negative. + * * @example * faker.number.float() // 0.5688541042618454 * faker.number.float(3) // 2.367973240558058 @@ -168,7 +172,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `1`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. + * @throws When there are no integers between `min` and `max`. * * @see faker.string.binary(): For generating a `binary string` with a given length (range). * @@ -217,7 +222,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `7`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. + * @throws When there are no integers between `min` and `max`. * * @see faker.string.octal(): For generating an `octal string` with a given length (range). * @@ -266,7 +272,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `15`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. + * @throws When there are no integers between `min` and `max`. * * @example * faker.number.hex() // 'b' @@ -313,7 +320,7 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated bigint. Defaults to `0n`. * @param options.max Upper bound for generated bigint. Defaults to `min + 999999999999999n`. * - * @throws When options define `max < min`. + * @throws When `min` is greater than `max`. * * @example * faker.number.bigInt() // 55422n diff --git a/test/modules/datatype.spec.ts b/test/modules/datatype.spec.ts index b4d154f4e0b..3d65797d780 100644 --- a/test/modules/datatype.spec.ts +++ b/test/modules/datatype.spec.ts @@ -232,6 +232,12 @@ describe('datatype', () => { new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); + + it('should throw when precision is negative', () => { + expect(() => { + faker.datatype.number({ precision: -0.01 }); + }).toThrow(new FakerError('Precision should be greater than 0.')); + }); }); describe('float', () => { @@ -306,6 +312,23 @@ describe('datatype', () => { expect(opts.min).toBe(min); expect(opts.max).toBe(max); }); + + it('should throw when min > max', () => { + const min = 10; + const max = 9; + + expect(() => { + faker.datatype.number({ min, max }); + }).toThrow( + new FakerError(`Max ${max} should be greater than min ${min}.`) + ); + }); + + it('should throw when precision is negative', () => { + expect(() => { + faker.datatype.float({ precision: -0.01 }); + }).toThrow(new FakerError('Precision should be greater than 0.')); + }); }); describe('datetime', () => { diff --git a/test/modules/number.spec.ts b/test/modules/number.spec.ts index 699200b22f4..97061d56ffe 100644 --- a/test/modules/number.spec.ts +++ b/test/modules/number.spec.ts @@ -305,7 +305,7 @@ describe('number', () => { return [...str].every((char) => char === '0' || char === '1'); } - it('enerates single binary character when no additional argument was provided', () => { + it('generates single binary character when no additional argument was provided', () => { const binary = faker.number.binary(); expect(binary).toBeTypeOf('string'); @@ -345,6 +345,14 @@ describe('number', () => { new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); + + it('should throw when there is no integer between min and max', () => { + expect(() => { + faker.number.binary({ min: 2.1, max: 2.9 }); + }).toThrow( + new FakerError(`No integer value between 2.1 and 2.9 found.`) + ); + }); }); describe('octal', () => { @@ -388,6 +396,14 @@ describe('number', () => { new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); + + it('should throw when there is no integer between min and max', () => { + expect(() => { + faker.number.octal({ min: 2.1, max: 2.9 }); + }).toThrow( + new FakerError(`No integer value between 2.1 and 2.9 found.`) + ); + }); }); describe('hex', () => { @@ -428,6 +444,14 @@ describe('number', () => { new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); + + it('should throw when there is no integer between min and max', () => { + expect(() => { + faker.number.hex({ min: 2.1, max: 2.9 }); + }).toThrow( + new FakerError(`No integer value between 2.1 and 2.9 found.`) + ); + }); }); describe('bigInt', () => {