• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <js_native_api.h>
2 
3 #include "../common.h"
4 #include "test_null.h"
5 
6 static int some_data = 0;
7 
TestConstructor(napi_env env,napi_callback_info info)8 static napi_value TestConstructor(napi_env env, napi_callback_info info) {
9   return NULL;
10 }
11 
TestDefineClass(napi_env env,napi_callback_info info)12 static napi_value TestDefineClass(napi_env env, napi_callback_info info) {
13   napi_value return_value, cons;
14 
15   const napi_property_descriptor prop =
16       DECLARE_NODE_API_PROPERTY("testConstructor", TestConstructor);
17 
18   NODE_API_CALL(env, napi_create_object(env, &return_value));
19   add_returned_status(env,
20                       "envIsNull",
21                       return_value,
22                       "Invalid argument",
23                       napi_invalid_arg,
24                       napi_define_class(NULL,
25                                         "TestClass",
26                                         NAPI_AUTO_LENGTH,
27                                         TestConstructor,
28                                         &some_data,
29                                         1,
30                                         &prop,
31                                         &cons));
32 
33   napi_define_class(env,
34                     NULL,
35                     NAPI_AUTO_LENGTH,
36                     TestConstructor,
37                     &some_data,
38                     1,
39                     &prop,
40                     &cons);
41   add_last_status(env, "nameIsNull", return_value);
42 
43   napi_define_class(
44       env, "TestClass", 0, TestConstructor, &some_data, 1, &prop, &cons);
45   add_last_status(env, "lengthIsZero", return_value);
46 
47   napi_define_class(
48       env, "TestClass", NAPI_AUTO_LENGTH, NULL, &some_data, 1, &prop, &cons);
49   add_last_status(env, "nativeSideIsNull", return_value);
50 
51   napi_define_class(env,
52                     "TestClass",
53                     NAPI_AUTO_LENGTH,
54                     TestConstructor,
55                     NULL,
56                     1,
57                     &prop,
58                     &cons);
59   add_last_status(env, "dataIsNull", return_value);
60 
61   napi_define_class(env,
62                     "TestClass",
63                     NAPI_AUTO_LENGTH,
64                     TestConstructor,
65                     &some_data,
66                     0,
67                     &prop,
68                     &cons);
69   add_last_status(env, "propsLengthIsZero", return_value);
70 
71   napi_define_class(env,
72                     "TestClass",
73                     NAPI_AUTO_LENGTH,
74                     TestConstructor,
75                     &some_data,
76                     1,
77                     NULL,
78                     &cons);
79   add_last_status(env, "propsIsNull", return_value);
80 
81   napi_define_class(env,
82                     "TestClass",
83                     NAPI_AUTO_LENGTH,
84                     TestConstructor,
85                     &some_data,
86                     1,
87                     &prop,
88                     NULL);
89   add_last_status(env, "resultIsNull", return_value);
90 
91   return return_value;
92 }
93 
init_test_null(napi_env env,napi_value exports)94 void init_test_null(napi_env env, napi_value exports) {
95   napi_value test_null;
96 
97   const napi_property_descriptor test_null_props[] = {
98       DECLARE_NODE_API_PROPERTY("testDefineClass", TestDefineClass),
99   };
100 
101   NODE_API_CALL_RETURN_VOID(env, napi_create_object(env, &test_null));
102   NODE_API_CALL_RETURN_VOID(
103       env,
104       napi_define_properties(env,
105                              test_null,
106                              sizeof(test_null_props) / sizeof(*test_null_props),
107                              test_null_props));
108 
109   NODE_API_CALL_RETURN_VOID(
110       env, napi_set_named_property(env, exports, "testNull", test_null));
111 }
112