| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | '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) { // this `if` check is just to shut TS up		/** @type {{ a: number, b?: number, c?: number }} */		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();});
 |