From 495c890aacb2fa856b7a3bf39cca2ddbcabb77e9 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 9 Feb 2016 00:29:26 -0800 Subject: [PATCH] Add bizarro test for `_.isBuffer`. --- test/index.html | 16 ++++++++-------- test/test.js | 31 ++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/test/index.html b/test/index.html index 26ad54d9f..8de250eb1 100644 --- a/test/index.html +++ b/test/index.html @@ -82,6 +82,12 @@ funcProto._method = noop; // Set bad shims. + setProperty(Object, '_create', Object.create); + setProperty(Object, 'create', noop); + + setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols); + setProperty(Object, 'getOwnPropertySymbols', undefined); + setProperty(objectProto, '_propertyIsEnumerable', propertyIsEnumerable); setProperty(objectProto, 'propertyIsEnumerable', function(key) { return !(key == 'valueOf' && this && this.valueOf === 1) && _propertyIsEnumerable.call(this, key); @@ -103,12 +109,6 @@ setProperty(Map, 'toString', createToString('Map')); } - setProperty(Object, '_create', Object.create); - setProperty(Object, 'create', noop); - - setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols); - setProperty(Object, 'getOwnPropertySymbols', undefined); - setProperty(window, '_Set', window.Set); setProperty(window, 'Set', noop); @@ -131,6 +131,8 @@ var funcProto = Function.prototype, objectProto = Object.prototype; + setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable); + if (Object._create) { Object.create = Object._create; } else { @@ -159,8 +161,6 @@ } else { setProperty(window, 'WeakMap', undefined); } - setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable); - setProperty(window, '_Map', undefined); setProperty(window, '_Set', undefined); setProperty(window, '_Symbol', undefined); diff --git a/test/test.js b/test/test.js index d5979338e..a94884650 100644 --- a/test/test.js +++ b/test/test.js @@ -452,6 +452,11 @@ funcProto._method = noop; // Set bad shims. + setProperty(Object, 'create', noop); + + var _getOwnPropertySymbols = Object.getOwnPropertySymbols; + setProperty(Object, 'getOwnPropertySymbols', undefined); + var _propertyIsEnumerable = objectProto.propertyIsEnumerable; setProperty(objectProto, 'propertyIsEnumerable', function(key) { return !(key == 'valueOf' && this && this.valueOf === 1) && _propertyIsEnumerable.call(this, key); @@ -472,11 +477,7 @@ setProperty(root.Map, 'toString', createToString('Map')); } - setProperty(Object, 'create', noop); - - var _getOwnPropertySymbols = Object.getOwnPropertySymbols; - setProperty(Object, 'getOwnPropertySymbols', undefined); - + setProperty(root, 'Buffer', undefined); setProperty(root, 'Set', noop); setProperty(root, 'Symbol', undefined); setProperty(root, 'WeakMap', noop); @@ -492,6 +493,10 @@ root._ = oldDash; // Restore built-in methods. + setProperty(Object, 'create', create); + setProperty(objectProto, 'propertyIsEnumerable', _propertyIsEnumerable); + setProperty(root, 'Buffer', Buffer); + if (_getOwnPropertySymbols) { Object.getOwnPropertySymbols = _getOwnPropertySymbols; } else { @@ -517,9 +522,6 @@ } else { delete root.WeakMap; } - setProperty(objectProto, 'propertyIsEnumerable', _propertyIsEnumerable); - setProperty(Object, 'create', create); - delete root.WinRTError; delete funcProto._method; }()); @@ -723,7 +725,7 @@ } }); - QUnit.test('should avoid overwritten native methods', function(assert) { + QUnit.test('should avoid non-native built-ins', function(assert) { assert.expect(6); function message(lodashMethod, nativeMethod) { @@ -8111,6 +8113,17 @@ assert.strictEqual(_.isBuffer('a'), false); assert.strictEqual(_.isBuffer(symbol), false); }); + + QUnit.test('should return `false` if `Buffer` is not defined', function(assert) { + assert.expect(1); + + if (Buffer && lodashBizarro) { + assert.strictEqual(lodashBizarro.isBuffer(new Buffer(2)), false); + } + else { + skipTest(assert); + } + }); }(1, 2, 3)); /*--------------------------------------------------------------------------*/