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

Function test

test/finalizer_order.js:11–98  ·  view source on GitHub ↗
(binding)

Source from the content-addressed store, hash-verified

9module.exports = require('./common').runTest(test);
10
11function test (binding) {
12 const { isExperimental } = binding;
13
14 let isCallbackCalled = false;
15
16 const tests = [
17 'Finalizer Order - ObjectWrap',
18 () => {
19 let test = new binding.finalizer_order.Test(() => { isCallbackCalled = true; });
20 test = null;
21
22 global.gc();
23
24 if (isExperimental) {
25 assert.strictEqual(binding.finalizer_order.Test.isBasicFinalizerCalled, true, 'Expected basic finalizer to be called [before ticking]');
26 assert.strictEqual(binding.finalizer_order.Test.isFinalizerCalled, false, 'Expected (extended) finalizer to not be called [before ticking]');
27 assert.strictEqual(isCallbackCalled, false, 'Expected callback to not be called [before ticking]');
28 } else {
29 assert.strictEqual(binding.finalizer_order.Test.isBasicFinalizerCalled, false, 'Expected basic finalizer to not be called [before ticking]');
30 assert.strictEqual(binding.finalizer_order.Test.isFinalizerCalled, false, 'Expected (extended) finalizer to not be called [before ticking]');
31 assert.strictEqual(isCallbackCalled, false, 'Expected callback to not be called [before ticking]');
32 }
33 },
34 () => {
35 assert.strictEqual(binding.finalizer_order.Test.isBasicFinalizerCalled, true, 'Expected basic finalizer to be called [after ticking]');
36 assert.strictEqual(binding.finalizer_order.Test.isFinalizerCalled, true, 'Expected (extended) finalizer to be called [after ticking]');
37 assert.strictEqual(isCallbackCalled, true, 'Expected callback to be called [after ticking]');
38 },
39
40 'Finalizer Order - External with Basic Finalizer',
41 () => {
42 let ext = binding.finalizer_order.createExternalBasicFinalizer();
43 ext = null;
44 global.gc();
45
46 if (isExperimental) {
47 assert.strictEqual(binding.finalizer_order.isExternalBasicFinalizerCalled(), true, 'Expected External basic finalizer to be called [before ticking]');
48 } else {
49 assert.strictEqual(binding.finalizer_order.isExternalBasicFinalizerCalled(), false, 'Expected External basic finalizer to not be called [before ticking]');
50 }
51 },
52 () => {
53 assert.strictEqual(binding.finalizer_order.isExternalBasicFinalizerCalled(), true, 'Expected External basic finalizer to be called [after ticking]');
54 },
55
56 'Finalizer Order - External with Finalizer',
57 () => {
58 let ext = binding.finalizer_order.createExternalFinalizer();
59 ext = null;
60 global.gc();
61 assert.strictEqual(binding.finalizer_order.isExternalFinalizerCalled(), false, 'Expected External extended finalizer to not be called [before ticking]');
62 },
63 () => {
64 assert.strictEqual(binding.finalizer_order.isExternalFinalizerCalled(), true, 'Expected External extended finalizer to be called [after ticking]');
65 }
66 ];
67
68 if (binding.isExperimental) {

Callers

nothing calls this directly

Calls 1

PostFinalizerMethod · 0.80

Tested by

no test coverage detected