@@ -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