1#include <js_native_api.h> 2#include "../common.h" 3#include "../entry_point.h" 4#include "test_null.h" 5 6static napi_value Test(napi_env env, napi_callback_info info) { 7 size_t argc = 1; 8 napi_value args[1]; 9 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); 10 11 NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); 12 13 napi_valuetype valuetype0; 14 NODE_API_CALL(env, napi_typeof(env, args[0], &valuetype0)); 15 16 NODE_API_ASSERT(env, valuetype0 == napi_number, 17 "Wrong type of arguments. Expects a number as first argument."); 18 19 double input; 20 NODE_API_CALL(env, napi_get_value_double(env, args[0], &input)); 21 22 napi_value output; 23 NODE_API_CALL(env, napi_create_double(env, input, &output)); 24 25 return output; 26} 27 28static napi_value TestUint32Truncation(napi_env env, napi_callback_info info) { 29 size_t argc = 1; 30 napi_value args[1]; 31 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); 32 33 NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); 34 35 napi_valuetype valuetype0; 36 NODE_API_CALL(env, napi_typeof(env, args[0], &valuetype0)); 37 38 NODE_API_ASSERT(env, valuetype0 == napi_number, 39 "Wrong type of arguments. Expects a number as first argument."); 40 41 uint32_t input; 42 NODE_API_CALL(env, napi_get_value_uint32(env, args[0], &input)); 43 44 napi_value output; 45 NODE_API_CALL(env, napi_create_uint32(env, input, &output)); 46 47 return output; 48} 49 50static napi_value TestInt32Truncation(napi_env env, napi_callback_info info) { 51 size_t argc = 1; 52 napi_value args[1]; 53 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); 54 55 NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); 56 57 napi_valuetype valuetype0; 58 NODE_API_CALL(env, napi_typeof(env, args[0], &valuetype0)); 59 60 NODE_API_ASSERT(env, valuetype0 == napi_number, 61 "Wrong type of arguments. Expects a number as first argument."); 62 63 int32_t input; 64 NODE_API_CALL(env, napi_get_value_int32(env, args[0], &input)); 65 66 napi_value output; 67 NODE_API_CALL(env, napi_create_int32(env, input, &output)); 68 69 return output; 70} 71 72static napi_value TestInt64Truncation(napi_env env, napi_callback_info info) { 73 size_t argc = 1; 74 napi_value args[1]; 75 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); 76 77 NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); 78 79 napi_valuetype valuetype0; 80 NODE_API_CALL(env, napi_typeof(env, args[0], &valuetype0)); 81 82 NODE_API_ASSERT(env, valuetype0 == napi_number, 83 "Wrong type of arguments. Expects a number as first argument."); 84 85 int64_t input; 86 NODE_API_CALL(env, napi_get_value_int64(env, args[0], &input)); 87 88 napi_value output; 89 NODE_API_CALL(env, napi_create_int64(env, input, &output)); 90 91 return output; 92} 93 94EXTERN_C_START 95napi_value Init(napi_env env, napi_value exports) { 96 napi_property_descriptor descriptors[] = { 97 DECLARE_NODE_API_PROPERTY("Test", Test), 98 DECLARE_NODE_API_PROPERTY("TestInt32Truncation", TestInt32Truncation), 99 DECLARE_NODE_API_PROPERTY("TestUint32Truncation", TestUint32Truncation), 100 DECLARE_NODE_API_PROPERTY("TestInt64Truncation", TestInt64Truncation), 101 }; 102 103 NODE_API_CALL(env, napi_define_properties( 104 env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors)); 105 106 init_test_null(env, exports); 107 108 return exports; 109} 110EXTERN_C_END 111