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