0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-24 20:29:23 +01:00
nodejs/test/js-native-api/test_object/test_null.c
Gabriel Schulhof 4b7f23f868 test: rename n-api to node-api
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>
2021-02-06 05:03:38 -08:00

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));
}