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.setfrombase64
6 description: Uint8Array.prototype.setFromBase64 throws if its first argument is not a string
7 features: [uint8array-base64, TypedArray]
10 var toStringCalls = 0;
11 var throwyToString = {
12 toString: function() {
14 throw new Test262Error("toString called");
18 assert.throws(TypeError, function() {
19 var target = new Uint8Array(10);
20 target.setFromBase64(throwyToString);
22 assert.sameValue(toStringCalls, 0);
25 var optionAccesses = 0;
26 var touchyOptions = {};
27 Object.defineProperty(touchyOptions, "alphabet", {
30 throw new Test262Error("alphabet accessed");
33 Object.defineProperty(touchyOptions, "lastChunkHandling", {
36 throw new Test262Error("lastChunkHandling accessed");
39 assert.throws(TypeError, function() {
40 var target = new Uint8Array(10);
41 target.setFromBase64(throwyToString, touchyOptions);
43 assert.sameValue(toStringCalls, 0);
44 assert.sameValue(optionAccesses, 0);