Skip to content

Commit 7ad22c2

Browse files
lbuersteMarak
authored and
Marak
committed
Issue 1114: New datatype module
Current status: - moved number(), float(), hexaDecimal(), boolean(), uuid() from random to datatype - moved respective test from random.unit to datatype.unit - tests of moved methods in random now check if DeprecationWarning is printed and respective method in datatype module is called - adapted all lib files that use moved methods (mostly number) - adapted tests of respective files to spy on the correct method - adapted README in order to promote usage of method that logs a DeprecationWarning
1 parent 58c61af commit 7ad22c2

28 files changed

+413
-430
lines changed

build/src/docs.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@ If you want consistent results, you can set your own seed:
9999
```js
100100
faker.seed(123);
101101

102-
var firstRandom = faker.random.number();
102+
var firstRandom = faker.datatype.number();
103103

104104
// Setting the seed again resets the sequence.
105105
faker.seed(123);
106106

107-
var secondRandom = faker.random.number();
107+
var secondRandom = faker.datatype.number();
108108

109109
console.log(firstRandom === secondRandom);
110110
```

examples/node/generateMultiLevelMultiLocaleJSON.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
var faker = require('../../index');
66
var fs = require('fs');
77
// produce array with random number of empty elements
8-
const arr = (maxNumberOfElements) => new Array(faker.random.number({min: 1, max: maxNumberOfElements})).fill()
8+
const arr = (maxNumberOfElements) => new Array(faker.datatype.number({min: 1, max: maxNumberOfElements})).fill()
99

1010
const locales = ["nl","es","de","fr","en_AU"]
1111
const company =
@@ -18,7 +18,7 @@ const company =
1818
return { "name" : faker.fake("{{name.firstName}} {{name.lastName}}")
1919
, "job" : faker.name.jobTitle()
2020
, "hiredate" : faker.date.past(12).toISOString().split('T')[0]
21-
, "salary" : faker.random.number(700, 9000)
21+
, "salary" : faker.datatype.number(700, 9000)
2222
}
2323
})
2424
}

lib/address.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function Address (faker) {
3939
this.zipCodeByState = function (state) {
4040
var zipRange = faker.definitions.address.postcode_by_state[state];
4141
if (zipRange) {
42-
return faker.random.number(zipRange);
42+
return faker.datatype.number(zipRange);
4343
}
4444
return faker.address.zipCode();
4545
}
@@ -73,7 +73,7 @@ function Address (faker) {
7373
}
7474

7575
if (typeof format !== "number") {
76-
format = faker.random.number(formats.length - 1);
76+
format = faker.datatype.number(formats.length - 1);
7777
}
7878

7979
return f(formats[format]);
@@ -118,7 +118,7 @@ function Address (faker) {
118118
suffix = " " + suffix
119119
}
120120

121-
switch (faker.random.number(1)) {
121+
switch (faker.datatype.number(1)) {
122122
case 0:
123123
result = faker.name.lastName() + suffix;
124124
break;
@@ -141,7 +141,7 @@ function Address (faker) {
141141
this.streetAddress = function (useFullAddress) {
142142
if (useFullAddress === undefined) { useFullAddress = false; }
143143
var address = "";
144-
switch (faker.random.number(2)) {
144+
switch (faker.datatype.number(2)) {
145145
case 0:
146146
address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.address.streetName();
147147
break;
@@ -257,7 +257,7 @@ function Address (faker) {
257257
min = min || -90
258258
precision = precision || 4
259259

260-
return faker.random.number({
260+
return faker.datatype.number({
261261
max: max,
262262
min: min,
263263
precision: parseFloat((0.0).toPrecision(precision) + '1')
@@ -277,7 +277,7 @@ function Address (faker) {
277277
min = min || -180
278278
precision = precision || 4
279279

280-
return faker.random.number({
280+
return faker.datatype.number({
281281
max: max,
282282
min: min,
283283
precision: parseFloat((0.0).toPrecision(precision) + '1')

lib/commerce.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var Commerce = function (faker) {
5555
return symbol + 0.00;
5656
}
5757

58-
var randValue = faker.random.number({ max: max, min: min });
58+
var randValue = faker.datatype.number({ max: max, min: min });
5959

6060
return symbol + (Math.round(randValue * Math.pow(10, dec)) / Math.pow(10, dec)).toFixed(dec);
6161
};

lib/company.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var Company = function (faker) {
3232
];
3333

3434
if (typeof format !== "number") {
35-
format = faker.random.number(formats.length - 1);
35+
format = faker.datatype.number(formats.length - 1);
3636
}
3737

3838
return f(formats[format]);

lib/datatype.js

+17-61
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
11
var mersenne = require('../vendor/mersenne');
22

3-
/**
4-
* Method to reduce array of characters
5-
* @param arr existing array of characters
6-
* @param values array of characters which should be removed
7-
* @return {*} new array without banned characters
8-
*/
9-
var arrayRemove = function (arr, values) {
10-
values.forEach(function(value){
11-
arr = arr.filter(function(ele){
12-
return ele !== value;
13-
});
14-
});
15-
return arr;
16-
};
17-
183
/**
194
*
20-
* @namespace faker.dataType
5+
* @namespace faker.datatype
216
*/
22-
function DataType (faker, seed) {
7+
function Datatype (faker, seed) {
238
// Use a user provided seed if it is an array or number
249
if (Array.isArray(seed) && seed.length) {
2510
mersenne.seed_array(seed);
@@ -31,7 +16,7 @@ function DataType (faker, seed) {
3116
/**
3217
* returns a single random number based on a max number or range
3318
*
34-
* @method faker.random.number
19+
* @method faker.datatype.number
3520
* @param {mixed} options {min, max, precision}
3621
*/
3722
this.number = function (options) {
@@ -73,7 +58,7 @@ function DataType (faker, seed) {
7358
/**
7459
* returns a single random floating-point number based on a max number or range
7560
*
76-
* @method faker.random.float
61+
* @method faker.datatype.float
7762
* @param {mixed} options
7863
*/
7964
this.float = function (options) {
@@ -90,58 +75,29 @@ function DataType (faker, seed) {
9075
if (typeof opts.precision === 'undefined') {
9176
opts.precision = 0.01;
9277
}
93-
return faker.random.number(opts);
94-
};
95-
96-
/**
97-
* takes an array and returns a random element of the array
98-
*
99-
* @method faker.random.arrayElement
100-
* @param {array} array
101-
*/
102-
this.arrayElement = function (array) {
103-
array = array || ["a", "b", "c"];
104-
var r = faker.random.number({ max: array.length - 1 });
105-
return array[r];
78+
return faker.datatype.number(opts);
10679
};
10780

10881
/**
109-
* takes an array and returns a subset with random elements of the array
82+
* Similar to description of Date by MDN,
83+
* this method uses a random number of milliseconds since 1. Jan 1970 UTC to return a Date object
11084
*
111-
* @method faker.random.arrayElements
112-
* @param {array} array
113-
* @param {number} count number of elements to pick
85+
* @method faker.datatype.date
11486
*/
115-
this.arrayElements = function (array, count) {
116-
array = array || ["a", "b", "c"];
117-
118-
if (typeof count !== 'number') {
119-
count = faker.random.number({ min: 1, max: array.length });
120-
} else if (count > array.length) {
121-
count = array.length;
122-
} else if (count < 0) {
123-
count = 0;
124-
}
125-
126-
var arrayCopy = array.slice();
127-
var countToRemove = arrayCopy.length - count;
128-
for (var i = 0; i < countToRemove; i++) {
129-
var indexToRemove = faker.random.number({ max: arrayCopy.length - 1 });
130-
arrayCopy.splice(indexToRemove, 1);
131-
}
132-
133-
return arrayCopy;
87+
this.date = function () {
88+
var random = faker.datatype.number({ min: 0, max: 8600000000000000 });
89+
return new Date(random);
13490
};
13591

13692
/**
13793
* uuid
13894
*
139-
* @method faker.random.uuid
95+
* @method faker.datatype.uuid
14096
*/
14197
this.uuid = function () {
14298
var RFC4122_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
14399
var replacePlaceholders = function (placeholder) {
144-
var random = faker.random.number({ min: 0, max: 15 });
100+
var random = faker.datatype.number({ min: 0, max: 15 });
145101
var value = placeholder == 'x' ? random : (random &0x3 | 0x8);
146102
return value.toString(16);
147103
};
@@ -151,17 +107,17 @@ function DataType (faker, seed) {
151107
/**
152108
* boolean
153109
*
154-
* @method faker.random.boolean
110+
* @method faker.datatype.boolean
155111
*/
156112
this.boolean = function () {
157-
return !!faker.random.number(1)
113+
return !!faker.datatype.number(1)
158114
};
159115

160116

161117
/**
162118
* hexaDecimal
163119
*
164-
* @method faker.random.hexaDecimal
120+
* @method faker.datatype.hexaDecimal
165121
* @param {number} count defaults to 1
166122
*/
167123
this.hexaDecimal = function hexaDecimal(count) {
@@ -181,4 +137,4 @@ function DataType (faker, seed) {
181137

182138
}
183139

184-
module['exports'] = DataType;
140+
module['exports'] = Datatype;

lib/date.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var _Date = function (faker) {
2323
};
2424

2525
var past = date.getTime();
26-
past -= faker.random.number(range); // some time from now to N years ago, in milliseconds
26+
past -= faker.datatype.number(range); // some time from now to N years ago, in milliseconds
2727
date.setTime(past);
2828

2929
return date;
@@ -48,7 +48,7 @@ var _Date = function (faker) {
4848
};
4949

5050
var future = date.getTime();
51-
future += faker.random.number(range); // some time from now to N years later, in milliseconds
51+
future += faker.datatype.number(range); // some time from now to N years later, in milliseconds
5252
date.setTime(future);
5353

5454
return date;
@@ -63,7 +63,7 @@ var _Date = function (faker) {
6363
*/
6464
self.between = function (from, to) {
6565
var fromMilli = Date.parse(from);
66-
var dateOffset = faker.random.number(Date.parse(to) - fromMilli);
66+
var dateOffset = faker.datatype.number(Date.parse(to) - fromMilli);
6767

6868
var newDate = new Date(fromMilli + dateOffset);
6969

@@ -111,7 +111,7 @@ var _Date = function (faker) {
111111
};
112112

113113
var future = date.getTime();
114-
future -= faker.random.number(range); // some time from now to N days ago, in milliseconds
114+
future -= faker.datatype.number(range); // some time from now to N days ago, in milliseconds
115115
date.setTime(future);
116116

117117
return date;
@@ -136,7 +136,7 @@ var _Date = function (faker) {
136136
};
137137

138138
var future = date.getTime();
139-
future += faker.random.number(range); // some time from now to N days later, in milliseconds
139+
future += faker.datatype.number(range); // some time from now to N days later, in milliseconds
140140
date.setTime(future);
141141

142142
return date;

lib/finance.js

+11-12
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ var Finance = function (faker) {
109109
max = max || 1000;
110110
dec = dec === undefined ? 2 : dec;
111111
symbol = symbol || '';
112-
const randValue = faker.random.number({ max: max, min: min, precision: Math.pow(10, -dec) });
112+
const randValue = faker.datatype.number({ max: max, min: min, precision: Math.pow(10, -dec) });
113113

114114
let formattedString;
115115
if(autoFormat) {
@@ -169,7 +169,7 @@ var Finance = function (faker) {
169169
* @method faker.finance.bitcoinAddress
170170
*/
171171
self.bitcoinAddress = function () {
172-
var addressLength = faker.random.number({ min: 25, max: 34 });
172+
var addressLength = faker.datatype.number({ min: 25, max: 34 });
173173

174174
var address = faker.random.arrayElement(['1', '3']);
175175

@@ -185,7 +185,7 @@ var Finance = function (faker) {
185185
* @method faker.finance.litecoinAddress
186186
*/
187187
self.litecoinAddress = function () {
188-
var addressLength = faker.random.number({ min: 26, max: 33 });
188+
var addressLength = faker.datatype.number({ min: 26, max: 33 });
189189

190190
var address = faker.random.arrayElement(['L', 'M', '3']);
191191

@@ -236,7 +236,7 @@ self.litecoinAddress = function () {
236236
self.creditCardCVV = function() {
237237
var cvv = "";
238238
for (var i = 0; i < 3; i++) {
239-
cvv += faker.random.number({max:9}).toString();
239+
cvv += faker.datatype.number({max:9}).toString();
240240
}
241241
return cvv;
242242
};
@@ -247,8 +247,7 @@ self.litecoinAddress = function () {
247247
* @method faker.finance.ethereumAddress
248248
*/
249249
self.ethereumAddress = function () {
250-
var address = faker.random.hexaDecimal(40).toLowerCase();
251-
250+
var address = faker.datatype.hexaDecimal(40).toLowerCase();
252251
return address;
253252
};
254253

@@ -284,22 +283,22 @@ self.litecoinAddress = function () {
284283
if (bban.type == "a") {
285284
s += faker.random.arrayElement(ibanLib.alpha);
286285
} else if (bban.type == "c") {
287-
if (faker.random.number(100) < 80) {
288-
s += faker.random.number(9);
286+
if (faker.datatype.number(100) < 80) {
287+
s += faker.datatype.number(9);
289288
} else {
290289
s += faker.random.arrayElement(ibanLib.alpha);
291290
}
292291
} else {
293-
if (c >= 3 && faker.random.number(100) < 30) {
294-
if (faker.random.boolean()) {
292+
if (c >= 3 && faker.datatype.number(100) < 30) {
293+
if (faker.datatype.boolean()) {
295294
s += faker.random.arrayElement(ibanLib.pattern100);
296295
c -= 2;
297296
} else {
298297
s += faker.random.arrayElement(ibanLib.pattern10);
299298
c--;
300299
}
301300
} else {
302-
s += faker.random.number(9);
301+
s += faker.datatype.number(9);
303302
}
304303
}
305304
c--;
@@ -321,7 +320,7 @@ self.litecoinAddress = function () {
321320
*/
322321
self.bic = function () {
323322
var vowels = ["A", "E", "I", "O", "U"];
324-
var prob = faker.random.number(100);
323+
var prob = faker.datatype.number(100);
325324
return Helpers.replaceSymbols("???") +
326325
faker.random.arrayElement(vowels) +
327326
faker.random.arrayElement(ibanLib.iso3166) +

lib/git.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ var Git = function(faker) {
3030

3131
var entry = 'commit {{git.commitSha}}\r\n';
3232

33-
if (options.merge || (faker.random.number({ min: 0, max: 4 }) === 0)) {
33+
if (options.merge || (faker.datatype.number({ min: 0, max: 4 }) === 0)) {
3434
entry += 'Merge: {{git.shortSha}} {{git.shortSha}}\r\n';
3535
}
3636

0 commit comments

Comments
 (0)