diff options
author | Gabriel Schulhof <gabriel.schulhof@intel.com> | 2018-11-17 12:34:54 -0800 |
---|---|---|
committer | Gabriel Schulhof <gabriel.schulhof@intel.com> | 2018-12-04 13:58:17 -0800 |
commit | 938e11882b96e19b443477571455088baaa054d8 (patch) | |
tree | eb828a60957a2881995ba9a83f44a32a18fbff16 /test/js-native-api/test_general/testFinalizer.js | |
parent | 83ee137c4565112177f22f2c735b266b22262220 (diff) | |
download | android-node-v8-938e11882b96e19b443477571455088baaa054d8.tar.gz android-node-v8-938e11882b96e19b443477571455088baaa054d8.tar.bz2 android-node-v8-938e11882b96e19b443477571455088baaa054d8.zip |
test: partition N-API tests
Partition test/addons-napi into test/js-native-api and test/node-api to
isolate the Node.js-agnostic portion of the N-API tests from the
Node.js-specific portion.
PR-URL: https://github.com/nodejs/node/pull/24557
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Diffstat (limited to 'test/js-native-api/test_general/testFinalizer.js')
-rw-r--r-- | test/js-native-api/test_general/testFinalizer.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/js-native-api/test_general/testFinalizer.js b/test/js-native-api/test_general/testFinalizer.js new file mode 100644 index 0000000000..b440ed5e50 --- /dev/null +++ b/test/js-native-api/test_general/testFinalizer.js @@ -0,0 +1,32 @@ +'use strict'; +// Flags: --expose-gc + +const common = require('../../common'); +const test_general = require(`./build/${common.buildType}/test_general`); +const assert = require('assert'); + +let finalized = {}; +const callback = common.mustCall(2); + +// Add two items to be finalized and ensure the callback is called for each. +test_general.addFinalizerOnly(finalized, callback); +test_general.addFinalizerOnly(finalized, callback); + +// Ensure attached items cannot be retrieved. +common.expectsError(() => test_general.unwrap(finalized), + { type: Error, message: 'Invalid argument' }); + +// Ensure attached items cannot be removed. +common.expectsError(() => test_general.removeWrap(finalized), + { type: Error, message: 'Invalid argument' }); +finalized = null; +global.gc(); + +// Add an item to an object that is already wrapped, and ensure that its +// finalizer as well as the wrap finalizer gets called. +let finalizeAndWrap = {}; +test_general.wrap(finalizeAndWrap); +test_general.addFinalizerOnly(finalizeAndWrap, common.mustCall()); +finalizeAndWrap = null; +global.gc(); +assert.strictEqual(test_general.derefItemWasCalled(), true); |