aboutsummaryrefslogtreecommitdiff
path: root/test/random.unit.js
diff options
context:
space:
mode:
authorJimmy Cann <[email protected]>2017-08-26 09:47:24 +1000
committerMarak <[email protected]>2018-09-21 09:46:16 -0400
commit56aa8121f254482ae2f200605402c9d4eb917abe (patch)
treeb2ba5f1d47ac31203d11c2181a5c7dd6d0856902 /test/random.unit.js
parent3a4bb358614c1e1f5d73f4df45c13a1a7aa013d7 (diff)
downloadfaker-56aa8121f254482ae2f200605402c9d4eb917abe.tar.xz
faker-56aa8121f254482ae2f200605402c9d4eb917abe.zip
[api] Add method `faker.random.float`
- Extends the `faker.random.number` float to automatically return a 0.01 precision float - First parameter is set as the precision value
Diffstat (limited to 'test/random.unit.js')
-rw-r--r--test/random.unit.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/random.unit.js b/test/random.unit.js
index 14691296..f566a7ec 100644
--- a/test/random.unit.js
+++ b/test/random.unit.js
@@ -85,6 +85,83 @@ describe("random.js", function () {
})
});
+ describe("float", function() {
+
+ it("returns a random float with a default precision value (0.01)", function() {
+ var number = faker.random.float();
+ assert.equal(number, Number(number.toFixed(2)));
+ });
+
+ it("returns a random float given a precision value", function() {
+ var number = faker.random.float(0.001);
+ assert.equal(number, Number(number.toFixed(3)));
+ });
+
+ it("returns a random number given a maximum value as Object", function() {
+ var options = { max: 10 };
+ assert.ok(faker.random.float(options) <= options.max);
+ });
+
+ it("returns a random number given a maximum value of 0", function() {
+ var options = { max: 0 };
+ assert.ok(faker.random.float(options) === 0);
+ });
+
+ it("returns a random number given a negative number minimum and maximum value of 0", function() {
+ var options = { min: -100, max: 0 };
+ assert.ok(faker.random.float(options) <= options.max);
+ });
+
+ it("returns a random number between a range", function() {
+ var options = { min: 22, max: 33 };
+ for(var i = 0; i < 5; i++) {
+ var randomNumber = faker.random.float(options);
+ assert.ok(randomNumber >= options.min);
+ assert.ok(randomNumber <= options.max);
+ }
+ });
+
+ it("provides numbers with a given precision", function() {
+ var options = { min: 0, max: 1.5, precision: 0.5 };
+ var results = _.chain(_.range(50))
+ .map(function() {
+ return faker.random.float(options);
+ })
+ .uniq()
+ .value()
+ .sort();
+
+ assert.ok(_.includes(results, 0.5));
+ assert.ok(_.includes(results, 1.0));
+
+ assert.equal(results[0], 0);
+ assert.equal(_.last(results), 1.5);
+
+ });
+
+ it("provides numbers with a with exact precision", function() {
+ var options = { min: 0.5, max: 0.99, precision: 0.01 };
+ for(var i = 0; i < 100; i++) {
+ var number = faker.random.float(options);
+ assert.equal(number, Number(number.toFixed(2)));
+ }
+ });
+
+ it("should not modify the input object", function() {
+ var min = 1;
+ var max = 2;
+ var opts = {
+ min: min,
+ max: max
+ };
+
+ faker.random.float(opts);
+
+ assert.equal(opts.min, min);
+ assert.equal(opts.max, max);
+ });
+ });
+
describe('arrayElement', function() {
it('returns a random element in the array', function() {
var testArray = ['hello', 'to', 'you', 'my', 'friend'];