@@ -339,6 +339,191 @@ static napi_value Unwrap(napi_env env, napi_callback_info info) {
339339 return result;
340340}
341341
342+ static napi_value TestSetProperty(napi_env env,
343+ napi_callback_info info) {
344+ napi_status ret[4];
345+ napi_value object, key, value, prop_value;
346+
347+ NAPI_CALL(env, napi_create_object(env, &object));
348+
349+ NAPI_CALL(env, napi_create_string_utf8(env, "", NAPI_AUTO_LENGTH, &key));
350+
351+ NAPI_CALL(env, napi_create_object(env, &value));
352+
353+ ret[0] = napi_set_property(NULL, object, key, value);
354+
355+ ret[1] = napi_set_property(env, NULL, key, value);
356+
357+ ret[2] = napi_set_property(env, object, NULL, value);
358+
359+ ret[3] = napi_set_property(env, object, key, NULL);
360+
361+ NAPI_CALL(env, napi_create_string_utf8(env,
362+ (ret[0] == napi_invalid_arg ?
363+ "pass" : "fail"),
364+ NAPI_AUTO_LENGTH,
365+ &prop_value));
366+ NAPI_CALL(env, napi_set_named_property(env,
367+ object,
368+ "envIsNull",
369+ prop_value));
370+
371+ NAPI_CALL(env, napi_create_string_utf8(env,
372+ (ret[1] == napi_invalid_arg ?
373+ "pass" : "fail"),
374+ NAPI_AUTO_LENGTH,
375+ &prop_value));
376+ NAPI_CALL(env, napi_set_named_property(env,
377+ object,
378+ "objectIsNull",
379+ prop_value));
380+
381+ NAPI_CALL(env, napi_create_string_utf8(env,
382+ (ret[2] == napi_invalid_arg ?
383+ "pass" : "fail"),
384+ NAPI_AUTO_LENGTH,
385+ &prop_value));
386+ NAPI_CALL(env, napi_set_named_property(env,
387+ object,
388+ "keyIsNull",
389+ prop_value));
390+
391+ NAPI_CALL(env, napi_create_string_utf8(env,
392+ (ret[3] == napi_invalid_arg ?
393+ "pass" : "fail"),
394+ NAPI_AUTO_LENGTH,
395+ &prop_value));
396+ NAPI_CALL(env, napi_set_named_property(env,
397+ object,
398+ "valueIsNull",
399+ prop_value));
400+
401+ return object;
402+ }
403+
404+ static napi_value TestHasProperty(napi_env env,
405+ napi_callback_info info) {
406+ napi_status ret[4];
407+ napi_value object, key, prop_result;
408+ bool result;
409+
410+ NAPI_CALL(env, napi_create_object(env, &object));
411+
412+ NAPI_CALL(env, napi_create_string_utf8(env, "", NAPI_AUTO_LENGTH, &key));
413+
414+ ret[0] = napi_has_property(NULL, object, key, &result);
415+
416+ ret[1] = napi_has_property(env, NULL, key, &result);
417+
418+ ret[2] = napi_has_property(env, object, NULL, &result);
419+
420+ ret[3] = napi_has_property(env, object, key, NULL);
421+
422+ NAPI_CALL(env, napi_create_string_utf8(env,
423+ (ret[0] == napi_invalid_arg ?
424+ "pass" : "fail"),
425+ NAPI_AUTO_LENGTH,
426+ &prop_result));
427+ NAPI_CALL(env, napi_set_named_property(env,
428+ object,
429+ "envIsNull",
430+ prop_result));
431+
432+ NAPI_CALL(env, napi_create_string_utf8(env,
433+ (ret[1] == napi_invalid_arg ?
434+ "pass" : "fail"),
435+ NAPI_AUTO_LENGTH,
436+ &prop_result));
437+ NAPI_CALL(env, napi_set_named_property(env,
438+ object,
439+ "objectIsNull",
440+ prop_result));
441+
442+ NAPI_CALL(env, napi_create_string_utf8(env,
443+ (ret[2] == napi_invalid_arg ?
444+ "pass" : "fail"),
445+ NAPI_AUTO_LENGTH,
446+ &prop_result));
447+ NAPI_CALL(env, napi_set_named_property(env,
448+ object,
449+ "keyIsNull",
450+ prop_result));
451+
452+ NAPI_CALL(env, napi_create_string_utf8(env,
453+ (ret[3] == napi_invalid_arg ?
454+ "pass" : "fail"),
455+ NAPI_AUTO_LENGTH,
456+ &prop_result));
457+ NAPI_CALL(env, napi_set_named_property(env,
458+ object,
459+ "resultIsNull",
460+ prop_result));
461+
462+ return object;
463+ }
464+
465+ static napi_value TestGetProperty(napi_env env,
466+ napi_callback_info info) {
467+ napi_status ret[4];
468+ napi_value object, key, result, prop_result;
469+
470+ NAPI_CALL(env, napi_create_object(env, &object));
471+
472+ NAPI_CALL(env, napi_create_string_utf8(env, "", NAPI_AUTO_LENGTH, &key));
473+
474+ NAPI_CALL(env, napi_create_object(env, &result));
475+
476+ ret[0] = napi_get_property(NULL, object, key, &result);
477+
478+ ret[1] = napi_get_property(env, NULL, key, &result);
479+
480+ ret[2] = napi_get_property(env, object, NULL, &result);
481+
482+ ret[3] = napi_get_property(env, object, key, NULL);
483+
484+ NAPI_CALL(env, napi_create_string_utf8(env,
485+ (ret[0] == napi_invalid_arg ?
486+ "pass" : "fail"),
487+ NAPI_AUTO_LENGTH,
488+ &prop_result));
489+ NAPI_CALL(env, napi_set_named_property(env,
490+ object,
491+ "envIsNull",
492+ prop_result));
493+
494+ NAPI_CALL(env, napi_create_string_utf8(env,
495+ (ret[1] == napi_invalid_arg ?
496+ "pass" : "fail"),
497+ NAPI_AUTO_LENGTH,
498+ &prop_result));
499+ NAPI_CALL(env, napi_set_named_property(env,
500+ object,
501+ "objectIsNull",
502+ prop_result));
503+
504+ NAPI_CALL(env, napi_create_string_utf8(env,
505+ (ret[2] == napi_invalid_arg ?
506+ "pass" : "fail"),
507+ NAPI_AUTO_LENGTH,
508+ &prop_result));
509+ NAPI_CALL(env, napi_set_named_property(env,
510+ object,
511+ "keyIsNull",
512+ prop_result));
513+
514+ NAPI_CALL(env, napi_create_string_utf8(env,
515+ (ret[3] == napi_invalid_arg ?
516+ "pass" : "fail"),
517+ NAPI_AUTO_LENGTH,
518+ &prop_result));
519+ NAPI_CALL(env, napi_set_named_property(env,
520+ object,
521+ "resultIsNull",
522+ prop_result));
523+
524+ return object;
525+ }
526+
342527EXTERN_C_START
343528napi_value Init(napi_env env, napi_value exports) {
344529 napi_property_descriptor descriptors[] = {
@@ -355,6 +540,9 @@ napi_value Init(napi_env env, napi_value exports) {
355540 DECLARE_NAPI_PROPERTY("Inflate", Inflate),
356541 DECLARE_NAPI_PROPERTY("Wrap", Wrap),
357542 DECLARE_NAPI_PROPERTY("Unwrap", Unwrap),
543+ DECLARE_NAPI_PROPERTY("TestSetProperty", TestSetProperty),
544+ DECLARE_NAPI_PROPERTY("TestHasProperty", TestHasProperty),
545+ DECLARE_NAPI_PROPERTY("TestGetProperty", TestGetProperty),
358546 };
359547
360548 NAPI_CALL(env, napi_define_properties(
0 commit comments