blob: e1970b31723d29ac60f0506ee631f6bc02bf4e0b [file] [log] [blame]
var inspect = require('../');
var test = require('tape');
var withoutProperty = function (object, property, fn) {
var original;
if (Object.getOwnPropertyDescriptor) {
original = Object.getOwnPropertyDescriptor(object, property);
} else {
original = object[property];
}
delete object[property];
try {
fn();
} finally {
if (Object.getOwnPropertyDescriptor) {
Object.defineProperty(object, property, original);
} else {
object[property] = original;
}
}
};
test('when Object#hasOwnProperty is deleted', function (t) {
t.plan(1);
var arr = [1, , 3];
Array.prototype[1] = 2; // this is needed to account for "in" vs "hasOwnProperty"
withoutProperty(Object.prototype, 'hasOwnProperty', function () {
t.equal(inspect(arr), '[ 1, , 3 ]');
});
delete Array.prototype[1];
});