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),

`