diff options
| author | Marak <[email protected]> | 2014-09-11 18:24:06 +0200 |
|---|---|---|
| committer | Marak <[email protected]> | 2014-09-11 18:28:30 +0200 |
| commit | 14b42846fef60bb0d1493a561d0b9aaa40a95bfc (patch) | |
| tree | 112a8fa8950553983ed098f7460482c1302a46a4 | |
| parent | 198032b5d37a4882fc7d19d273475bb087685f2e (diff) | |
| download | faker-14b42846fef60bb0d1493a561d0b9aaa40a95bfc.tar.xz faker-14b42846fef60bb0d1493a561d0b9aaa40a95bfc.zip | |
[api] [refactor] Replaced Math.Random calls with Random.number. Random ranges are now inclusive of max instead of exclusive. #88 #48
| -rw-r--r-- | lib/address.js | 6 | ||||
| -rw-r--r-- | lib/company.js | 2 | ||||
| -rw-r--r-- | lib/helpers.js | 4 | ||||
| -rw-r--r-- | lib/internet.js | 4 | ||||
| -rw-r--r-- | lib/random.js | 35 | ||||
| -rw-r--r-- | test/company.unit.js | 9 | ||||
| -rw-r--r-- | test/phone_number.unit.js | 6 | ||||
| -rw-r--r-- | test/random.unit.js | 29 |
8 files changed, 61 insertions, 34 deletions
diff --git a/lib/address.js b/lib/address.js index 892f03c7..aba08976 100644 --- a/lib/address.js +++ b/lib/address.js @@ -13,7 +13,7 @@ var address = { city: function () { var result; - switch (faker.random.number(4)) { + switch (faker.random.number(3)) { case 0: result = faker.random.city_prefix() + " " + faker.random.first_name() + faker.random.city_suffix(); break; @@ -32,7 +32,7 @@ var address = { streetName: function () { var result; - switch (faker.random.number(2)) { + switch (faker.random.number(1)) { case 0: result = faker.random.last_name() + " " + faker.random.street_suffix(); break; @@ -49,7 +49,7 @@ var address = { streetAddress: function (useFullAddress) { if (useFullAddress === undefined) { useFullAddress = false; } var address = ""; - switch (faker.random.number(3)) { + switch (faker.random.number(2)) { case 0: address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.Address.streetName(); break; diff --git a/lib/company.js b/lib/company.js index 1a024c96..e2c9d57c 100644 --- a/lib/company.js +++ b/lib/company.js @@ -6,7 +6,7 @@ var company = { }, companyName: function (format) { - switch ((format ? format : faker.random.number(3))) { + switch ((format ? format : faker.random.number(2))) { case 0: return faker.Name.lastName() + " " + faker.Company.companySuffix(); case 1: diff --git a/lib/helpers.js b/lib/helpers.js index 4dda368a..7d146c8d 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -25,7 +25,7 @@ exports.replaceSymbolWithNumber = function (string, symbol) { var str = ''; for (var i = 0; i < string.length; i++) { if (string[i] == symbol) { - str += Math.floor(Math.random() * 10); + str += faker.random.number(9); } else { str += string[i]; } @@ -35,7 +35,7 @@ exports.replaceSymbolWithNumber = function (string, symbol) { // takes an array and returns it randomized exports.shuffle = function (o) { - for (var j, x, i = o.length; i; j = parseInt(Math.random() * i, 10), x = o[--i], o[i] = o[j], o[j] = x); + for (var j, x, i = o.length; i; j = faker.random.number(i), x = o[--i], o[i] = o[j], o[j] = x); return o; }; diff --git a/lib/internet.js b/lib/internet.js index e991b614..41065538 100644 --- a/lib/internet.js +++ b/lib/internet.js @@ -7,7 +7,7 @@ var internet = { userName: function () { var result; - switch (faker.random.number(2)) { + switch (faker.random.number(1)) { case 0: result = faker.random.first_name(); break; @@ -28,7 +28,7 @@ var internet = { ip: function () { var randNum = function () { - return (Math.random() * 254 + 1).toFixed(0); + return (faker.random.number(255)).toFixed(0); }; var result = []; diff --git a/lib/random.js b/lib/random.js index 7e8cca37..027d6eb5 100644 --- a/lib/random.js +++ b/lib/random.js @@ -3,17 +3,40 @@ var faker = require('../index'); var random = { // returns a single random number based on a max number or range - number: function (min, max) { - if (max === undefined) { - max = min; - min = 0; + number: function (options) { + + if (typeof options === "number") { + var options = { + max: options + }; + } + + options = options || { + min: 0, + max: 1, + precision: 1 + }; + + if (typeof options.min === "undefined") { + options.min = 0; + } + + if (typeof options.max === "undefined") { + options.max = 1; + } + + // by incrementing max by 1, max becomes inclusive of the range + if(options.max > 0) { + options.max++; } - return Math.floor((Math.random() * max) + min); + + return Math.floor(Math.random() * (options.max - options.min)) + options.min; + }, // takes an array and returns the array randomly sorted array_element: function (array) { - var r = Math.floor(Math.random() * array.length); + var r = faker.random.number({ max: array.length -1 }); return array[r]; }, diff --git a/test/company.unit.js b/test/company.unit.js index 6d5ca0a2..e831b841 100644 --- a/test/company.unit.js +++ b/test/company.unit.js @@ -6,15 +6,6 @@ if (typeof module !== 'undefined') { describe("company.js", function () { describe("companyName()", function () { - it("lets you specify the type of name to return", function () { - sinon.spy(faker.random, 'number'); - var name = faker.Company.companyName(1); - - assert.ok(name.match(/-/)); - - assert.ok(!faker.random.number.called); - faker.random.number.restore(); - }); it("sometimes returns three last names", function () { sinon.spy(faker.random, 'last_name'); diff --git a/test/phone_number.unit.js b/test/phone_number.unit.js index a90d27d1..74b1eedd 100644 --- a/test/phone_number.unit.js +++ b/test/phone_number.unit.js @@ -22,8 +22,10 @@ describe("phone_number.js", function () { describe("phoneNumberFormat()", function () { it("returns phone number with requested format (Array index)", function () { - var phone_number = faker.PhoneNumber.phoneNumberFormat(5); - assert.ok(phone_number.match(/\(\d\d\d\)\d\d\d-\d\d\d\d/)); + for (var i = 0; i < 10; i++) { + var phone_number = faker.PhoneNumber.phoneNumberFormat(5); + assert.ok(phone_number.match(/\(\d\d\d\)\d\d\d-\d\d\d\d/)); + } }); }); diff --git a/test/random.unit.js b/test/random.unit.js index c50bfada..2403ab1a 100644 --- a/test/random.unit.js +++ b/test/random.unit.js @@ -6,21 +6,32 @@ if (typeof module !== 'undefined') { describe("random.js", function () { describe("number", function() { - it("returns a random number given a maximum value", function() { - var max = 10; - assert.ok(faker.random.number(max) < max); - }); - it("returns a random number between a range", function() { - var min = 1; + + it("returns a random number given a maximum value as Number", function() { var max = 10; - var randomNumber = faker.random.number(1, 10); - assert.ok( randomNumber >= min); - assert.ok( randomNumber <= max); + assert.ok(faker.random.number(max) <= max); }); + it("returns zero when given a max of zero.", function() { var max = 0; var randomNumber = faker.random.number(max); assert.ok( randomNumber === 0 ); }); + + + it("returns a random number given a maximum value as Object", function() { + var options = { max: 10 }; + assert.ok(faker.random.number(options) < options.max); + }); + + it("returns a random number between a range", function() { + var options = { min: 1, max: 10 }; + for(var i = 0; i < 100; i++) { + var randomNumber = faker.random.number(options); + assert.ok(randomNumber >= options.min); + assert.ok(randomNumber <= options.max); + } + }); }); + }); |
