From 03c4750379a745c7dcd6573bc775fca8934b6804 Mon Sep 17 00:00:00 2001 From: happybridge14 Date: Fri, 19 Jun 2015 15:18:29 +0800 Subject: [PATCH 1/2] Update Array some/every return value according to es5 --- array.js | 2 +- lib/_array.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/array.js b/array.js index 578f72e..eb15d3c 100644 --- a/array.js +++ b/array.js @@ -84,7 +84,7 @@ define(function (require) { if (!has('array-some')) { proto.some = function some (lambda) { // arguments[+1] is to fool google closure compiler into NOT adding a function argument! - return array.iterate(this, lambda, function (val) { return !val; }, arguments[+1]); + return !array.iterate(this, lambda, function (val) { return !val; }, arguments[+1]); }; } diff --git a/lib/_array.js b/lib/_array.js index fa093d0..34adcb0 100644 --- a/lib/_array.js +++ b/lib/_array.js @@ -46,7 +46,7 @@ define(function (require) { throw new TypeError(lambda + ' is not a function'); } if (start == end) { - return false; + return true; } if ((start <= end) ^ (inc > 0)) { throw new TypeError('Invalid length or starting index'); From c47d55e69e9b51498a33bbe367611cf4c1d6d6a4 Mon Sep 17 00:00:00 2001 From: happybridge14 Date: Fri, 19 Jun 2015 15:46:03 +0800 Subject: [PATCH 2/2] Add array some/every test case --- test/array.html | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/array.html b/test/array.html index a7a5a14..ce87978 100644 --- a/test/array.html +++ b/test/array.html @@ -90,6 +90,43 @@ return typeof [][m] == 'function'; }); } + + // test some/every + // some/every helper + function isGreaterThanFive(a) { + return a > 5; + } + tester.assertEquals('some handles empty array', function() { + return [].some(isGreaterThanFive); + }, false); + + tester.assertEquals('some hits nothing', function() { + return [1, 2, 3].some(isGreaterThanFive); + }, false); + + tester.assertEquals('some hits some items', function() { + return [1, 2, 7].some(isGreaterThanFive); + }, true); + + tester.assertEquals('some hits all items', function() { + return [6, 7, 8].some(isGreaterThanFive); + }, true); + + tester.assertEquals('every handles empty array', function() { + return [].every(isGreaterThanFive); + }, true); + + tester.assertEquals('every hits nothing', function() { + return [1, 2, 3].every(isGreaterThanFive); + }, false); + + tester.assertEquals('every hits some items', function() { + return [1, 2, 7].every(isGreaterThanFive); + }, false); + + tester.assertEquals('every hits all items', function() { + return [6, 7, 8].every(isGreaterThanFive); + }, true); // test forEach tester.assertTrue('forEach hits all items', function () {