From f3931140fec759ca94118d5fd1738c57fe6d46db Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Thu, 19 Dec 2013 02:05:55 -0800 Subject: [PATCH] Add bad shim tests for String#contains and remove those for Function#bind as we don't use native bind. --- test/index.html | 18 +++++++++--------- test/test.js | 27 +++++++++++++++++++-------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/test/index.html b/test/index.html index 22f7c7784..a62477ab5 100644 --- a/test/index.html +++ b/test/index.html @@ -29,9 +29,6 @@ Date._now = Date.now; Date.now = function() {}; - Function.prototype._bind = Function.prototype.bind; - Function.prototype.bind = function() { return function() {}; }; - Object._create = Object.create; Object.create = function() {}; @@ -44,6 +41,9 @@ Object._keys = Object.keys; Object.keys = function() {}; + String.prototype._contains = String.prototype.contains; + String.prototype.contains = function() {}; + window.WinRTError = Error; document._createDocumentFragment = document.createDocumentFragment; @@ -61,11 +61,6 @@ } else { delete Date.now; } - if (Function.prototype._bind) { - Function.prototype.bind = Function.prototype._bind; - } else { - delete Function.prototype.bind; - } if (Object._create) { Object.create = Object._create; } else { @@ -86,6 +81,11 @@ } else { delete Object.keys; } + if (String.prototype._contains) { + String.prototype.contains = String.prototype._contains; + } else { + delete String.prototype.contains; + } window.WinRTError = undefined; document.createDocumentFragment = document._createDocumentFragment; @@ -93,12 +93,12 @@ delete Array._isArray; delete Date._now; - delete Function.prototype._bind; delete Function.prototype._method; delete Object._create; delete Object._defineProperty; delete Object._getPrototypeOf; delete Object._keys; + delete String.prototype._contains; } addBizarroMethods(); diff --git a/test/test.js b/test/test.js index 7612279a5..9d6dd229f 100644 --- a/test/test.js +++ b/test/test.js @@ -249,9 +249,6 @@ var _now = Date.now; Date.now = function() {}; - var _bind = Function.prototype.bind; - Function.prototype.bind = function() { return function() {}; }; - var _create = Object.create; Object.create = function() {}; @@ -264,18 +261,25 @@ var _keys = Object.keys; Object.keys = function() {}; + var _contains = String.prototype.contains; + String.prototype.contains = function() {}; + // load Lo-Dash and expose it to the bad extensions/shims lodashBizarro = (lodashBizarro = require(filePath))._ || lodashBizarro; // restore native methods Array.isArray = _isArray; Date.now = _now; - Function.prototype.bind = _bind; Object.create = _create; Object.defineProperty = _defineProperty; Object.getPrototypeOf = _getPrototypeOf; Object.keys = _keys; + if (String.prototype._contains) { + String.prototype.contains = String.prototype._contains; + } else { + delete String.prototype.contains; + } delete global.window; delete global.WinRTError; delete Function.prototype._method; @@ -384,7 +388,7 @@ } }); - test('should avoid overwritten native methods', 7, function() { + test('should avoid overwritten native methods', 8, function() { function Foo() {} function message(methodName) { @@ -416,11 +420,11 @@ deepEqual(actual[1], {}, message('Object.create')); try { - var actual = lodashBizarro.bind(function() { return this.a; }, object)(); + var actual = lodashBizarro.bind(function() { return this.a; }, object); } catch(e) { actual = null; } - ok(actual, message('Object.defineProperty')); + equal('__bindData__' in actual, false, message('Object.defineProperty')); try { actual = [lodashBizarro.isPlainObject({}), lodashBizarro.isPlainObject([])]; @@ -435,9 +439,16 @@ actual = null; } deepEqual(actual, [['a'], []], message('Object.keys')); + + try { + actual = lodashBizarro.contains('abc', 'bc'); + } catch(e) { + actual = null; + } + strictEqual(actual, true, message('String#contains')); } else { - skipTest(7); + skipTest(8); } }); }());