diff options
Diffstat (limited to 'test/addons-napi/test_buffer/test_buffer.c')
-rw-r--r-- | test/addons-napi/test_buffer/test_buffer.c | 114 |
1 files changed, 49 insertions, 65 deletions
diff --git a/test/addons-napi/test_buffer/test_buffer.c b/test/addons-napi/test_buffer/test_buffer.c index cfb8f44cc7..880149e1ff 100644 --- a/test/addons-napi/test_buffer/test_buffer.c +++ b/test/addons-napi/test_buffer/test_buffer.c @@ -1,43 +1,26 @@ #include <stdlib.h> #include <string.h> #include <node_api.h> - -#define JS_ASSERT(env, assertion, message) \ - if (!(assertion)) { \ - napi_throw_error( \ - (env), \ - "assertion (" #assertion ") failed: " message); \ - return; \ - } - -#define NAPI_CALL(env, theCall) \ - if ((theCall) != napi_ok) { \ - const napi_extended_error_info* error; \ - napi_get_last_error_info((env), &error); \ - const char* errorMessage = error->error_message; \ - errorMessage = errorMessage ? errorMessage : "empty error message"; \ - napi_throw_error((env), errorMessage); \ - return; \ - } +#include "../common.h" static const char theText[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; static int deleterCallCount = 0; static void deleteTheText(napi_env env, void* data, void* finalize_hint) { - JS_ASSERT(env, data != NULL && strcmp(data, theText) == 0, "invalid data"); + NAPI_ASSERT_RETURN_VOID(env, data != NULL && strcmp(data, theText) == 0, "invalid data"); (void)finalize_hint; free(data); deleterCallCount++; } static void noopDeleter(napi_env env, void* data, void* finalize_hint) { - JS_ASSERT(env, data != NULL && strcmp(data, theText) == 0, "invalid data"); + NAPI_ASSERT_RETURN_VOID(env, data != NULL && strcmp(data, theText) == 0, "invalid data"); (void)finalize_hint; deleterCallCount++; } -void newBuffer(napi_env env, napi_callback_info info) { +napi_value newBuffer(napi_env env, napi_callback_info info) { napi_value theBuffer; char* theCopy; const unsigned int kBufferSize = sizeof(theText); @@ -48,15 +31,16 @@ void newBuffer(napi_env env, napi_callback_info info) { sizeof(theText), (void**)(&theCopy), &theBuffer)); - JS_ASSERT(env, theCopy, "Failed to copy static text for newBuffer"); + NAPI_ASSERT(env, theCopy, "Failed to copy static text for newBuffer"); memcpy(theCopy, theText, kBufferSize); - NAPI_CALL(env, napi_set_return_value(env, info, theBuffer)); + + return theBuffer; } -void newExternalBuffer(napi_env env, napi_callback_info info) { +napi_value newExternalBuffer(napi_env env, napi_callback_info info) { napi_value theBuffer; char* theCopy = strdup(theText); - JS_ASSERT(env, theCopy, "Failed to copy static text for newExternalBuffer"); + NAPI_ASSERT(env, theCopy, "Failed to copy static text for newExternalBuffer"); NAPI_CALL(env, napi_create_external_buffer( env, @@ -65,48 +49,50 @@ void newExternalBuffer(napi_env env, napi_callback_info info) { deleteTheText, NULL, // finalize_hint &theBuffer)); - NAPI_CALL(env, napi_set_return_value(env, info, theBuffer)); + + return theBuffer; } -void getDeleterCallCount(napi_env env, napi_callback_info info) { +napi_value getDeleterCallCount(napi_env env, napi_callback_info info) { napi_value callCount; NAPI_CALL(env, napi_create_number(env, deleterCallCount, &callCount)); - NAPI_CALL(env, napi_set_return_value(env, info, callCount)); + return callCount; } -void copyBuffer(napi_env env, napi_callback_info info) { +napi_value copyBuffer(napi_env env, napi_callback_info info) { napi_value theBuffer; NAPI_CALL(env, napi_create_buffer_copy( env, sizeof(theText), theText, NULL, &theBuffer)); - NAPI_CALL(env, napi_set_return_value(env, info, theBuffer)); + return theBuffer; } -void bufferHasInstance(napi_env env, napi_callback_info info) { - size_t argc; - NAPI_CALL(env, napi_get_cb_args_length(env, info, &argc)); - JS_ASSERT(env, argc == 1, "Wrong number of arguments"); - napi_value theBuffer; - NAPI_CALL(env, napi_get_cb_args(env, info, &theBuffer, 1)); +napi_value bufferHasInstance(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + NAPI_ASSERT(env, argc == 1, "Wrong number of arguments"); + napi_value theBuffer = args[0]; bool hasInstance; napi_valuetype theType; NAPI_CALL(env, napi_typeof(env, theBuffer, &theType)); - JS_ASSERT(env, + NAPI_ASSERT(env, theType == napi_object, "bufferHasInstance: instance is not an object"); NAPI_CALL(env, napi_is_buffer(env, theBuffer, &hasInstance)); - JS_ASSERT(env, hasInstance, "bufferHasInstance: instance is not a buffer"); + NAPI_ASSERT(env, hasInstance, "bufferHasInstance: instance is not a buffer"); napi_value returnValue; NAPI_CALL(env, napi_get_boolean(env, hasInstance, &returnValue)); - NAPI_CALL(env, napi_set_return_value(env, info, returnValue)); + return returnValue; } -void bufferInfo(napi_env env, napi_callback_info info) { - size_t argc; - NAPI_CALL(env, napi_get_cb_args_length(env, info, &argc)); - JS_ASSERT(env, argc == 1, "Wrong number of arguments"); - napi_value theBuffer, returnValue; - NAPI_CALL(env, napi_get_cb_args(env, info, &theBuffer, 1)); - char* bufferData; +napi_value bufferInfo(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + NAPI_ASSERT(env, argc == 1, "Wrong number of arguments"); + napi_value theBuffer = args[0]; + char *bufferData; + napi_value returnValue; size_t bufferLength; NAPI_CALL(env, napi_get_buffer_info( @@ -117,10 +103,10 @@ void bufferInfo(napi_env env, napi_callback_info info) { NAPI_CALL(env, napi_get_boolean(env, !strcmp(bufferData, theText) && bufferLength == sizeof(theText), &returnValue)); - NAPI_CALL(env, napi_set_return_value(env, info, returnValue)); + return returnValue; } -void staticBuffer(napi_env env, napi_callback_info info) { +napi_value staticBuffer(napi_env env, napi_callback_info info) { napi_value theBuffer; NAPI_CALL( env, @@ -130,31 +116,29 @@ void staticBuffer(napi_env env, napi_callback_info info) { noopDeleter, NULL, // finalize_hint &theBuffer)); - NAPI_CALL(env, napi_set_return_value(env, info, theBuffer)); + return theBuffer; } -#define DECLARE_NAPI_METHOD(name, func) \ - { name, func, 0, 0, 0, napi_default, 0 } - void Init(napi_env env, napi_value exports, napi_value module, void* priv) { napi_value theValue; - NAPI_CALL(env, napi_create_string_utf8(env, - theText, sizeof(theText), &theValue)); - NAPI_CALL(env, napi_set_named_property(env, exports, "theText", theValue)); + NAPI_CALL_RETURN_VOID(env, + napi_create_string_utf8(env, theText, sizeof(theText), &theValue)); + NAPI_CALL_RETURN_VOID(env, + napi_set_named_property(env, exports, "theText", theValue)); napi_property_descriptor methods[] = { - DECLARE_NAPI_METHOD("newBuffer", newBuffer), - DECLARE_NAPI_METHOD("newExternalBuffer", newExternalBuffer), - DECLARE_NAPI_METHOD("getDeleterCallCount", getDeleterCallCount), - DECLARE_NAPI_METHOD("copyBuffer", copyBuffer), - DECLARE_NAPI_METHOD("bufferHasInstance", bufferHasInstance), - DECLARE_NAPI_METHOD("bufferInfo", bufferInfo), - DECLARE_NAPI_METHOD("staticBuffer", staticBuffer), + DECLARE_NAPI_PROPERTY("newBuffer", newBuffer), + DECLARE_NAPI_PROPERTY("newExternalBuffer", newExternalBuffer), + DECLARE_NAPI_PROPERTY("getDeleterCallCount", getDeleterCallCount), + DECLARE_NAPI_PROPERTY("copyBuffer", copyBuffer), + DECLARE_NAPI_PROPERTY("bufferHasInstance", bufferHasInstance), + DECLARE_NAPI_PROPERTY("bufferInfo", bufferInfo), + DECLARE_NAPI_PROPERTY("staticBuffer", staticBuffer), }; - NAPI_CALL(env, - napi_define_properties( - env, exports, sizeof(methods) / sizeof(methods[0]), methods)); + + NAPI_CALL_RETURN_VOID(env, napi_define_properties( + env, exports, sizeof(methods) / sizeof(methods[0]), methods)); } NAPI_MODULE(addon, Init) |