Ensure _.toString produces the correct result for Object(-0).

This commit is contained in:
John-David Dalton
2015-10-28 07:29:20 -07:00
parent cd371ac66f
commit bc2adb208c
2 changed files with 11 additions and 8 deletions

View File

@@ -9760,15 +9760,12 @@
* @returns {string} Returns the string. * @returns {string} Returns the string.
*/ */
function toString(value) { function toString(value) {
// Preserve sign of `0`.
if (value === 0) {
return (1 / value) == INFINITY ? '0' : '-0';
}
// Exit early for strings to avoid a performance hit in some environments. // Exit early for strings to avoid a performance hit in some environments.
if (typeof value == 'string') { if (typeof value == 'string') {
return value; return value;
} }
return value == null ? '' : (value + ''); var result = value == null ? '' : (value + '');
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
} }
/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/

View File

@@ -19440,10 +19440,16 @@
}); });
QUnit.test('should preserve sign of `0`', function(assert) { QUnit.test('should preserve sign of `0`', function(assert) {
assert.expect(2); assert.expect(1);
assert.strictEqual(_.toString(0), '0'); var values = [0, Object(0), -0, Object(-0)],
assert.strictEqual(_.toString(-0), '-0'); expected = ['0', '0', '-0', '-0'];
var actual = lodashStable.map(values, function(value) {
return _.toString(value);
});
assert.deepEqual(actual, expected);
}); });
QUnit.test('should return the `toString` result of the wrapped value', function(assert) { QUnit.test('should return the `toString` result of the wrapped value', function(assert) {