1 /*
2 * Copyright (c) 2024 SwanLink (Jiangsu) Technology Development Co., LTD.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "napi/native_api.h"
17 #include "napi_arraybuffer_test.h"
18
19 //OH_JSVM_CreateArraybuffer:byteLength 0 + data NULL + result not null -- rst ok
TestCreateArrayBufferCase01(JSVM_Env env,JSVM_CallbackInfo info)20 [[maybe_unused]] JSVM_Value TestCreateArrayBufferCase01(JSVM_Env env, JSVM_CallbackInfo info)
21 {
22 JSVM_Value arrayBuffer = nullptr;
23
24 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, 0, nullptr, &arrayBuffer);
25 if (status != JSVM_OK) {
26 OH_JSVM_ThrowError(env, nullptr, "TestCreateArrayBufferCase01:OH_JSVM_Createarraybuffer Failed");
27 return nullptr;
28 }
29
30 bool setValue = true;
31 JSVM_Value retValue = nullptr;
32 OH_JSVM_GetBoolean(env, setValue, &retValue);
33 return retValue;
34 }
35 //byteLength 10 + data not null + result not null -- rst ok
TestCreateArrayBufferCase02(JSVM_Env env,JSVM_CallbackInfo info)36 [[maybe_unused]] JSVM_Value TestCreateArrayBufferCase02(JSVM_Env env, JSVM_CallbackInfo info)
37 {
38 JSVM_Value arrayBuffer = nullptr;
39 void *arrayBufferPtr = nullptr;
40 const size_t arrayBufferSize = 10;
41
42 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
43 if (status != JSVM_OK) {
44 OH_JSVM_ThrowError(env, nullptr, "TestCreateArrayBufferCase02:OH_JSVM_Createarraybuffer Failed");
45 return nullptr;
46 }
47
48 bool setValue = true;
49 JSVM_Value retValue = nullptr;
50 OH_JSVM_GetBoolean(env, setValue, &retValue);
51 return retValue;
52 }
53 //byteLength JSVM_AUTO_LENGTH + data not null + result not null -- rst ok
TestCreateArrayBufferCase03(JSVM_Env env,JSVM_CallbackInfo info)54 [[maybe_unused]] JSVM_Value TestCreateArrayBufferCase03(JSVM_Env env, JSVM_CallbackInfo info)
55 {
56 JSVM_Value arrayBuffer = nullptr;
57 void *arrayBufferPtr = nullptr;
58
59 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, 1, &arrayBufferPtr, &arrayBuffer);
60 if (status != JSVM_OK) {
61 OH_JSVM_ThrowError(env, nullptr, "TestCreateArrayBufferCase03:OH_JSVM_Createarraybuffer Failed");
62 return nullptr;
63 }
64
65 bool setValue = true;
66 JSVM_Value retValue = nullptr;
67 OH_JSVM_GetBoolean(env, setValue, &retValue);
68 return retValue;
69 }
70 //byteLength 10 + data not null + result NULL
TestCreateArrayBufferCase04(JSVM_Env env,JSVM_CallbackInfo info)71 [[maybe_unused]] JSVM_Value TestCreateArrayBufferCase04(JSVM_Env env, JSVM_CallbackInfo info)
72 {
73 void *arrayBufferPtr = nullptr;
74 const size_t arrayBufferSize = 10;
75
76 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, nullptr);
77 if (status != JSVM_INVALID_ARG) {
78 OH_JSVM_ThrowError(env, nullptr, "TestCreateArrayBufferCase04:OH_JSVM_Createarraybuffer Failed");
79 return nullptr;
80 }
81
82 bool setValue = true;
83 JSVM_Value retValue = nullptr;
84 OH_JSVM_GetBoolean(env, setValue, &retValue);
85 return retValue;
86 }
87 //OH_JSVM_GetArraybufferInfo:arraybuffer obj,Obtain expected data and byteLength
TestGetArrayBufferCase01(JSVM_Env env,JSVM_CallbackInfo info)88 [[maybe_unused]] JSVM_Value TestGetArrayBufferCase01(JSVM_Env env, JSVM_CallbackInfo info)
89 {
90 JSVM_Value arrayBuffer = nullptr;
91 void *arrayBufferPtr = nullptr;
92 size_t arrayBufferSize = 4;
93 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
94 if (status != JSVM_OK) {
95 OH_JSVM_ThrowError(env, nullptr, "TestGetArrayBufferCase01:OH_JSVM_Createarraybuffer Failed.");
96 return nullptr;
97 }
98 void *tmpArrayBufferPtr = nullptr;
99 size_t tmparrayBufferLength = 0;
100 status = OH_JSVM_GetArraybufferInfo(env, arrayBuffer, &tmpArrayBufferPtr, &tmparrayBufferLength);
101 if (status != JSVM_OK) {
102 OH_JSVM_ThrowError(env, nullptr, "TestGetArrayBufferCase01:OH_JSVM_GetArraybufferInfo Failed.");
103 return nullptr;
104 }
105
106 if (tmparrayBufferLength != arrayBufferSize) {
107 OH_JSVM_ThrowError(env, nullptr, "TestGetArrayBufferCase01:arrayBufferLength is abnormal Failed.");
108 return nullptr;
109 }
110
111 bool setValue = true;
112 JSVM_Value retValue = nullptr;
113 OH_JSVM_GetBoolean(env, setValue, &retValue);
114 return retValue;
115 }
116 //not arraybuffer obj,get information failure
TestGetArrayBufferCase02(JSVM_Env env,JSVM_CallbackInfo info)117 [[maybe_unused]] JSVM_Value TestGetArrayBufferCase02(JSVM_Env env, JSVM_CallbackInfo info)
118 {
119 JSVM_Value arrayBuffer = nullptr;
120 void *tmpArrayBufferPtr = nullptr;
121 size_t tmparrayBufferLength = 0;
122 JSVM_Status status = OH_JSVM_GetArraybufferInfo(env, arrayBuffer, &tmpArrayBufferPtr, &tmparrayBufferLength);
123 if (status != JSVM_INVALID_ARG) {
124 OH_JSVM_ThrowError(env, nullptr, "TestGetArrayBufferCase02:OH_JSVM_GetArraybufferInfo Result is Abnormal.");
125 return nullptr;
126 }
127
128 bool setValue = true;
129 JSVM_Value retValue = nullptr;
130 OH_JSVM_GetBoolean(env, setValue, &retValue);
131 return retValue;
132 }
133 //OH_JSVM_IsArraybuffer:value arraybuffer obj + result not null
TestIsArrayBufferCase01(JSVM_Env env,JSVM_CallbackInfo info)134 [[maybe_unused]] JSVM_Value TestIsArrayBufferCase01(JSVM_Env env, JSVM_CallbackInfo info)
135 {
136 JSVM_Value arrayBuffer = nullptr;
137 void *arrayBufferPtr = nullptr;
138 size_t arrayBufferSize = 8;
139 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
140 if (status != JSVM_OK || arrayBuffer == nullptr) {
141 OH_JSVM_ThrowError(env, nullptr, "TestIsArrayBufferCase01:OH_JSVM_CreateArraybuffer Failed.");
142 return nullptr;
143 }
144
145 bool isArrayBuffer = false;
146 OH_JSVM_IsArraybuffer(env, arrayBuffer, &isArrayBuffer);
147 if (!isArrayBuffer) {
148 OH_JSVM_ThrowError(env, nullptr, "TestIsArrayBufferCase01:OH_JSVM_IsArraybuffer Failed.");
149 return nullptr;
150 }
151
152 bool setValue = true;
153 JSVM_Value retValue = nullptr;
154 OH_JSVM_GetBoolean(env, setValue, &retValue);
155 return retValue;
156 }
157 //value not arraybuffer obj + result not null
TestIsArrayBufferCase02(JSVM_Env env,JSVM_CallbackInfo info)158 [[maybe_unused]] JSVM_Value TestIsArrayBufferCase02(JSVM_Env env, JSVM_CallbackInfo info)
159 {
160 JSVM_Value arrayBuffer = nullptr;
161
162 bool isArrayBuffer = false;
163 OH_JSVM_IsArraybuffer(env, arrayBuffer, &isArrayBuffer);
164 if (isArrayBuffer) {
165 OH_JSVM_ThrowError(env, nullptr, "TestIsArrayBufferCase02:OH_JSVM_IsArraybuffer Result is Abnormal.");
166 return nullptr;
167 }
168
169 bool setValue = true;
170 JSVM_Value retValue = nullptr;
171 OH_JSVM_GetBoolean(env, setValue, &retValue);
172 return retValue;
173 }
174 //value arraybuffer obj + result null
TestIsArrayBufferCase03(JSVM_Env env,JSVM_CallbackInfo info)175 [[maybe_unused]] JSVM_Value TestIsArrayBufferCase03(JSVM_Env env, JSVM_CallbackInfo info)
176 {
177 JSVM_Value arrayBuffer = nullptr;
178 void *arrayBufferPtr = nullptr;
179 size_t arrayBufferSize = 2;
180 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
181 if (status != JSVM_OK || arrayBuffer == nullptr) {
182 OH_JSVM_ThrowError(env, nullptr, "TestIsArrayBufferCase03:OH_JSVM_CreateArraybuffer Failed.");
183 return nullptr;
184 }
185
186 status = OH_JSVM_IsArraybuffer(env, arrayBuffer, nullptr);
187 if (status != JSVM_INVALID_ARG) {
188 OH_JSVM_ThrowError(env, nullptr, "TestIsArrayBufferCase03:OH_JSVM_IsArraybuffer Result is Abnormal.");
189 return nullptr;
190 }
191
192 bool setValue = true;
193 JSVM_Value retValue = nullptr;
194 OH_JSVM_GetBoolean(env, setValue, &retValue);
195 return retValue;
196 }
197 //OH_JSVM_DetachArraybuffer:arraybuffer obj,binding typedarray
TestDetachArrayBufferCase01(JSVM_Env env,JSVM_CallbackInfo info)198 [[maybe_unused]] JSVM_Value TestDetachArrayBufferCase01(JSVM_Env env, JSVM_CallbackInfo info)
199 {
200 JSVM_Value arrayBuffer = nullptr;
201 void *arrayBufferPtr = nullptr;
202 const size_t arrayBufferSize = 16;
203 const size_t typedArrayLength = 1;
204 JSVM_Value value = nullptr;
205
206 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
207 if (status != JSVM_OK) {
208 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase01:OH_JSVM_Createarraybuffer Failed");
209 return nullptr;
210 }
211
212 status = OH_JSVM_CreateTypedarray(env, JSVM_INT8_ARRAY, typedArrayLength, arrayBuffer, 0, &value);
213 if (status != JSVM_OK) {
214 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase01:OH_JSVM_CreateTypedarray Failed");
215 return nullptr;
216 }
217
218 status = OH_JSVM_DetachArraybuffer(env, arrayBuffer);
219 if (status != JSVM_OK) {
220 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase01:OH_JSVM_DetachArraybuffer Failed.");
221 return nullptr;
222 }
223
224 bool setValue = true;
225 JSVM_Value retValue = nullptr;
226 OH_JSVM_GetBoolean(env, setValue, &retValue);
227 return retValue;
228 }
229 //arraybuffer obj, binding dataview
TestDetachArrayBufferCase02(JSVM_Env env,JSVM_CallbackInfo info)230 [[maybe_unused]] JSVM_Value TestDetachArrayBufferCase02(JSVM_Env env, JSVM_CallbackInfo info)
231 {
232 JSVM_Value arrayBuffer = nullptr;
233 void *arrayBufferPtr = nullptr;
234 const size_t arrayBufferSize = 2;
235
236 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
237 if (status != JSVM_OK) {
238 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase02:OH_JSVM_Createarraybuffer Failed");
239 return nullptr;
240 }
241
242 JSVM_Value result = nullptr;
243 status = OH_JSVM_CreateDataview(env, 0, arrayBuffer, 0, &result);
244 if (status != JSVM_OK) {
245 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase02:OH_JSVM_CreateDataview Failed");
246 return nullptr;
247 }
248
249 status = OH_JSVM_DetachArraybuffer(env, arrayBuffer);
250 if (status != JSVM_OK) {
251 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase02:OH_JSVM_DetachArraybuffer Failed.");
252 return nullptr;
253 }
254
255 bool setValue = true;
256 JSVM_Value retValue = nullptr;
257 OH_JSVM_GetBoolean(env, setValue, &retValue);
258 return retValue;
259 }
260 //not arraybuffer obj
TestDetachArrayBufferCase03(JSVM_Env env,JSVM_CallbackInfo info)261 [[maybe_unused]] JSVM_Value TestDetachArrayBufferCase03(JSVM_Env env, JSVM_CallbackInfo info)
262 {
263 JSVM_Value object;
264 OH_JSVM_CreateObject(env, &object);
265 JSVM_Status status = OH_JSVM_DetachArraybuffer(env, object);
266 if (status != JSVM_ARRAYBUFFER_EXPECTED) {
267 OH_JSVM_ThrowError(env, nullptr, "TestDetachArrayBufferCase03:DetachArraybuffer Function is Abnormal.");
268 return nullptr;
269 }
270
271 bool setValue = true;
272 JSVM_Value retValue = nullptr;
273 OH_JSVM_GetBoolean(env, setValue, &retValue);
274 return retValue;
275 }
276 //OH_JSVM_IsDetachedArraybuffer:value arraybuffer obj binding typedarray + result not null
TestIsDetachedArraybufferCase01(JSVM_Env env,JSVM_CallbackInfo info)277 [[maybe_unused]] JSVM_Value TestIsDetachedArraybufferCase01(JSVM_Env env, JSVM_CallbackInfo info)
278 {
279 JSVM_Value arrayBuffer = nullptr;
280 void *arrayBufferPtr = nullptr;
281 size_t arrayBufferSize = 16;
282 size_t typedArrayLength = 4;
283
284 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
285 if (status != JSVM_OK) {
286 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase01:OH_JSVM_CreateArraybuffer Failed.");
287 return nullptr;
288 }
289
290 JSVM_Value result;
291 status = OH_JSVM_CreateTypedarray(env, JSVM_INT32_ARRAY, typedArrayLength, arrayBuffer, 0, &result);
292 if (status != JSVM_OK) {
293 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase01:OH_JSVM_CreateTypedarray Failed.");
294 return nullptr;
295 }
296
297 bool isDetachedArrayBuffer = false;
298 OH_JSVM_IsDetachedArraybuffer(env, result, &isDetachedArrayBuffer);
299 if (isDetachedArrayBuffer) {
300 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase01:OH_JSVM_IsDetachedArraybuffer is abnormal.");
301 return nullptr;
302 }
303
304 bool setValue = true;
305 JSVM_Value retValue = nullptr;
306 OH_JSVM_GetBoolean(env, setValue, &retValue);
307 return retValue;
308 }
309 //value arraybuffer obj binding dataview + result not null
TestIsDetachedArraybufferCase02(JSVM_Env env,JSVM_CallbackInfo info)310 [[maybe_unused]] JSVM_Value TestIsDetachedArraybufferCase02(JSVM_Env env, JSVM_CallbackInfo info)
311 {
312 JSVM_Value arrayBuffer = nullptr;
313 void *arrayBufferPtr = nullptr;
314 size_t arrayBufferSize = 16;
315
316 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
317 if (status != JSVM_OK) {
318 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase02:OH_JSVM_CreateArraybuffer Failed.");
319 return nullptr;
320 }
321
322 JSVM_Value result = nullptr;
323 status = OH_JSVM_CreateDataview(env, 0, arrayBuffer, 0, &result);
324 if (status != JSVM_OK) {
325 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase02:OH_JSVM_CreateDataview Failed");
326 return nullptr;
327 }
328
329 bool isDetachedArrayBuffer = false;
330 OH_JSVM_IsDetachedArraybuffer(env, result, &isDetachedArrayBuffer);
331 if (isDetachedArrayBuffer) {
332 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase02:OH_JSVM_IsDetachedArraybuffer is abnormal.");
333 return nullptr;
334 }
335
336 bool setValue = true;
337 JSVM_Value retValue = nullptr;
338 OH_JSVM_GetBoolean(env, setValue, &retValue);
339 return retValue;
340 }
341 //value arraybuffer obj Detach obj + result not null
TestIsDetachedArraybufferCase03(JSVM_Env env,JSVM_CallbackInfo info)342 [[maybe_unused]] JSVM_Value TestIsDetachedArraybufferCase03(JSVM_Env env, JSVM_CallbackInfo info)
343 {
344 JSVM_Value arrayBuffer = nullptr;
345 void *arrayBufferPtr = nullptr;
346 size_t arrayBufferSize = 1;
347
348 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
349 if (status != JSVM_OK) {
350 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase03:OH_JSVM_CreateArraybuffer Failed.");
351 return nullptr;
352 }
353 status = OH_JSVM_DetachArraybuffer(env, arrayBuffer);
354 if (status != JSVM_OK) {
355 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase03:OH_JSVM_DetachArraybuffer Failed.");
356 return nullptr;
357 }
358
359 bool isDetachedArrayBuffer = false;
360 OH_JSVM_IsDetachedArraybuffer(env, arrayBuffer, &isDetachedArrayBuffer);
361 if (!isDetachedArrayBuffer) {
362 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase03:OH_JSVM_IsDetachedArraybuffer Failed.");
363 return nullptr;
364 }
365
366 bool setValue = true;
367 JSVM_Value retValue = nullptr;
368 OH_JSVM_GetBoolean(env, setValue, &retValue);
369 return retValue;
370 }
371 //value not arraybuffer obj + result not null
TestIsDetachedArraybufferCase04(JSVM_Env env,JSVM_CallbackInfo info)372 [[maybe_unused]] JSVM_Value TestIsDetachedArraybufferCase04(JSVM_Env env, JSVM_CallbackInfo info)
373 {
374 JSVM_Value object;
375 OH_JSVM_CreateObject(env, &object);
376 JSVM_Status status = OH_JSVM_DetachArraybuffer(env, object);
377 if (status != JSVM_ARRAYBUFFER_EXPECTED) {
378 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase04:DetachArraybuffer is Abnormal.");
379 return nullptr;
380 }
381
382 bool isDetachedArrayBuffer = false;
383 OH_JSVM_IsDetachedArraybuffer(env, object, &isDetachedArrayBuffer);
384 if (isDetachedArrayBuffer) {
385 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase04:OH_JSVM_IsDetachedArraybuffer is abnormal.");
386 return nullptr;
387 }
388
389 bool setValue = true;
390 JSVM_Value retValue = nullptr;
391 OH_JSVM_GetBoolean(env, setValue, &retValue);
392 return retValue;
393 }
394 //value arraybuffer obj + result NULL
TestIsDetachedArraybufferCase05(JSVM_Env env,JSVM_CallbackInfo info)395 [[maybe_unused]] JSVM_Value TestIsDetachedArraybufferCase05(JSVM_Env env, JSVM_CallbackInfo info)
396 {
397 JSVM_Value arrayBuffer = nullptr;
398 void *arrayBufferPtr = nullptr;
399 size_t arrayBufferSize = 16;
400
401 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
402 if (status != JSVM_OK) {
403 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase05:OH_JSVM_CreateArraybuffer Failed.");
404 return nullptr;
405 }
406
407 status = OH_JSVM_IsDetachedArraybuffer(env, arrayBuffer, nullptr);
408 if (status != JSVM_INVALID_ARG) {
409 OH_JSVM_ThrowError(env, nullptr, "TestIsDetachedArraybufferCase05:OH_JSVM_IsDetachedArraybuffer Failed.");
410 return nullptr;
411 }
412
413 bool setValue = true;
414 JSVM_Value retValue = nullptr;
415 OH_JSVM_GetBoolean(env, setValue, &retValue);
416 return retValue;
417 }
418 //APICombination:createArraybuffer Createarraybuffer -> IsArraybuffer,true -> createTypedarray -> GetArraybufferInfo
419 //-> IsTypedarray, true -> IsDetachedArraybuffer,false -> DetachArraybuffer -> IsTypedarray, false
420 //-> IsDetachedArraybuffer,true
TestCreateAnyBufferDetachedCase01(JSVM_Env env,JSVM_CallbackInfo info)421 [[maybe_unused]] JSVM_Value TestCreateAnyBufferDetachedCase01(JSVM_Env env, JSVM_CallbackInfo info)
422 {
423 JSVM_Value arrayBuffer = nullptr;
424 void *arrayBufferPtr = nullptr;
425 const size_t arrayBufferSize = 4;
426 JSVM_Status status = OH_JSVM_CreateArraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
427 if (status != JSVM_OK || arrayBuffer == nullptr) {
428 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:CreateArraybuffer Failed.");
429 return nullptr;
430 }
431
432 bool isArrayBuffer = false;
433 status = OH_JSVM_IsArraybuffer(env, arrayBuffer, &isArrayBuffer);
434 if (!isArrayBuffer) {
435 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_IsArraybuffer Failed.");
436 return nullptr;
437 }
438
439 const size_t typedArrayLength = 1;
440 JSVM_Value _value;
441 status = OH_JSVM_CreateTypedarray(env, JSVM_INT32_ARRAY, typedArrayLength, arrayBuffer, 0, &_value);
442 if (status != JSVM_OK) {
443 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_CreateTypedarray Failed.");
444 return nullptr;
445 }
446
447 void *data;
448 size_t byteLength = 0;
449 status = OH_JSVM_GetArraybufferInfo(env, _value, &data, &byteLength);
450 if (status != JSVM_INVALID_ARG) {
451 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_GetArraybufferInfo Abnormal.");
452 return nullptr;
453 }
454
455 JSVM_TypedarrayType type;
456 size_t length = 0;
457 void *data1 = nullptr;
458 JSVM_Value retArrayBuffer;
459 size_t byteOffset = -1;
460 status = OH_JSVM_GetTypedarrayInfo(env, _value, &type, &length, &data1, &retArrayBuffer, &byteOffset);
461 if (status != JSVM_OK) {
462 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_GetTypedarrayInfo Failed.");
463 return nullptr;
464 }
465
466 bool isTypedArray = false;
467 status = OH_JSVM_IsTypedarray(env, _value, &isTypedArray);
468 if (!isTypedArray) {
469 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:is not typed array Failed.");
470 return nullptr;
471 }
472
473 bool isDetachedArrayBuffer = false;
474 status = OH_JSVM_IsDetachedArraybuffer(env, arrayBuffer, &isDetachedArrayBuffer);
475 if (isDetachedArrayBuffer) {
476 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_IsDetachedArraybuffer abnormal.");
477 return nullptr;
478 }
479
480 status = OH_JSVM_DetachArraybuffer(env, arrayBuffer);
481 if (status != JSVM_OK) {
482 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_DetachArraybuffer Failed.");
483 return nullptr;
484 }
485
486 status = OH_JSVM_IsTypedarray(env, arrayBuffer, &isTypedArray);
487 if (isTypedArray) {
488 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:typed array abnormal.");
489 return nullptr;
490 }
491
492 status = OH_JSVM_IsDetachedArraybuffer(env, arrayBuffer, &isDetachedArrayBuffer);
493 if (!isDetachedArrayBuffer) {
494 OH_JSVM_ThrowError(env, nullptr, "TestCreateAnyBufferDetachedCase01:OH_JSVM_IsDetachedArraybuffer Failed.");
495 return nullptr;
496 }
497
498 bool setValue = true;
499 JSVM_Value retValue = nullptr;
500 OH_JSVM_GetBoolean(env, setValue, &retValue);
501 return retValue;
502 }