diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-11-19 21:39:07 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-11-30 02:02:52 +0100 |
commit | f4f8ec2b65ea1e520c93ad0cee3d7241d113934d (patch) | |
tree | 623c90ef30d24309b9dc33e3ba42854d8ba6f291 /test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c | |
parent | fa5937b1e75ab04c1a1aaf396b36fbfaf4fff155 (diff) | |
download | android-node-v8-f4f8ec2b65ea1e520c93ad0cee3d7241d113934d.tar.gz android-node-v8-f4f8ec2b65ea1e520c93ad0cee3d7241d113934d.tar.bz2 android-node-v8-f4f8ec2b65ea1e520c93ad0cee3d7241d113934d.zip |
test: port worker + buffer test to N-API
This ports `test/addons/worker-buffer-callback` to N-API,
with the small exception of using external `ArrayBuffer`s rather
than external Node.js `Buffer`s.
PR-URL: https://github.com/nodejs/node/pull/30551
Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c')
-rw-r--r-- | test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c b/test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c new file mode 100644 index 0000000000..b911fd8638 --- /dev/null +++ b/test/node-api/test_worker_buffer_callback/test_worker_buffer_callback.c @@ -0,0 +1,43 @@ +#include <stdio.h> +#include <node_api.h> +#include <assert.h> +#include "../../js-native-api/common.h" + +uint32_t free_call_count = 0; +char data[] = "hello"; + +napi_value GetFreeCallCount(napi_env env, napi_callback_info info) { + napi_value value; + NAPI_CALL(env, napi_create_uint32(env, free_call_count, &value)); + return value; +} + +static void finalize_cb(napi_env env, void* finalize_data, void* hint) { + assert(finalize_data == data); + free_call_count++; +} + +NAPI_MODULE_INIT() { + napi_property_descriptor properties[] = { + DECLARE_NAPI_PROPERTY("getFreeCallCount", GetFreeCallCount) + }; + + NAPI_CALL(env, napi_define_properties( + env, exports, sizeof(properties) / sizeof(*properties), properties)); + + // This is a slight variation on the non-N-API test: We create an ArrayBuffer + // rather than a Node.js Buffer, since testing the latter would only test + // the same code paths and not the ones specific to N-API. + napi_value buffer; + NAPI_CALL(env, napi_create_external_arraybuffer( + env, + data, + sizeof(data), + finalize_cb, + NULL, + &buffer)); + + NAPI_CALL(env, napi_set_named_property(env, exports, "buffer", buffer)); + + return exports; +} |