1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| '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
| 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();
| });
|
|