mirror of
https://github.com/nodejs/node.git
synced 2024-11-24 20:29:23 +01:00
4b7f23f868
This renames the macros used in the tests from `NAPI_*` to `NODE_API_*`. PR-URL: https://github.com/nodejs/node/pull/37217 Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Beth Griggs <bgriggs@redhat.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
401 lines
13 KiB
C
401 lines
13 KiB
C
#include <js_native_api.h>
|
|
|
|
#include "../common.h"
|
|
#include "test_null.h"
|
|
|
|
static napi_value SetProperty(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object, key;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
NODE_API_CALL(env,
|
|
napi_create_string_utf8(env, "someString", NAPI_AUTO_LENGTH, &key));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_set_property(NULL, object, key, object));
|
|
|
|
napi_set_property(env, NULL, key, object);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_set_property(env, object, NULL, object);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
napi_set_property(env, object, key, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetProperty(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object, key, prop;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
NODE_API_CALL(env,
|
|
napi_create_string_utf8(env, "someString", NAPI_AUTO_LENGTH, &key));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_property(NULL, object, key, &prop));
|
|
|
|
napi_get_property(env, NULL, key, &prop);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_property(env, object, NULL, &prop);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
napi_get_property(env, object, key, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value TestBoolValuedPropApi(napi_env env,
|
|
napi_status (*api)(napi_env, napi_value, napi_value, bool*)) {
|
|
napi_value return_value, object, key;
|
|
bool result;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
NODE_API_CALL(env,
|
|
napi_create_string_utf8(env, "someString", NAPI_AUTO_LENGTH, &key));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
api(NULL, object, key, &result));
|
|
|
|
api(env, NULL, key, &result);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
api(env, object, NULL, &result);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
api(env, object, key, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value HasProperty(napi_env env, napi_callback_info info) {
|
|
return TestBoolValuedPropApi(env, napi_has_property);
|
|
}
|
|
|
|
static napi_value HasOwnProperty(napi_env env, napi_callback_info info) {
|
|
return TestBoolValuedPropApi(env, napi_has_own_property);
|
|
}
|
|
|
|
static napi_value DeleteProperty(napi_env env, napi_callback_info info) {
|
|
return TestBoolValuedPropApi(env, napi_delete_property);
|
|
}
|
|
|
|
static napi_value SetNamedProperty(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_set_named_property(NULL, object, "key", object));
|
|
|
|
napi_set_named_property(env, NULL, "key", object);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_set_named_property(env, object, NULL, object);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
napi_set_named_property(env, object, "key", NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetNamedProperty(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object, prop;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_named_property(NULL, object, "key", &prop));
|
|
|
|
napi_get_named_property(env, NULL, "key", &prop);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_named_property(env, object, NULL, &prop);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
napi_get_named_property(env, object, "key", NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value HasNamedProperty(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object;
|
|
bool result;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_has_named_property(NULL, object, "key", &result));
|
|
|
|
napi_has_named_property(env, NULL, "key", &result);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_has_named_property(env, object, NULL, &result);
|
|
add_last_status(env, "keyIsNull", return_value);
|
|
|
|
napi_has_named_property(env, object, "key", NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value SetElement(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_set_element(NULL, object, 0, object));
|
|
|
|
napi_set_element(env, NULL, 0, object);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_set_property(env, object, 0, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetElement(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, object, prop;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_element(NULL, object, 0, &prop));
|
|
|
|
napi_get_property(env, NULL, 0, &prop);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_property(env, object, 0, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value TestBoolValuedElementApi(napi_env env,
|
|
napi_status (*api)(napi_env, napi_value, uint32_t, bool*)) {
|
|
napi_value return_value, object;
|
|
bool result;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
api(NULL, object, 0, &result));
|
|
|
|
api(env, NULL, 0, &result);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
api(env, object, 0, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value HasElement(napi_env env, napi_callback_info info) {
|
|
return TestBoolValuedElementApi(env, napi_has_element);
|
|
}
|
|
|
|
static napi_value DeleteElement(napi_env env, napi_callback_info info) {
|
|
return TestBoolValuedElementApi(env, napi_delete_element);
|
|
}
|
|
|
|
static napi_value DefineProperties(napi_env env, napi_callback_info info) {
|
|
napi_value object, return_value;
|
|
|
|
napi_property_descriptor desc = {
|
|
"prop", NULL, DefineProperties, NULL, NULL, NULL, napi_enumerable, NULL
|
|
};
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &object));
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_define_properties(NULL, object, 1, &desc));
|
|
|
|
napi_define_properties(env, NULL, 1, &desc);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_define_properties(env, object, 1, NULL);
|
|
add_last_status(env, "descriptorListIsNull", return_value);
|
|
|
|
desc.utf8name = NULL;
|
|
napi_define_properties(env, object, 1, NULL);
|
|
add_last_status(env, "utf8nameIsNull", return_value);
|
|
desc.utf8name = "prop";
|
|
|
|
desc.method = NULL;
|
|
napi_define_properties(env, object, 1, NULL);
|
|
add_last_status(env, "methodIsNull", return_value);
|
|
desc.method = DefineProperties;
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetPropertyNames(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, props;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_property_names(NULL, return_value, &props));
|
|
|
|
napi_get_property_names(env, NULL, &props);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_property_names(env, return_value, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetAllPropertyNames(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, props;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_all_property_names(NULL,
|
|
return_value,
|
|
napi_key_own_only,
|
|
napi_key_writable,
|
|
napi_key_keep_numbers,
|
|
&props));
|
|
|
|
napi_get_all_property_names(env,
|
|
NULL,
|
|
napi_key_own_only,
|
|
napi_key_writable,
|
|
napi_key_keep_numbers,
|
|
&props);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_all_property_names(env,
|
|
return_value,
|
|
napi_key_own_only,
|
|
napi_key_writable,
|
|
napi_key_keep_numbers,
|
|
NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
static napi_value GetPrototype(napi_env env, napi_callback_info info) {
|
|
napi_value return_value, proto;
|
|
|
|
NODE_API_CALL(env, napi_create_object(env, &return_value));
|
|
|
|
add_returned_status(env,
|
|
"envIsNull",
|
|
return_value,
|
|
"Invalid argument",
|
|
napi_invalid_arg,
|
|
napi_get_prototype(NULL, return_value, &proto));
|
|
|
|
napi_get_prototype(env, NULL, &proto);
|
|
add_last_status(env, "objectIsNull", return_value);
|
|
|
|
napi_get_prototype(env, return_value, NULL);
|
|
add_last_status(env, "valueIsNull", return_value);
|
|
|
|
return return_value;
|
|
}
|
|
|
|
void init_test_null(napi_env env, napi_value exports) {
|
|
napi_value test_null;
|
|
|
|
const napi_property_descriptor test_null_props[] = {
|
|
DECLARE_NODE_API_PROPERTY("setProperty", SetProperty),
|
|
DECLARE_NODE_API_PROPERTY("getProperty", GetProperty),
|
|
DECLARE_NODE_API_PROPERTY("hasProperty", HasProperty),
|
|
DECLARE_NODE_API_PROPERTY("hasOwnProperty", HasOwnProperty),
|
|
DECLARE_NODE_API_PROPERTY("deleteProperty", DeleteProperty),
|
|
DECLARE_NODE_API_PROPERTY("setNamedProperty", SetNamedProperty),
|
|
DECLARE_NODE_API_PROPERTY("getNamedProperty", GetNamedProperty),
|
|
DECLARE_NODE_API_PROPERTY("hasNamedProperty", HasNamedProperty),
|
|
DECLARE_NODE_API_PROPERTY("setElement", SetElement),
|
|
DECLARE_NODE_API_PROPERTY("getElement", GetElement),
|
|
DECLARE_NODE_API_PROPERTY("hasElement", HasElement),
|
|
DECLARE_NODE_API_PROPERTY("deleteElement", DeleteElement),
|
|
DECLARE_NODE_API_PROPERTY("defineProperties", DefineProperties),
|
|
DECLARE_NODE_API_PROPERTY("getPropertyNames", GetPropertyNames),
|
|
DECLARE_NODE_API_PROPERTY("getAllPropertyNames", GetAllPropertyNames),
|
|
DECLARE_NODE_API_PROPERTY("getPrototype", GetPrototype),
|
|
};
|
|
|
|
NODE_API_CALL_RETURN_VOID(env, napi_create_object(env, &test_null));
|
|
NODE_API_CALL_RETURN_VOID(env, napi_define_properties(
|
|
env, test_null, sizeof(test_null_props) / sizeof(*test_null_props),
|
|
test_null_props));
|
|
|
|
const napi_property_descriptor test_null_set = {
|
|
"testNull", NULL, NULL, NULL, NULL, test_null, napi_enumerable, NULL
|
|
};
|
|
|
|
NODE_API_CALL_RETURN_VOID(env,
|
|
napi_define_properties(env, exports, 1, &test_null_set));
|
|
}
|