1 #include <js_native_api.h>
2
3 #include "../common.h"
4 #include "test_null.h"
5
6 #define DECLARE_TEST(charset, str_arg) \
7 static napi_value \
8 test_create_##charset(napi_env env, napi_callback_info info) { \
9 napi_value return_value, result; \
10 NODE_API_CALL(env, napi_create_object(env, &return_value)); \
11 \
12 add_returned_status(env, \
13 "envIsNull", \
14 return_value, \
15 "Invalid argument", \
16 napi_invalid_arg, \
17 napi_create_string_##charset(NULL, \
18 (str_arg), \
19 NAPI_AUTO_LENGTH, \
20 &result)); \
21 \
22 napi_create_string_##charset(env, NULL, NAPI_AUTO_LENGTH, &result); \
23 add_last_status(env, "stringIsNullNonZeroLength", return_value); \
24 \
25 napi_create_string_##charset(env, NULL, 0, &result); \
26 add_last_status(env, "stringIsNullZeroLength", return_value); \
27 \
28 napi_create_string_##charset(env, (str_arg), NAPI_AUTO_LENGTH, NULL); \
29 add_last_status(env, "resultIsNull", return_value); \
30 \
31 return return_value; \
32 }
33
34 static const char16_t something[] = {
35 (char16_t)'s',
36 (char16_t)'o',
37 (char16_t)'m',
38 (char16_t)'e',
39 (char16_t)'t',
40 (char16_t)'h',
41 (char16_t)'i',
42 (char16_t)'n',
43 (char16_t)'g',
44 (char16_t)'\0'
45 };
46
47 DECLARE_TEST(utf8, "something")
48 DECLARE_TEST(latin1, "something")
DECLARE_TESTnull49 DECLARE_TEST(utf16, something)
50
51 void init_test_null(napi_env env, napi_value exports) {
52 napi_value test_null;
53
54 const napi_property_descriptor test_null_props[] = {
55 DECLARE_NODE_API_PROPERTY("test_create_utf8", test_create_utf8),
56 DECLARE_NODE_API_PROPERTY("test_create_latin1", test_create_latin1),
57 DECLARE_NODE_API_PROPERTY("test_create_utf16", test_create_utf16),
58 };
59
60 NODE_API_CALL_RETURN_VOID(env, napi_create_object(env, &test_null));
61 NODE_API_CALL_RETURN_VOID(env, napi_define_properties(
62 env, test_null, sizeof(test_null_props) / sizeof(*test_null_props),
63 test_null_props));
64
65 const napi_property_descriptor test_null_set = {
66 "testNull", NULL, NULL, NULL, NULL, test_null, napi_enumerable, NULL
67 };
68
69 NODE_API_CALL_RETURN_VOID(env,
70 napi_define_properties(env, exports, 1, &test_null_set));
71 }
72