From b47a281403db961fc928d1fb22abe2f8b4a3516f Mon Sep 17 00:00:00 2001 From: pyoor Date: Mon, 6 Aug 2018 10:22:21 -0400 Subject: [PATCH] Add additional strategies to make._exceed --- lib/make/numbers.js | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/lib/make/numbers.js b/lib/make/numbers.js index 86a40f5..0088850 100644 --- a/lib/make/numbers.js +++ b/lib/make/numbers.js @@ -7,15 +7,23 @@ const random = require('../random') class number extends make { /** - * generate a number that exceeds the supplied boundary by +- 3 - * @param start - * @param end + * Generate a number that is more likely to exceed the supplied boundary + * @param value {number} * @private */ - static _exceed (start, end) { - const value = random.item([start, end]) - const offset = random.range(-3, 3) - return value + offset + static _exceed (value) { + switch (random.number(4)) { + case 0: + // Divisions + return Math.ceil(value / random.range(2, 4)) + case 1: + // Powers + const offset = Math.pow(2, random.range(1, 7)) + return (value > 0) ? (value - offset) : value + offset + default: + // Slightly less than limit + return (value > 0) ? (value - random.number(3)) : value + random.number(3) + } } /** @@ -25,7 +33,10 @@ class number extends make { */ static int8 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(-128, 127) + return number._exceed(random.choose([ + [1, -128], + [10, 127] + ])) } return random.range(-128, 127) @@ -38,7 +49,7 @@ class number extends make { */ static uint8 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(0, 255) + return number._exceed(255) } return random.range(0, 255) @@ -51,7 +62,10 @@ class number extends make { */ static int16 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(-32768, 32767) + return number._exceed(random.choose([ + [1, -32768], + [10, 32767] + ])) } return random.range(-32768, 32767) @@ -64,7 +78,7 @@ class number extends make { */ static uint16 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(0, 65535) + return number._exceed(65535) } return random.range(-0, 65535) @@ -77,7 +91,10 @@ class number extends make { */ static int32 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(-2147483648, 2147483647) + return number._exceed(random.choose([ + [1, -2147483648], + [10, 2147483647] + ])) } return random.range(-2147483648, 2147483647) @@ -90,7 +107,7 @@ class number extends make { */ static uint32 (bypass = false) { if (bypass || random.chance(50)) { - return number._exceed(0, 4294967295) + return number._exceed(4294967295) } return random.range(0, 4294967295)