Ensure _.initial and _.last work with NaN values for n.

This commit is contained in:
John-David Dalton
2014-04-02 00:23:31 -07:00
parent 3225f17f5a
commit 7f9a2a2d34
2 changed files with 19 additions and 19 deletions

View File

@@ -2746,7 +2746,7 @@
} else { } else {
n = (predicate == null || thisArg) ? 1 : predicate; n = (predicate == null || thisArg) ? 1 : predicate;
} }
n = length - n; n = length - (n || 0);
return slice(array, 0, n < 0 ? 0 : n); return slice(array, 0, n < 0 ? 0 : n);
} }
@@ -2840,8 +2840,8 @@
return array ? array[length - 1] : undefined; return array ? array[length - 1] : undefined;
} }
} }
n = length - n; n = length - (n || 0);
return slice(array, n < 0 ? 0 : n); return slice(array, n < 0 ? 0 : n);
} }
/** /**

View File

@@ -2577,14 +2577,14 @@
deepEqual(_.first(array, 2), [1, 2]); deepEqual(_.first(array, 2), [1, 2]);
}); });
test('should return an empty array when `n` < `1`', 3, function() { test('should return an empty array when `n` < `1`', 4, function() {
_.forEach([0, -1, -2], function(n) { _.forEach([0, -1, NaN, -Infinity], function(n) {
deepEqual(_.first(array, n), []); deepEqual(_.first(array, n), []);
}); });
}); });
test('should return all elements when `n` >= `array.length`', 2, function() { test('should return all elements when `n` >= `array.length`', 4, function() {
_.forEach([3, 4], function(n) { _.forEach([3, 4, Math.pow(2, 32), Infinity], function(n) {
deepEqual(_.first(array, n), array); deepEqual(_.first(array, n), array);
}); });
}); });
@@ -3644,14 +3644,14 @@
deepEqual(_.initial([]), []); deepEqual(_.initial([]), []);
}); });
test('should return all elements when `n` < `1`', 3, function() { test('should return all elements when `n` < `1`', 4, function() {
_.forEach([0, -1, -2], function(n) { _.forEach([0, -1, NaN, -Infinity], function(n) {
deepEqual(_.initial(array, n), array); deepEqual(_.initial(array, n), array);
}); });
}); });
test('should return an empty array when `n` >= `array.length`', 2, function() { test('should return an empty array when `n` >= `array.length`', 4, function() {
_.forEach([3, 4], function(n) { _.forEach([3, 4, Math.pow(2, 32), Infinity], function(n) {
deepEqual(_.initial(array, n), []); deepEqual(_.initial(array, n), []);
}); });
}); });
@@ -5315,14 +5315,14 @@
deepEqual(_.last(array, 2), [2, 3]); deepEqual(_.last(array, 2), [2, 3]);
}); });
test('should return an empty array when `n` < `1`', 3, function() { test('should return an empty array when `n` < `1`', 4, function() {
_.forEach([0, -1, -2], function(n) { _.forEach([0, -1, NaN, -Infinity], function(n) {
deepEqual(_.last(array, n), []); deepEqual(_.last(array, n), []);
}); });
}); });
test('should return all elements when `n` >= `array.length`', 2, function() { test('should return all elements when `n` >= `array.length`', 4, function() {
_.forEach([3, 4], function(n) { _.forEach([3, 4, Math.pow(2, 32), Infinity], function(n) {
deepEqual(_.last(array, n), array); deepEqual(_.last(array, n), array);
}); });
}); });
@@ -7362,14 +7362,14 @@
deepEqual(_.rest(array, 2), [3]); deepEqual(_.rest(array, 2), [3]);
}); });
test('should return all elements when `n` < `1`', 3, function() { test('should return all elements when `n` < `1`', 4, function() {
_.forEach([0, -1, -2], function(n) { _.forEach([0, -1, NaN, -Infinity], function(n) {
deepEqual(_.rest(array, n), [1, 2, 3]); deepEqual(_.rest(array, n), [1, 2, 3]);
}); });
}); });
test('should return an empty array when `n` >= `array.length`', 2, function() { test('should return an empty array when `n` >= `array.length`', 4, function() {
_.forEach([3, 4], function(n) { _.forEach([3, 4, Math.pow(2, 32), Infinity], function(n) {
deepEqual(_.rest(array, n), []); deepEqual(_.rest(array, n), []);
}); });
}); });