diff --git a/index.js b/index.js index 489b99c..b1b5295 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ FakeMap.prototype = { return key[this._key]; }, set: function setMap(key, value) { - if (!Object.isFrozen(key)) { + if (Object.isExtensible(key)) { Object.defineProperty(key, this._key, { value: value, configurable: true, diff --git a/test/index.js b/test/index.js index a0cd1a7..5714d0b 100644 --- a/test/index.js +++ b/test/index.js @@ -332,6 +332,20 @@ describe('Generic', function () { 'eql({ foo: 1, bar: -> }, { foo: 1, bar: <- }) === true'); }); + it('returns true with non-extensible objects', function () { + var objectA = Object.preventExtensions({ foo: 1 }); + var objectB = Object.preventExtensions({ foo: 1 }); + assert(eql(objectA, objectB) === true, + 'eql(Object.preventExtensions({ foo: 1 }), Object.preventExtensions({ foo: 1 })) === true'); + }); + + it('returns true with sealed objects', function () { + var objectA = Object.seal({ foo: 1 }); + var objectB = Object.seal({ foo: 1 }); + assert(eql(objectA, objectB) === true, + 'eql(Object.seal({ foo: 1 }), Object.seal({ foo: 1 })) === true'); + }); + it('returns true with frozen objects', function () { var objectA = Object.freeze({ foo: 1 }); var objectB = Object.freeze({ foo: 1 }); diff --git a/test/new-ecmascript-types.js b/test/new-ecmascript-types.js index 7c28b95..2195dbe 100644 --- a/test/new-ecmascript-types.js +++ b/test/new-ecmascript-types.js @@ -338,14 +338,23 @@ describe('ES2015 Specific', function () { assert(eql(promiseResolve, promiseResolve), 'eql(promiseResolve, promiseResolve)'); assert(eql(promiseReject, promiseReject), 'eql(promiseReject, promiseReject)'); assert(eql(promisePending, promisePending), 'eql(promisePending, promisePending)'); + + promiseReject.catch(function () {}); }); it('returns false for different promises', function () { assert(eql(Promise.resolve(), Promise.resolve()) === false, 'eql(Promise.resolve(), Promise.resolve()) === false'); - assert(eql(Promise.reject(), Promise.reject()) === false, + + var promiseRejectA = Promise.reject(); + var promiseRejectB = Promise.reject(); + assert(eql(promiseRejectA, promiseRejectB) === false, 'eql(Promise.reject(), Promise.reject()) === false'); + + promiseRejectA.catch(function () {}); + promiseRejectB.catch(function () {}); + assert(eql(new Promise(emptyFunction), new Promise(emptyFunction)) === false, 'eql(new Promise(emptyFunction), new Promise(emptyFunction)) === false'); });