Bug 1885337 - Part 3: Import tests from test262 PR. r=spidermonkey-reviewers,dminor
[gecko.git] / js / src / tests / test262 / prs / 3994 / built-ins / Uint8Array / prototype / setFromBase64 / target-size.js
blob4e38423621efc5eb464adfb675614abf9c7cbcd0
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.
4 /*---
5 esid: sec-uint8array.prototype.setfrombase64
6 description: Uint8Array.prototype.setFromBase64 behavior when target buffer is small
7 includes: [compareArray.js]
8 features: [uint8array-base64, TypedArray]
9 ---*/
11 // buffer too small
12 var target = new Uint8Array([255, 255, 255, 255, 255]);
13 var result = target.setFromBase64('Zm9vYmFy');
14 assert.sameValue(result.read, 4);
15 assert.sameValue(result.written, 3);
16 assert.compareArray(target, [102, 111, 111, 255, 255]);
18 // buffer too small, padded
19 var target = new Uint8Array([255, 255, 255, 255]);
20 var result = target.setFromBase64('Zm9vYmE=');
21 assert.sameValue(result.read, 4);
22 assert.sameValue(result.written, 3);
23 assert.compareArray(target, [102, 111, 111, 255]);
25 // buffer exact
26 var target = new Uint8Array([255, 255, 255, 255, 255, 255]);
27 var result = target.setFromBase64('Zm9vYmFy');
28 assert.sameValue(result.read, 8);
29 assert.sameValue(result.written, 6);
30 assert.compareArray(target, [102, 111, 111, 98, 97, 114]);
32 // buffer exact, padded
33 var target = new Uint8Array([255, 255, 255, 255, 255]);
34 var result = target.setFromBase64('Zm9vYmE=');
35 assert.sameValue(result.read, 8);
36 assert.sameValue(result.written, 5);
37 assert.compareArray(target, [102, 111, 111, 98, 97]);
39 // buffer exact, not padded
40 var target = new Uint8Array([255, 255, 255, 255, 255]);
41 var result = target.setFromBase64('Zm9vYmE');
42 assert.sameValue(result.read, 7);
43 assert.sameValue(result.written, 5);
44 assert.compareArray(target, [102, 111, 111, 98, 97]);
46 // buffer exact, padded, stop-before-partial
47 var target = new Uint8Array([255, 255, 255, 255, 255]);
48 var result = target.setFromBase64('Zm9vYmE=', { lastChunkHandling: 'stop-before-partial' });
49 assert.sameValue(result.read, 8);
50 assert.sameValue(result.written, 5);
51 assert.compareArray(target, [102, 111, 111, 98, 97]);
53 // buffer exact, not padded, stop-before-partial
54 var target = new Uint8Array([255, 255, 255, 255, 255]);
55 var result = target.setFromBase64('Zm9vYmE', { lastChunkHandling: 'stop-before-partial' });
56 assert.sameValue(result.read, 4);
57 assert.sameValue(result.written, 3);
58 assert.compareArray(target, [102, 111, 111, 255, 255]);
60 // buffer too large
61 var target = new Uint8Array([255, 255, 255, 255, 255, 255, 255]);
62 var result = target.setFromBase64('Zm9vYmFy');
63 assert.sameValue(result.read, 8);
64 assert.sameValue(result.written, 6);
65 assert.compareArray(target, [102, 111, 111, 98, 97, 114, 255]);
67 reportCompare(0, 0);