From 66a8a5cfd513c58aa504c110f3bcd05626dc018b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=BChl?= Date: Sat, 20 Oct 2018 13:48:51 +0200 Subject: [PATCH] add assertions isDivisibleByFive and containsFive --- README.md | 6 ++++++ five.js | 15 +++++++++++++++ test.js | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/README.md b/README.md index addc66f6..f0a6a178 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,12 @@ five.base(3); // 12 ##### Assertion ```javascript five.isFive(10); // false +five.isDivisibleByFive(8); // false +five.isDivisibleByFive(15); // true +five.containsFive(154); // true +five.containsFive('this string contains 5, or not?'); // true +five.containsFive([ 2, 5, 17 ]); // true +five.containsFive([ 8, 14, 53 ]); // true ``` ##### Filter, Map and Reduce diff --git a/five.js b/five.js index 90507e66..add1e5f7 100755 --- a/five.js +++ b/five.js @@ -135,6 +135,21 @@ five.high = function() { return "o/"; }; five.isFive = function(a) { return a === five(); }; + + five.isDivisibleByFive = function(number) { + if (typeof number !== 'number') return false; + return number % five() === 0; + }; + + five.containsFive = function(candidate) { + if (!candidate) return false; + + if (Object.prototype.toString.call(candidate) === '[object Array]') { + candidate = candidate.map(function(item) { return item.toString();}).join(' '); + } + + return candidate.toString().indexOf('5') !== -1; + } five.map = function(array) { return array.map(five); }; five.filter = function(array) { return array.filter(five.isFive); }; diff --git a/test.js b/test.js index 63ee6cc8..f201e639 100755 --- a/test.js +++ b/test.js @@ -132,6 +132,22 @@ assert.equal(five.funk(), '5 bad boys with the power to rock you', 'A funked fiv assert.equal(true, five.isFive(five())); assert.equal(false, five.isFive(10)); +assert.equal(false, five.isDivisibleByFive('foo')); +assert.equal(true, five.isDivisibleByFive(five())); +assert.equal(true, five.isDivisibleByFive(10)); +assert.equal(false, five.isDivisibleByFive(42)); + +assert.equal(true, five.containsFive(153)); +assert.equal(true, five.containsFive('this string contains number 5, for sure!')); +assert.equal(true, five.containsFive([1, 6, 15, 3])); +assert.equal(false, five.containsFive()); +assert.equal(false, five.containsFive(null)); +assert.equal(false, five.containsFive('')); +assert.equal(false, five.containsFive(false)); +assert.equal(false, five.containsFive(143)); +assert.equal(false, five.containsFive('this string does not contain...')); +assert.equal(false, five.containsFive([1, 6, 8, 3])); + assert.equal(JSON.stringify([5, 5]), JSON.stringify(five.filter([5, true, 5]))); assert.equal(JSON.stringify([5, 5, 5]), JSON.stringify(five.map([1, 2, 3]))); assert.equal(5, five.reduce([1, 2, 3]));