randex 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,8 @@ Functions:
22
22
  - [randomEmail](#randomemail)
23
23
  - [randomName](#randomname)
24
24
  - [randomFullName](#randomfullname)
25
+ - [randomNumber](#randomnumber)
26
+ - [randomNumberArray](#randomnumberarray)
25
27
 
26
28
  Deeps:
27
29
 
@@ -293,6 +295,36 @@ Options:
293
295
  |secondLength|[RandexLength](#randexlength) | Second name length of chars. Default: [2,10] |
294
296
  |alphabet|[RandexAlphabet](#randexalphabet) | Defined alphabet. Default: `english` |
295
297
 
298
+
299
+ ## randomNumber
300
+
301
+ Generates random number from a range of numbers.
302
+
303
+ ```ts
304
+ import { randomNumber } from "randex";
305
+
306
+ // Generates a number from a range: [0, 3] (includes 0 and 3).
307
+ randomNumber(3);
308
+
309
+ // Generates a number from a specified range: [3, 7].
310
+ randomNumber([3, 7]);
311
+ ```
312
+
313
+ ## randomNumberArray
314
+
315
+ Generates random array with values from from a range.
316
+
317
+ ```ts
318
+ import { randomNumberArray } from "randex";
319
+
320
+ // Generates an array (with length equals 2) with unique numbers from a range: [0, 3].
321
+ randomNumberArray(3, 2);
322
+
323
+ // Generates an array (with length equals 3) with unique numbers from a range: [3, 7].
324
+ randomNumber([3, 7], 3);
325
+ ```
326
+
327
+
296
328
  ## Customization
297
329
 
298
330
  [random](#random) function is very flexible, there are many custom functions can be created.
@@ -3,9 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.random = void 0;
4
4
  var set_1 = require("./set");
5
5
  var type_1 = require("./type");
6
- function randomInt(max) {
7
- return Math.floor(Math.random() * max);
8
- }
9
6
  function randomString(params) {
10
7
  var length = params.length, range = params.range;
11
8
  var result = "";
@@ -15,10 +12,10 @@ function randomString(params) {
15
12
  }
16
13
  else if (Array.isArray(length)) {
17
14
  var min = length[0], max = length[1];
18
- currentLength = min + randomInt(max - min);
15
+ currentLength = min + set_1.RandexSetUtil.randomNumber(max - min + 1);
19
16
  }
20
17
  for (var i = 0; i < currentLength; i++) {
21
- var index = randomInt(range.length - 1);
18
+ var index = set_1.RandexSetUtil.randomNumber(range.length - 1);
22
19
  if (range.length >= index || range.length <= index) {
23
20
  result += range[index];
24
21
  }
@@ -11,4 +11,5 @@ export declare class RandexSetUtil {
11
11
  private static toAlphabetRange;
12
12
  static toRange(set: RandexSet): string;
13
13
  static getLength(reservedChars: number, length: RandexLength | undefined, defaultLength: RandexLength): RandexLength;
14
+ static randomNumber(length: number): number;
14
15
  }
package/lib/basic/set.js CHANGED
@@ -94,6 +94,9 @@ var RandexSetUtil = /** @class */ (function () {
94
94
  }
95
95
  return result;
96
96
  };
97
+ RandexSetUtil.randomNumber = function (length) {
98
+ return Math.floor(Math.random() * length);
99
+ };
97
100
  RandexSetUtil.defaultFileNameLength = [3, 10];
98
101
  RandexSetUtil.defaultExtensionLength = [2, 5];
99
102
  RandexSetUtil.fileNameExtraChars = ""; //"-_.";
@@ -5,7 +5,7 @@ var basic_1 = require("../basic");
5
5
  var set_1 = require("../basic/set");
6
6
  var type_1 = require("../basic/type");
7
7
  function randomFileName(p1, p2) {
8
- var fileNameLength = set_1.RandexSetUtil.getLength(1, set_1.RandexSetUtil.defaultFileNameLength, set_1.RandexSetUtil.defaultFileNameLength);
8
+ var fileNameLength = set_1.RandexSetUtil.defaultFileNameLength;
9
9
  var extensionLength = set_1.RandexSetUtil.defaultExtensionLength;
10
10
  var extension = "";
11
11
  if (type_1.RandexTypeParser.isLength(p1)) {
@@ -31,6 +31,7 @@ function randomFileName(p1, p2) {
31
31
  extension = p1.extension;
32
32
  }
33
33
  }
34
+ fileNameLength = set_1.RandexSetUtil.getLength(1, fileNameLength, fileNameLength);
34
35
  if (!extension) {
35
36
  extension = (0, basic_1.random)([["english", "l"], extensionLength]);
36
37
  }
@@ -3,3 +3,5 @@ export * from "./filename";
3
3
  export * from "./name";
4
4
  export * from "./username";
5
5
  export * from "./fullname";
6
+ export * from "./number";
7
+ export * from "./number-array";
@@ -19,3 +19,5 @@ __exportStar(require("./filename"), exports);
19
19
  __exportStar(require("./name"), exports);
20
20
  __exportStar(require("./username"), exports);
21
21
  __exportStar(require("./fullname"), exports);
22
+ __exportStar(require("./number"), exports);
23
+ __exportStar(require("./number-array"), exports);
@@ -0,0 +1,2 @@
1
+ import { RandexLength } from "../interfaces";
2
+ export declare function randomNumberArray(length: RandexLength, count: number): number[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomNumberArray = void 0;
4
+ var number_1 = require("./number");
5
+ function randomNumberArray(length, count) {
6
+ var min = 0;
7
+ var max = 0;
8
+ var result = [];
9
+ if (typeof length === "number") {
10
+ max = length;
11
+ }
12
+ else {
13
+ min = length[0];
14
+ max = length[1];
15
+ }
16
+ var maxCount = max - min + 1;
17
+ var numberArray = [];
18
+ for (var i = min; i <= max; i++) {
19
+ numberArray.push(i);
20
+ }
21
+ for (var i = 0; i < count && i < maxCount; i++) {
22
+ var arrayCount = numberArray.length - 1;
23
+ var index = (0, number_1.randomNumber)(arrayCount);
24
+ var value = numberArray[index];
25
+ result.push(value);
26
+ numberArray.splice(index, 1);
27
+ }
28
+ return result;
29
+ }
30
+ exports.randomNumberArray = randomNumberArray;
@@ -0,0 +1,2 @@
1
+ import { RandexLength } from "../interfaces";
2
+ export declare function randomNumber(length: RandexLength): number;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomNumber = void 0;
4
+ var set_1 = require("../basic/set");
5
+ function randomNumber(length) {
6
+ if (typeof length === "number") {
7
+ return set_1.RandexSetUtil.randomNumber(length + 1);
8
+ }
9
+ else {
10
+ var min = length[0], max = length[1];
11
+ return set_1.RandexSetUtil.randomNumber(max - min + 1) + min;
12
+ }
13
+ }
14
+ exports.randomNumber = randomNumber;
@@ -49,7 +49,7 @@ describe("randomFileName", function () {
49
49
  testFileName({ fullFileName: fullFileName, fileNameLength: r.defaultFileNameLength, extensionLength: extensionLength });
50
50
  });
51
51
  });
52
- it("params: extension", function () {
52
+ it("params2: extension", function () {
53
53
  var fileNameLength = [10, 15];
54
54
  var extension = "xml";
55
55
  test_util_1.TestUtil.loop(function () {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var number_array_1 = require("../custom/number-array");
4
+ function testNumber(min, max, count) {
5
+ var value = (0, number_array_1.randomNumberArray)([min, max], count);
6
+ var uniqueResult = [];
7
+ var _loop_1 = function (i) {
8
+ var uniqueValue = value[i];
9
+ expect(uniqueResult.find(function (x) { return x === uniqueValue; })).toBeFalsy();
10
+ expect(value[i]).toBeGreaterThanOrEqual(min);
11
+ expect(value[i]).toBeLessThanOrEqual(max);
12
+ };
13
+ for (var i = 0; i < count; i++) {
14
+ _loop_1(i);
15
+ }
16
+ }
17
+ describe("randomNumberArray", function () {
18
+ it("param: number", function () {
19
+ testNumber(0, 2, 0);
20
+ testNumber(1, 5, 1);
21
+ testNumber(5, 10, 2);
22
+ });
23
+ it("param: big number", function () {
24
+ testNumber(50, 500, 50);
25
+ });
26
+ it("max count - unique", function () {
27
+ testNumber(10, 20, 11);
28
+ });
29
+ it("count limit", function () {
30
+ var min = 5;
31
+ var max = 10;
32
+ var count = max - min + 1;
33
+ var value = (0, number_array_1.randomNumberArray)([min, max], count);
34
+ expect(value.length).toBe(count);
35
+ // max length limit
36
+ value = (0, number_array_1.randomNumberArray)([min, max], count + 10);
37
+ expect(value.length).toBe(count);
38
+ });
39
+ it("range: fill all possible values", function () {
40
+ var min = 5;
41
+ var max = 10;
42
+ var count = max - min + 1;
43
+ var value = (0, number_array_1.randomNumberArray)([min, max], count);
44
+ expect(value.length).toBe(count);
45
+ var _loop_2 = function (i) {
46
+ expect(value.find(function (x) { return x === i; })).toBeTruthy();
47
+ };
48
+ for (var i = min; i <= max; i++) {
49
+ _loop_2(i);
50
+ }
51
+ });
52
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var number_1 = require("../custom/number");
4
+ var test_util_1 = require("./test-util");
5
+ function testNumber(max) {
6
+ var value = (0, number_1.randomNumber)(max);
7
+ expect(value).toBeGreaterThanOrEqual(0);
8
+ expect(value).toBeLessThanOrEqual(max);
9
+ }
10
+ function testNumberWithArray(range) {
11
+ var min = range[0], max = range[1];
12
+ var value = (0, number_1.randomNumber)(range);
13
+ expect(value).toBeGreaterThanOrEqual(min);
14
+ expect(value).toBeLessThanOrEqual(max);
15
+ }
16
+ describe("randomNumber", function () {
17
+ it("param: number", function () {
18
+ testNumber(0);
19
+ testNumber(1);
20
+ testNumber(5);
21
+ });
22
+ it("much range", function () {
23
+ var max = 4;
24
+ var result = {};
25
+ test_util_1.TestUtil.loop(function () {
26
+ var value = (0, number_1.randomNumber)(max);
27
+ result[value] = (result[value] || 0) + 1;
28
+ });
29
+ for (var i = 0; i <= max; i++) {
30
+ expect(result[i]).toBeGreaterThan(0);
31
+ }
32
+ });
33
+ it("param: number array", function () {
34
+ test_util_1.TestUtil.loop(function () {
35
+ testNumberWithArray([10, 15]);
36
+ });
37
+ });
38
+ });
@@ -26,6 +26,28 @@ describe("random", function () {
26
26
  inRange("abc", 3);
27
27
  inRange("1234abc!@#", 3);
28
28
  });
29
+ it("result 1: number", function () {
30
+ var length = [0, 4];
31
+ var result = {};
32
+ test_util_1.TestUtil.loop(function () {
33
+ var l = (0, basic_1.random)({ set: "english", length: length }).length;
34
+ result[l] = (result[l] || 0) + 1;
35
+ });
36
+ for (var i = 0; i <= 4; i++) {
37
+ expect(result[i]).toBeGreaterThan(0);
38
+ }
39
+ });
40
+ it("result 2: number range", function () {
41
+ var length = [5, 8];
42
+ var result = {};
43
+ test_util_1.TestUtil.loop(function () {
44
+ var l = (0, basic_1.random)({ set: "english", length: length }).length;
45
+ result[l] = (result[l] || 0) + 1;
46
+ });
47
+ for (var i = 5; i <= 8; i++) {
48
+ expect(result[i]).toBeGreaterThan(0);
49
+ }
50
+ });
29
51
  it("length: alphabet", function () {
30
52
  inSet("english", 0);
31
53
  inSet("english", [0, 0]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "randex",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",