diff --git a/test/index.html b/test/index.html index 55e8688c5..b3ce68690 100644 --- a/test/index.html +++ b/test/index.html @@ -56,10 +56,8 @@ fnToString = funcProto.toString, nativeString = fnToString.call(objectProto.toString), noop = function() {}, - parseInt = window.parseInt, propertyIsEnumerable = objectProto.propertyIsEnumerable, - reToString = /toString/g, - whitespace = ' \t\x0B\f\xA0\ufeff\n\r\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000'; + reToString = /toString/g; function constant(value) { return function() { @@ -87,12 +85,6 @@ setProperty(Array, '_isArray', Array.isArray); setProperty(Array, 'isArray', noop); - setProperty(Date, '_now', Date.now); - setProperty(Date, 'now', noop); - - setProperty(Object, '_getPrototypeOf', Object.getPrototypeOf); - setProperty(Object, 'getPrototypeOf', noop); - setProperty(Object, '_keys', Object.keys); setProperty(Object, 'keys', noop); @@ -107,70 +99,12 @@ return propertyIsEnumerable.call(this, key); }); - setProperty(Number, '_isFinite', Number.isFinite); - setProperty(Number, 'isFinite', noop); - - setProperty(window, '_ArrayBuffer', window.ArrayBuffer); - if (window.ArrayBuffer && window.Uint8Array) { - ArrayBuffer = (function(_ArrayBuffer) { - function ArrayBuffer(byteLength) { - var buffer = new _ArrayBuffer(byteLength); - if (!byteLength) { - setProperty(buffer, 'slice', buffer.slice ? null : bufferSlice); - } - return buffer; - } - function bufferSlice() { - var newBuffer = new _ArrayBuffer(this.byteLength), - view = new Uint8Array(newBuffer); - - view.set(new Uint8Array(this)); - return newBuffer; - } - setProperty(ArrayBuffer, 'toString', createToString('ArrayBuffer')); - setProperty(bufferSlice, 'toString', createToString('slice')); - return ArrayBuffer; - }(_ArrayBuffer)); - } - if (!window.Float64Array && window.Uint8Array) { - Float64Array = (function() { - function Float64Array(buffer, byteOffset, length) { - return arguments.length == 1 - ? new Uint8Array(buffer) - : new Uint8Array(buffer, byteOffset || 0, length || buffer.byteLength); - } - setProperty(Float64Array, 'BYTES_PER_ELEMENT', 8); - setProperty(Float64Array, 'toString', createToString('Float64Array')); - return Float64Array; - }()); - } setProperty(window, '_Set', window.Set); setProperty(window, 'Set', noop); setProperty(window, '_WeakMap', window.WeakMap); setProperty(window, 'WeakMap', noop); - setProperty(window, '_parseInt', parseInt); - setProperty(window, 'parseInt', (function() { - var checkStr = whitespace + '08', - isFaked = parseInt(checkStr) != 8, - reHexPrefix = /^0[xX]/, - reTrim = RegExp('^[' + whitespace + ']+|[' + whitespace + ']+$'); - - return function(value, radix) { - if (value == checkStr && !isFaked) { - isFaked = true; - return 0; - } - value = String(value == null ? '' : value).replace(reTrim, ''); - return parseInt(value, +radix || (reHexPrefix.test(value) ? 16 : 10)); - }; - }())); - - // Fake lack of DOM support. - setProperty(document, '_createDocumentFragment', document.createDocumentFragment); - document.createDocumentFragment = noop; - // Fake `WinRTError`. setProperty(window, 'WinRTError', Error); @@ -190,31 +124,11 @@ } else { delete Array.isArray; } - if (Date._now) { - setProperty(Date, 'now', Date._now); - } else { - delete Date.now; - } - if (Object._getPrototypeOf) { - setProperty(Object, 'getPrototypeOf', Object._getPrototypeOf); - } else { - delete Object.getPrototypeOf; - } if (Object._keys) { setProperty(Object, 'keys', Object._keys); } else { delete Object.keys; } - if (Number._isFinite) { - setProperty(Number, 'isFinite', Number._isFinite); - } else { - delete Number.isFinite; - } - if (window._ArrayBuffer) { - ArrayBuffer = _ArrayBuffer; - } - setProperty(window, '_ArrayBuffer', undefined); - if (window._Set) { Set = _Set; } @@ -225,12 +139,6 @@ } setProperty(window, '_WeakMap', undefined); - setProperty(window, 'parseInt', window._parseInt); - setProperty(window, '_parseInt', undefined); - - document.createDocumentFragment = document._createDocumentFragment; - setProperty(document, '_createDocumentFragment', undefined); - setProperty(window, 'WinRTError', undefined); setProperty(window, 'exports', undefined); @@ -240,8 +148,6 @@ setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable); delete Array._isArray; - delete Date._now; - delete Object._getPrototypeOf; delete Object._keys; delete funcProto._method; delete objectProto._propertyIsEnumerable; diff --git a/test/test.js b/test/test.js index 2e20c8274..0076944ba 100644 --- a/test/test.js +++ b/test/test.js @@ -419,12 +419,6 @@ var _isArray = Array.isArray; setProperty(Array, 'isArray', _.noop); - var _now = Date.now; - setProperty(Date, 'now', _.noop); - - var _getPrototypeOf = Object.getPrototypeOf; - setProperty(Object, 'getPrototypeOf', _.noop); - var _keys = Object.keys; setProperty(Object, 'keys', _.noop); @@ -436,73 +430,12 @@ return _propertyIsEnumerable.call(this, key); }); - var _isFinite = Number.isFinite; - setProperty(Number, 'isFinite', _.noop); - - var _ArrayBuffer = ArrayBuffer; - setProperty(root, 'ArrayBuffer', (function() { - function ArrayBuffer(byteLength) { - var buffer = new _ArrayBuffer(byteLength); - if (!byteLength) { - setProperty(buffer, 'slice', buffer.slice ? null : bufferSlice); - } - return buffer; - } - function bufferSlice() { - var newBuffer = new _ArrayBuffer(this.byteLength), - view = new Uint8Array(newBuffer); - - view.set(new Uint8Array(this)); - return newBuffer; - } - setProperty(ArrayBuffer, 'toString', createToString('ArrayBuffer')); - setProperty(bufferSlice, 'toString', createToString('slice')); - return ArrayBuffer; - }())); - - var _Float64Array = root.Float64Array; - if (!_Float64Array) { - setProperty(root, 'Float64Array', (function() { - function Float64Array(buffer, byteOffset, length) { - return arguments.length == 1 - ? new Uint8Array(buffer) - : new Uint8Array(buffer, byteOffset || 0, length || buffer.byteLength); - } - setProperty(Float64Array, 'BYTES_PER_ELEMENT', 8); - setProperty(Float64Array, 'toString', createToString('Float64Array')); - return Float64Array; - }())); - } - var _parseInt = parseInt; - setProperty(root, 'parseInt', (function() { - var checkStr = whitespace + '08', - isFaked = _parseInt(checkStr) != 8, - reHexPrefix = /^0[xX]/, - reTrim = RegExp('^[' + whitespace + ']+|[' + whitespace + ']+$'); - - return function(value, radix) { - if (value == checkStr && !isFaked) { - isFaked = true; - return 0; - } - value = String(value == null ? '' : value).replace(reTrim, ''); - return _parseInt(value, +radix || (reHexPrefix.test(value) ? 16 : 10)); - }; - }())); - var _Set = root.Set; setProperty(root, 'Set', _.noop); var _WeakMap = root.WeakMap; setProperty(root, 'WeakMap', _.noop); - // Fake the DOM. - setProperty(root, 'window', {}); - setProperty(root.window, 'document', {}); - setProperty(root.window.document, 'createDocumentFragment', function() { - return { 'nodeType': 11 }; - }); - // Fake `WinRTError`. setProperty(root, 'WinRTError', Error); @@ -514,26 +447,10 @@ // Restore built-in methods. setProperty(Array, 'isArray', _isArray); - setProperty(Date, 'now', _now); - setProperty(Object, 'getPrototypeOf', _getPrototypeOf); setProperty(Object, 'keys', _keys); setProperty(objectProto, 'propertyIsEnumerable', _propertyIsEnumerable); - setProperty(root, 'parseInt', _parseInt); - if (_isFinite) { - setProperty(Number, 'isFinite', _isFinite); - } else { - delete Number.isFinite; - } - if (_ArrayBuffer) { - setProperty(root, 'ArrayBuffer', _ArrayBuffer); - } else { - delete root.ArrayBuffer; - } - if (!_Float64Array) { - delete root.Float64Array; - } if (_Set) { setProperty(root, 'Set', Set); } else { @@ -545,7 +462,6 @@ delete root.WeakMap; } delete root.WinRTError; - delete root.window; delete funcProto._method; }()); @@ -710,7 +626,7 @@ } }); - test('should avoid overwritten native methods', 12, function() { + test('should avoid overwritten native methods', 6, function() { function Foo() {} function message(lodashMethod, nativeMethod) { @@ -729,20 +645,6 @@ } deepEqual(actual, [true, false], message('_.isArray', 'Array.isArray')); - try { - actual = lodashBizarro.now(); - } catch(e) { - actual = null; - } - ok(typeof actual == 'number', message('_.now', 'Date.now')); - - try { - actual = [lodashBizarro.isPlainObject({}), lodashBizarro.isPlainObject([])]; - } catch(e) { - actual = null; - } - deepEqual(actual, [true, false], message('_.isPlainObject', 'Object.getPrototypeOf')); - try { actual = [lodashBizarro.keys(object), lodashBizarro.keys()]; } catch(e) { @@ -750,13 +652,6 @@ } deepEqual(actual, [['a'], []], message('_.keys', 'Object.keys')); - try { - actual = [lodashBizarro.isFinite(1), lodashBizarro.isFinite(NaN)]; - } catch(e) { - actual = null; - } - deepEqual(actual, [true, false], message('_.isFinite', 'Number.isFinite')); - try { actual = [ lodashBizarro.difference([object, otherObject], largeArray), @@ -768,27 +663,7 @@ } deepEqual(actual, [[otherObject], [object], [object]], message('_.difference`, `_.intersection`, and `_.uniq', 'Set')); - try { - actual = _.map(['6', '08', '10'], lodashBizarro.parseInt); - } catch(e) { - actual = null; - } - deepEqual(actual, [6, 8, 10], '`_.parseInt` should work in its bizarro form'); - // Avoid comparing buffers with `deepEqual` in Rhino because it errors. - if (ArrayBuffer && !isRhino) { - try { - var buffer = new ArrayBuffer(10); - actual = lodashBizarro.clone(buffer); - } catch(e) { - actual = null; - } - deepEqual(actual, buffer, message('_.clone', 'ArrayBuffer#slice')); - notStrictEqual(actual, buffer, message('_.clone', 'ArrayBuffer#slice')); - } - else { - skipTest(2); - } if (ArrayBuffer && Uint8Array) { try { var array = new Uint8Array(new ArrayBuffer(10)); @@ -805,7 +680,7 @@ } } else { - skipTest(12); + skipTest(6); } }); }()); @@ -15048,19 +14923,9 @@ test('should not contain minified properties (test production builds)', 1, function() { var props = [ - 'argsTag', - 'argsObject', - 'dom', 'enumErrorProps', 'enumPrototypes', - 'fastBind', - 'funcDecomp', - 'funcNames', - 'hostObject', - 'nodeTag', - 'nonEnumArgs', 'nonEnumShadows', - 'nonEnumStrings', 'ownLast', 'spliceObjects', 'unindexedChars' @@ -17818,7 +17683,7 @@ var args = arguments, array = [1, 2, 3, 4, 5, 6]; - test('should work with `arguments` objects', 29, function() { + test('should work with `arguments` objects', 27, function() { function message(methodName) { return '`_.' + methodName + '` should work with `arguments` objects'; } @@ -17852,17 +17717,6 @@ deepEqual(_.uniq(args), [1, null, [3], 5], message('uniq')); deepEqual(_.without(args, null), [1, [3], 5], message('without')); deepEqual(_.zip(args, args), [[1, 1], [null, null], [[3], [3]], [null, null], [5, 5]], message('zip')); - - if (_.support.argsTag && _.support.argsObject && !_.support.nonEnumArgs) { - _.pull(args, null); - deepEqual([args[0], args[1], args[2]], [1, [3], 5], message('pull')); - - _.remove(args, function(value) { return typeof value == 'number'; }); - ok(args.length === 1 && _.isEqual(args[0], [3]), message('remove')); - } - else { - skipTest(2); - } }); test('should accept falsey primary arguments', 4, function() {