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