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

View File

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