1 // |reftest| shell-option(--enable-uint8array-base64) skip-if(!Uint8Array.fromBase64||!xulRuntime.shell) -- uint8array-base64 is not enabled unconditionally, requires shell-options
2 // Copyright (C) 2024 Kevin Gibbons. All rights reserved.
3 // This code is governed by the BSD license found in the LICENSE file.
5 esid: sec-uint8array.prototype.tobase64
6 description: Uint8Array.prototype.toBase64 checks for detachedness after side-effects are finished
7 includes: [detachArrayBuffer.js]
8 features: [uint8array-base64, TypedArray]
11 var array = new Uint8Array(2);
13 var receiverDetachingOptions = {};
14 Object.defineProperty(receiverDetachingOptions, "alphabet", {
17 $DETACHBUFFER(array.buffer);
21 assert.throws(TypeError, function() {
22 array.toBase64(receiverDetachingOptions);
24 assert.sameValue(getterCalls, 1);
27 var detached = new Uint8Array(2);
28 $DETACHBUFFER(detached.buffer);
30 var sideEffectingOptions = {};
31 Object.defineProperty(sideEffectingOptions, "alphabet", {
37 assert.throws(TypeError, function() {
38 detached.toBase64(sideEffectingOptions);
40 assert.sameValue(getterCalls, 1);