test: cover napi_get/set/has_named_property() · nodejs/node@baa54a5 (original) (raw)
`@@ -30,6 +30,39 @@ static napi_value Get(napi_env env, napi_callback_info info) {
`
30
30
`return output;
`
31
31
`}
`
32
32
``
``
33
`+
static napi_value GetNamed(napi_env env, napi_callback_info info) {
`
``
34
`+
size_t argc = 2;
`
``
35
`+
napi_value args[2];
`
``
36
`+
char key[256] = "";
`
``
37
`+
size_t key_length;
`
``
38
`+
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
`
``
39
+
``
40
`+
NAPI_ASSERT(env, argc >= 2, "Wrong number of arguments");
`
``
41
+
``
42
`+
napi_valuetype value_type0;
`
``
43
`+
NAPI_CALL(env, napi_typeof(env, args[0], &value_type0));
`
``
44
+
``
45
`+
NAPI_ASSERT(env, value_type0 == napi_object,
`
``
46
`+
"Wrong type of arguments. Expects an object as first argument.");
`
``
47
+
``
48
`+
napi_valuetype value_type1;
`
``
49
`+
NAPI_CALL(env, napi_typeof(env, args[1], &value_type1));
`
``
50
+
``
51
`+
NAPI_ASSERT(env, value_type1 == napi_string,
`
``
52
`+
"Wrong type of arguments. Expects a string as second.");
`
``
53
+
``
54
`+
napi_value object = args[0];
`
``
55
`+
NAPI_CALL(env,
`
``
56
`+
napi_get_value_string_utf8(env, args[1], key, 255, &key_length));
`
``
57
`+
key[255] = 0;
`
``
58
`+
NAPI_ASSERT(env, key_length <= 255,
`
``
59
`+
"Cannot accommodate keys longer than 255 bytes");
`
``
60
`+
napi_value output;
`
``
61
`+
NAPI_CALL(env, napi_get_named_property(env, object, key, &output));
`
``
62
+
``
63
`+
return output;
`
``
64
`+
}
`
``
65
+
33
66
`static napi_value Set(napi_env env, napi_callback_info info) {
`
34
67
`size_t argc = 3;
`
35
68
`napi_value args[3];
`
`@@ -57,6 +90,41 @@ static napi_value Set(napi_env env, napi_callback_info info) {
`
57
90
`return valuetrue;
`
58
91
`}
`
59
92
``
``
93
`+
static napi_value SetNamed(napi_env env, napi_callback_info info) {
`
``
94
`+
size_t argc = 3;
`
``
95
`+
napi_value args[3];
`
``
96
`+
char key[256] = "";
`
``
97
`+
size_t key_length;
`
``
98
`+
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
`
``
99
+
``
100
`+
NAPI_ASSERT(env, argc >= 3, "Wrong number of arguments");
`
``
101
+
``
102
`+
napi_valuetype value_type0;
`
``
103
`+
NAPI_CALL(env, napi_typeof(env, args[0], &value_type0));
`
``
104
+
``
105
`+
NAPI_ASSERT(env, value_type0 == napi_object,
`
``
106
`+
"Wrong type of arguments. Expects an object as first argument.");
`
``
107
+
``
108
`+
napi_valuetype value_type1;
`
``
109
`+
NAPI_CALL(env, napi_typeof(env, args[1], &value_type1));
`
``
110
+
``
111
`+
NAPI_ASSERT(env, value_type1 == napi_string,
`
``
112
`+
"Wrong type of arguments. Expects a string as second.");
`
``
113
+
``
114
`+
NAPI_CALL(env,
`
``
115
`+
napi_get_value_string_utf8(env, args[1], key, 255, &key_length));
`
``
116
`+
key[255] = 0;
`
``
117
`+
NAPI_ASSERT(env, key_length <= 255,
`
``
118
`+
"Cannot accommodate keys longer than 255 bytes");
`
``
119
+
``
120
`+
NAPI_CALL(env, napi_set_named_property(env, args[0], key, args[2]));
`
``
121
+
``
122
`+
napi_value value_true;
`
``
123
`+
NAPI_CALL(env, napi_get_boolean(env, true, &value_true));
`
``
124
+
``
125
`+
return value_true;
`
``
126
`+
}
`
``
127
+
60
128
`static napi_value Has(napi_env env, napi_callback_info info) {
`
61
129
`size_t argc = 2;
`
62
130
`napi_value args[2];
`
`@@ -85,6 +153,42 @@ static napi_value Has(napi_env env, napi_callback_info info) {
`
85
153
`return ret;
`
86
154
`}
`
87
155
``
``
156
`+
static napi_value HasNamed(napi_env env, napi_callback_info info) {
`
``
157
`+
size_t argc = 2;
`
``
158
`+
napi_value args[2];
`
``
159
`+
char key[256] = "";
`
``
160
`+
size_t key_length;
`
``
161
`+
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
`
``
162
+
``
163
`+
NAPI_ASSERT(env, argc >= 2, "Wrong number of arguments");
`
``
164
+
``
165
`+
napi_valuetype value_type0;
`
``
166
`+
NAPI_CALL(env, napi_typeof(env, args[0], &value_type0));
`
``
167
+
``
168
`+
NAPI_ASSERT(env, value_type0 == napi_object,
`
``
169
`+
"Wrong type of arguments. Expects an object as first argument.");
`
``
170
+
``
171
`+
napi_valuetype value_type1;
`
``
172
`+
NAPI_CALL(env, napi_typeof(env, args[1], &value_type1));
`
``
173
+
``
174
`+
NAPI_ASSERT(env, value_type1 == napi_string || value_type1 == napi_symbol,
`
``
175
`+
"Wrong type of arguments. Expects a string as second.");
`
``
176
+
``
177
`+
NAPI_CALL(env,
`
``
178
`+
napi_get_value_string_utf8(env, args[1], key, 255, &key_length));
`
``
179
`+
key[255] = 0;
`
``
180
`+
NAPI_ASSERT(env, key_length <= 255,
`
``
181
`+
"Cannot accommodate keys longer than 255 bytes");
`
``
182
+
``
183
`+
bool has_property;
`
``
184
`+
NAPI_CALL(env, napi_has_named_property(env, args[0], key, &has_property));
`
``
185
+
``
186
`+
napi_value ret;
`
``
187
`+
NAPI_CALL(env, napi_get_boolean(env, has_property, &ret));
`
``
188
+
``
189
`+
return ret;
`
``
190
`+
}
`
``
191
+
88
192
`static napi_value HasOwn(napi_env env, napi_callback_info info) {
`
89
193
`size_t argc = 2;
`
90
194
`napi_value args[2];
`
`@@ -220,8 +324,11 @@ EXTERN_C_START
`
220
324
`napi_value Init(napi_env env, napi_value exports) {
`
221
325
`napi_property_descriptor descriptors[] = {
`
222
326
`DECLARE_NAPI_PROPERTY("Get", Get),
`
``
327
`+
DECLARE_NAPI_PROPERTY("GetNamed", GetNamed),
`
223
328
`DECLARE_NAPI_PROPERTY("Set", Set),
`
``
329
`+
DECLARE_NAPI_PROPERTY("SetNamed", SetNamed),
`
224
330
`DECLARE_NAPI_PROPERTY("Has", Has),
`
``
331
`+
DECLARE_NAPI_PROPERTY("HasNamed", HasNamed),
`
225
332
`DECLARE_NAPI_PROPERTY("HasOwn", HasOwn),
`
226
333
`DECLARE_NAPI_PROPERTY("Delete", Delete),
`
227
334
`DECLARE_NAPI_PROPERTY("New", New),
`