@@ -354,6 +354,51 @@ main (void)
354
354
jerry_release_value (input_buffer );
355
355
}
356
356
357
+ /* Test ArrayBuffer detach */
358
+ {
359
+ const uint32_t length = 1 ;
360
+ jerry_value_t arraybuffer = jerry_create_arraybuffer (length );
361
+ TEST_ASSERT (!jerry_value_is_error (arraybuffer ));
362
+ TEST_ASSERT (jerry_value_is_arraybuffer (arraybuffer ));
363
+ TEST_ASSERT (jerry_get_arraybuffer_byte_length (arraybuffer ) == length );
364
+
365
+ jerry_value_t is_detachable = jerry_is_arraybuffer_detachable (arraybuffer );
366
+ TEST_ASSERT (!jerry_value_is_error (is_detachable ));
367
+ TEST_ASSERT (!jerry_value_to_boolean (is_detachable ));
368
+
369
+ jerry_value_t res = jerry_detach_arraybuffer (arraybuffer );
370
+ TEST_ASSERT (jerry_value_is_error (res ));
371
+
372
+ jerry_release_value (res );
373
+ jerry_release_value (arraybuffer );
374
+ }
375
+
376
+ /* Test external ArrayBuffer detach */
377
+ {
378
+ uint8_t buf [1 ];
379
+ const uint32_t length = 1 ;
380
+ jerry_value_t arraybuffer = jerry_create_arraybuffer_external (length , buf , NULL );
381
+ TEST_ASSERT (!jerry_value_is_error (arraybuffer ));
382
+ TEST_ASSERT (jerry_value_is_arraybuffer (arraybuffer ));
383
+ TEST_ASSERT (jerry_get_arraybuffer_byte_length (arraybuffer ) == length );
384
+
385
+ jerry_value_t is_detachable = jerry_is_arraybuffer_detachable (arraybuffer );
386
+ TEST_ASSERT (!jerry_value_is_error (is_detachable ));
387
+ TEST_ASSERT (jerry_value_to_boolean (is_detachable ));
388
+ jerry_release_value (is_detachable );
389
+
390
+ jerry_value_t res = jerry_detach_arraybuffer (arraybuffer );
391
+ TEST_ASSERT (!jerry_value_is_error (res ));
392
+
393
+ is_detachable = jerry_is_arraybuffer_detachable (arraybuffer );
394
+ TEST_ASSERT (!jerry_value_is_error (is_detachable ));
395
+ TEST_ASSERT (!jerry_value_to_boolean (is_detachable ));
396
+ jerry_release_value (is_detachable );
397
+
398
+ jerry_release_value (res );
399
+ jerry_release_value (arraybuffer );
400
+ }
401
+
357
402
jerry_cleanup ();
358
403
359
404
TEST_ASSERT (callback_called == true);
0 commit comments