excessive-bytelength-throws-sab.js (1640B)
1 // |reftest| skip-if(!this.hasOwnProperty('SharedArrayBuffer')) -- SharedArrayBuffer is not enabled unconditionally 2 // Copyright (C) 2016 the V8 project authors. All rights reserved. 3 // Copyright (C) 2017 Mozilla Corporation. All rights reserved. 4 // This code is governed by the BSD license found in the LICENSE file. 5 6 /*--- 7 esid: sec-dataview-buffer-byteoffset-bytelength 8 description: > 9 Throws RangeError if offset + viewByteLength > bufferByteLength 10 info: | 11 24.2.2.1 DataView (buffer, byteOffset, byteLength ) 12 13 ... 14 10. If byteLength is undefined, then 15 ... 16 11. Else, 17 a. Let viewByteLength be ? ToLength(byteLength). 18 b. If offset+viewByteLength > bufferByteLength, throw a RangeError 19 exception. 20 ... 21 features: [SharedArrayBuffer] 22 ---*/ 23 24 var buffer = new SharedArrayBuffer(3); 25 26 assert.throws(RangeError, function() { 27 new DataView(buffer, 0, 4); 28 }, "offset: 0, length 4"); 29 30 assert.throws(RangeError, function() { 31 new DataView(buffer, 1, 3); 32 }, "offset: 1, length: 3"); 33 34 assert.throws(RangeError, function() { 35 new DataView(buffer, 2, 2); 36 }, "offset: 2, length: 2"); 37 38 assert.throws(RangeError, function() { 39 new DataView(buffer, 3, 1); 40 }, "offset: 3, length: 1"); 41 42 assert.throws(RangeError, function() { 43 new DataView(buffer, 4, 0); 44 }, "offset: 4, length: 0"); 45 46 assert.throws(RangeError, function() { 47 new DataView(buffer, 4, -1); 48 }, "offset: 4, length: -1"); 49 50 assert.throws(RangeError, function() { 51 new DataView(buffer, 4, -Infinity); 52 }, "offset: 4, length: -Infinity"); 53 54 assert.throws(RangeError, function() { 55 new DataView(buffer, 0, Infinity); 56 }, "offset: 0, length: Infinity"); 57 58 reportCompare(0, 0);