From 916bfed84bd09d779760696914b1bea97ef10214 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sun, 27 Dec 2015 11:11:57 -0600 Subject: [PATCH] Add bizarro tests for `Object.getOwnPropertySymbols`. --- test/index.html | 11 ++++++++++- test/test.js | 26 ++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/test/index.html b/test/index.html index 4e6169c4a..0f22d3895 100644 --- a/test/index.html +++ b/test/index.html @@ -106,9 +106,12 @@ setProperty(Map, 'toString', createToString('Map')); } - setProperty(Object, '_create', window.create); + 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); @@ -133,6 +136,11 @@ } else { delete Object.create; } + if (Object._getOwnPropertySymbols) { + Object.getOwnPropertySymbols = Object._getOwnPropertySymbols; + } else { + delete Object.getOwnPropertySymbols; + } if (_Map) { Map = _Map; } else { @@ -163,6 +171,7 @@ delete funcProto._method; delete objectProto._propertyIsEnumerable; delete Object._create; + delete Object._getOwnPropertySymbols; } // Load lodash to expose it to the bad extensions/shims. diff --git a/test/test.js b/test/test.js index daf23682a..1d8b20c88 100644 --- a/test/test.js +++ b/test/test.js @@ -421,6 +421,10 @@ setProperty(root.Map, 'toString', createToString('Map')); } setProperty(Object, 'create', noop); + + var _getOwnPropertySymbols = Object.getOwnPropertySymbols; + setProperty(Object, 'getOwnPropertySymbols', undefined); + setProperty(root, 'Set', noop); setProperty(root, 'WeakMap', noop); @@ -435,6 +439,11 @@ root._ = oldDash; // Restore built-in methods. + if (_getOwnPropertySymbols) { + Object.getOwnPropertySymbols = _getOwnPropertySymbols; + } else { + delete Object.getOwnPropertySymbols; + } if (Map) { setProperty(root, 'Map', Map); } else { @@ -652,7 +661,7 @@ }); QUnit.test('should avoid overwritten native methods', function(assert) { - assert.expect(4); + assert.expect(5); function message(lodashMethod, nativeMethod) { return '`' + lodashMethod + '` should avoid overwritten native `' + nativeMethod + '`'; @@ -686,6 +695,19 @@ label = message('_.difference`, `_.intersection`, and `_.uniq', 'Object.create` and `Map'); assert.deepEqual(actual, [[otherObject], [object], [object]], label); + try { + if (Symbol) { + object[Symbol()] = {}; + } + actual = [ + lodashBizarro.clone(object), + lodashBizarro.cloneDeep(object) + ]; + } catch (e) { + actual = null; + } + assert.deepEqual(actual, [object, object], 'Object.getOwnPropertySymbols'); + try { var map = new lodashBizarro.memoize.Cache; actual = map.set('a', 1).get('a'); @@ -708,7 +730,7 @@ assert.deepEqual(actual, [], label); } else { - skipTest(assert, 4); + skipTest(assert, 5); } }); }());