|                                                      |  | '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();});
 |