MCPcopy Index your code
hub / github.com/nodejs/node-addon-api / test

Function test

test/object/object.js:7–230  ·  view source on GitHub ↗
(binding)

Source from the content-addressed store, hash-verified

5module.exports = require('../common').runTest(test);
6
7function test (binding) {
8 function assertPropertyIs (obj, key, attribute) {
9 const propDesc = Object.getOwnPropertyDescriptor(obj, key);
10 assert.ok(propDesc);
11 assert.ok(propDesc[attribute]);
12 }
13
14 function assertPropertyIsNot (obj, key, attribute) {
15 const propDesc = Object.getOwnPropertyDescriptor(obj, key);
16 assert.ok(propDesc);
17 assert.ok(!propDesc[attribute]);
18 }
19
20 function testDefineProperties (nameType) {
21 const obj = {};
22 binding.object.defineProperties(obj, nameType);
23
24 // accessors
25 assertPropertyIsNot(obj, 'readonlyAccessor', 'enumerable');
26 assertPropertyIsNot(obj, 'readonlyAccessor', 'configurable');
27 assert.strictEqual(obj.readonlyAccessor, true);
28
29 assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'enumerable');
30 assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'configurable');
31 assert.strictEqual(obj.readonlyAccessorWithUserData, 1234, nameType);
32
33 assertPropertyIsNot(obj, 'readwriteAccessor', 'enumerable');
34 assertPropertyIsNot(obj, 'readwriteAccessor', 'configurable');
35 obj.readwriteAccessor = false;
36 assert.strictEqual(obj.readwriteAccessor, false);
37 obj.readwriteAccessor = true;
38 assert.strictEqual(obj.readwriteAccessor, true);
39
40 assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'enumerable');
41 assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'configurable');
42 obj.readwriteAccessorWithUserData = 2;
43 assert.strictEqual(obj.readwriteAccessorWithUserData, 2);
44 obj.readwriteAccessorWithUserData = -14;
45 assert.strictEqual(obj.readwriteAccessorWithUserData, -14);
46
47 // templated accessors
48 assertPropertyIsNot(obj, 'readonlyAccessorT', 'enumerable');
49 assertPropertyIsNot(obj, 'readonlyAccessorT', 'configurable');
50 assert.strictEqual(obj.readonlyAccessorT, true);
51
52 assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'enumerable');
53 assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'configurable');
54 assert.strictEqual(obj.readonlyAccessorWithUserDataT, -14, nameType);
55
56 assertPropertyIsNot(obj, 'readwriteAccessorT', 'enumerable');
57 assertPropertyIsNot(obj, 'readwriteAccessorT', 'configurable');
58 obj.readwriteAccessorT = false;
59 assert.strictEqual(obj.readwriteAccessorT, false);
60 obj.readwriteAccessorT = true;
61 assert.strictEqual(obj.readwriteAccessorT, true);
62
63 assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'enumerable');
64 assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'configurable');

Callers

nothing calls this directly

Calls 3

SymbolClass · 0.85
GetPropertyNamesMethod · 0.80
testDefinePropertiesFunction · 0.70

Tested by

no test coverage detected