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];

});