Source code

Revision control

Copy as Markdown

Other Tools

var buffer = new ArrayBuffer(2);
var view = new DataView(buffer);
function check(view) {
for (let fun of ['getInt8', 'setInt8', 'getInt16', 'setInt16']) {
assertThrowsInstanceOf(() => view[fun](-10), RangeError);
assertThrowsInstanceOf(() => view[fun](-Infinity), RangeError);
assertThrowsInstanceOf(() => view[fun](Infinity), RangeError);
assertThrowsInstanceOf(() => view[fun](Math.pow(2, 53)), RangeError);
assertThrowsInstanceOf(() => view[fun](Math.pow(2, 54)), RangeError);
}
}
check(view);
for (let fun of ['getInt8', 'getInt16']) {
assertEq(view[fun](0), 0);
assertEq(view[fun](undefined), 0);
assertEq(view[fun](NaN), 0);
}
if ('detachArrayBuffer' in this) {
// ToIndex is called before detachment check, so we can tell the difference
// between a ToIndex failure and a real out of bounds failure.
detachArrayBuffer(buffer);
check(view);
assertThrowsInstanceOf(() => view.getInt8(0), TypeError);
assertThrowsInstanceOf(() => view.setInt8(0, 0), TypeError);
assertThrowsInstanceOf(() => view.getInt8(Math.pow(2, 53) - 1), TypeError);
assertThrowsInstanceOf(() => view.setInt8(Math.pow(2, 53) - 1, 0), TypeError);
}
reportCompare(0, 0, 'OK');