| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3,8 +3,10 @@ | |||
| 3 | 3 | { | |
| 4 | 4 | "target_name": "test_number", | |
| 5 | 5 | "sources": [ | |
| 6 | + "../common.c", | ||
| 6 | 7 | "../entry_point.c", | |
| 7 | - "test_number.c" | ||
| 8 | + "test_number.c", | ||
| 9 | + "test_null.c", | ||
| 8 | 10 | ] | |
| 9 | 11 | } | |
| 10 | 12 | ] | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,77 @@ | |||
| 1 | + #include <js_native_api.h> | ||
| 2 | + | ||
| 3 | + #include "../common.h" | ||
| 4 | + | ||
| 5 | + // Unifies the way the macros declare values. | ||
| 6 | + typedef double double_t; | ||
| 7 | + | ||
| 8 | + #define BINDING_FOR_CREATE(initial_capital, lowercase) \ | ||
| 9 | + static napi_value Create##initial_capital(napi_env env, \ | ||
| 10 | + napi_callback_info info) { \ | ||
| 11 | + napi_value return_value, call_result; \ | ||
| 12 | + lowercase##_t value = 42; \ | ||
| 13 | + NODE_API_CALL(env, napi_create_object(env, &return_value)); \ | ||
| 14 | + add_returned_status(env, \ | ||
| 15 | + "envIsNull", \ | ||
| 16 | + return_value, \ | ||
| 17 | + "Invalid argument", \ | ||
| 18 | + napi_invalid_arg, \ | ||
| 19 | + napi_create_##lowercase(NULL, value, &call_result)); \ | ||
| 20 | + napi_create_##lowercase(env, value, NULL); \ | ||
| 21 | + add_last_status(env, "resultIsNull", return_value); \ | ||
| 22 | + return return_value; \ | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + #define BINDING_FOR_GET_VALUE(initial_capital, lowercase) \ | ||
| 26 | + static napi_value GetValue##initial_capital(napi_env env, \ | ||
| 27 | + napi_callback_info info) { \ | ||
| 28 | + napi_value return_value, call_result; \ | ||
| 29 | + lowercase##_t value = 42; \ | ||
| 30 | + NODE_API_CALL(env, napi_create_object(env, &return_value)); \ | ||
| 31 | + NODE_API_CALL(env, napi_create_##lowercase(env, value, &call_result)); \ | ||
| 32 | + add_returned_status( \ | ||
| 33 | + env, \ | ||
| 34 | + "envIsNull", \ | ||
| 35 | + return_value, \ | ||
| 36 | + "Invalid argument", \ | ||
| 37 | + napi_invalid_arg, \ | ||
| 38 | + napi_get_value_##lowercase(NULL, call_result, &value)); \ | ||
| 39 | + napi_get_value_##lowercase(env, NULL, &value); \ | ||
| 40 | + add_last_status(env, "valueIsNull", return_value); \ | ||
| 41 | + napi_get_value_##lowercase(env, call_result, NULL); \ | ||
| 42 | + add_last_status(env, "resultIsNull", return_value); \ | ||
| 43 | + return return_value; \ | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + BINDING_FOR_CREATE(Double, double) | ||
| 47 | + BINDING_FOR_CREATE(Int32, int32) | ||
| 48 | + BINDING_FOR_CREATE(Uint32, uint32) | ||
| 49 | + BINDING_FOR_CREATE(Int64, int64) | ||
| 50 | + BINDING_FOR_GET_VALUE(Double, double) | ||
| 51 | + BINDING_FOR_GET_VALUE(Int32, int32) | ||
| 52 | + BINDING_FOR_GET_VALUE(Uint32, uint32) | ||
| 53 | + BINDING_FOR_GET_VALUE(Int64, int64) | ||
| 54 | + | ||
| 55 | + void init_test_null(napi_env env, napi_value exports) { | ||
| 56 | + const napi_property_descriptor test_null_props[] = { | ||
| 57 | + DECLARE_NODE_API_PROPERTY("createDouble", CreateDouble), | ||
| 58 | + DECLARE_NODE_API_PROPERTY("createInt32", CreateInt32), | ||
| 59 | + DECLARE_NODE_API_PROPERTY("createUint32", CreateUint32), | ||
| 60 | + DECLARE_NODE_API_PROPERTY("createInt64", CreateInt64), | ||
| 61 | + DECLARE_NODE_API_PROPERTY("getValueDouble", GetValueDouble), | ||
| 62 | + DECLARE_NODE_API_PROPERTY("getValueInt32", GetValueInt32), | ||
| 63 | + DECLARE_NODE_API_PROPERTY("getValueUint32", GetValueUint32), | ||
| 64 | + DECLARE_NODE_API_PROPERTY("getValueInt64", GetValueInt64), | ||
| 65 | + }; | ||
| 66 | + napi_value test_null; | ||
| 67 | + | ||
| 68 | + NODE_API_CALL_RETURN_VOID(env, napi_create_object(env, &test_null)); | ||
| 69 | + NODE_API_CALL_RETURN_VOID( | ||
| 70 | + env, | ||
| 71 | + napi_define_properties(env, | ||
| 72 | + test_null, | ||
| 73 | + sizeof(test_null_props) / sizeof(*test_null_props), | ||
| 74 | + test_null_props)); | ||
| 75 | + NODE_API_CALL_RETURN_VOID( | ||
| 76 | + env, napi_set_named_property(env, exports, "testNull", test_null)); | ||
| 77 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,8 @@ | |||
| 1 | + #ifndef TEST_JS_NATIVE_API_TEST_NUMBER_TEST_NULL_H_ | ||
| 2 | + #define TEST_JS_NATIVE_API_TEST_NUMBER_TEST_NULL_H_ | ||
| 3 | + | ||
| 4 | + #include <js_native_api.h> | ||
| 5 | + | ||
| 6 | + void init_test_null(napi_env env, napi_value exports); | ||
| 7 | + | ||
| 8 | + #endif // TEST_JS_NATIVE_API_TEST_NUMBER_TEST_NULL_H_ | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + const common = require('../../common'); | ||
| 3 | + const assert = require('assert'); | ||
| 4 | + const { testNull } = require(`./build/${common.buildType}/test_number`); | ||
| 5 | + | ||
| 6 | + const expectedCreateResult = { | ||
| 7 | + envIsNull: 'Invalid argument', | ||
| 8 | + resultIsNull: 'Invalid argument', | ||
| 9 | + }; | ||
| 10 | + const expectedGetValueResult = { | ||
| 11 | + envIsNull: 'Invalid argument', | ||
| 12 | + resultIsNull: 'Invalid argument', | ||
| 13 | + valueIsNull: 'Invalid argument', | ||
| 14 | + }; | ||
| 15 | + [ 'Double', 'Int32', 'Uint32', 'Int64' ].forEach((typeName) => { | ||
| 16 | + assert.deepStrictEqual(testNull['create' + typeName](), expectedCreateResult); | ||
| 17 | + assert.deepStrictEqual(testNull['getValue' + typeName](), expectedGetValueResult); | ||
| 18 | + }); | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,5 +1,6 @@ | |||
| 1 | 1 | #include <js_native_api.h> | |
| 2 | 2 | #include "../common.h" | |
| 3 | + #include "test_null.h" | ||
| 3 | 4 | ||
| 4 | 5 | static napi_value Test(napi_env env, napi_callback_info info) { | |
| 5 | 6 | size_t argc = 1; | |
@@ -101,6 +102,8 @@ napi_value Init(napi_env env, napi_value exports) { | |||
| 101 | 102 | NODE_API_CALL(env, napi_define_properties( | |
| 102 | 103 | env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors)); | |
| 103 | 104 | ||
| 105 | + init_test_null(env, exports); | ||
| 106 | + | ||
| 104 | 107 | return exports; | |
| 105 | 108 | } | |
| 106 | 109 | EXTERN_C_END | |
| Back | FazBrowse Home | New Git URL |
0 commit comments