|
'use strict'; |
|
|
|
var $defineProperty = require('../'); |
|
|
|
var test = require('tape'); |
|
var gOPD = require('gopd'); |
|
|
|
test('defineProperty: supported', { skip: !$defineProperty }, function (t) { |
|
t.plan(4); |
|
|
|
t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); |
|
if ($defineProperty && gOPD) { |
|
var o = { a: 1 }; |
|
|
|
$defineProperty(o, 'b', { enumerable: true, value: 2 }); |
|
t.deepEqual( |
|
gOPD(o, 'b'), |
|
{ |
|
configurable: false, |
|
enumerable: true, |
|
value: 2, |
|
writable: false |
|
}, |
|
'property descriptor is as expected' |
|
); |
|
|
|
$defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); |
|
t.deepEqual( |
|
gOPD(o, 'c'), |
|
{ |
|
configurable: false, |
|
enumerable: false, |
|
value: 3, |
|
writable: true |
|
}, |
|
'property descriptor is as expected' |
|
); |
|
} |
|
|
|
t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); |
|
|
|
t.end(); |
|
}); |
|
|
|
test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { |
|
t.notOk($defineProperty, 'defineProperty is not supported'); |
|
|
|
t.match( |
|
typeof $defineProperty, |
|
/^(?:undefined|boolean)$/, |
|
'`typeof defineProperty` is `undefined` or `boolean`' |
|
); |
|
|
|
t.end(); |
|
}); |
|
|