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'); 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 () {