• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }