Add test for customizer results of NaN.

This commit is contained in:
John-David Dalton
2014-12-27 23:09:56 -06:00
parent 46341fea96
commit 3f8dd7e658
2 changed files with 7 additions and 5 deletions

View File

@@ -1695,7 +1695,8 @@
var value = object[key],
result = customizer(value, source[key], key, object, source);
if (result !== value || (typeof value == 'undefined' && !(key in object))) {
if ((result === result ? result !== value : value === value) ||
(typeof value == 'undefined' && !(key in object))) {
object[key] = result;
}
} else {
@@ -2496,7 +2497,8 @@
if (isCommon) {
result = srcValue;
}
if ((isSrcArr || typeof result != 'undefined') && (isCommon || result !== value)) {
if ((isSrcArr || typeof result != 'undefined') &&
(isCommon || (result === result ? result !== value : value === value))) {
object[key] = result;
}
return;
@@ -2528,7 +2530,7 @@
// Recursively merge objects and arrays (susceptible to call stack limits).
if (isCommon) {
object[key] = baseMerge(result, srcValue, customizer, stackA, stackB);
} else if (result !== value) {
} else if (result === result ? result !== value : value === value) {
object[key] = result;
}
});

View File

@@ -4796,8 +4796,8 @@
deepEqual(actual, { 'a': 1, 'b': 2, 'c': 3 });
});
test('`_.' + methodName + '` should not assign the `customizer` result if it is the same as the destination value', 3, function() {
_.each(['a', ['a'], { 'a': 1 }], function(value) {
test('`_.' + methodName + '` should not assign the `customizer` result if it is the same as the destination value', 4, function() {
_.each(['a', ['a'], { 'a': 1 }, NaN], function(value) {
if (defineProperty) {
var object = {},
pass = true;