diff --git a/test/built-ins/ArrayBuffer/length-is-absent.js b/test/built-ins/ArrayBuffer/length-is-absent.js index fd657ec2db..dfeeed0eeb 100755 --- a/test/built-ins/ArrayBuffer/length-is-absent.js +++ b/test/built-ins/ArrayBuffer/length-is-absent.js @@ -1,21 +1,18 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. +// Copyright (C) 2016 The V8 Project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: 24.1.2.1 +esid: sec-arraybuffer-length description: > - The `length` parameter must be a positive, numeric integral value. -info: > + Returns an empty instance if length is absent +info: | ArrayBuffer( length ) - ... - 2. Let numberLength be ToNumber(length). - 3. Let byteLength be ToLength(numberLength). - 4. ReturnIfAbrupt(byteLength). - 5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception. - ... + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + 3. Return ? AllocateArrayBuffer(NewTarget, byteLength). ---*/ -assert.throws(RangeError, function() { - new ArrayBuffer(); -}, "`length` parameter absent"); +var buffer = new ArrayBuffer(); + +assert.sameValue(buffer.byteLength, 0); diff --git a/test/built-ins/ArrayBuffer/length-is-not-number.js b/test/built-ins/ArrayBuffer/length-is-not-number.js deleted file mode 100755 index f40a44588e..0000000000 --- a/test/built-ins/ArrayBuffer/length-is-not-number.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.1.2.1 -description: > - The `length` parameter is converted to a number value. -info: > - ArrayBuffer( length ) - - ... - 2. Let numberLength be ToNumber(length). - 3. Let byteLength be ToLength(numberLength). - 4. ReturnIfAbrupt(byteLength). - 5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception. - ... -features: [Symbol] ----*/ - -assert.throws(RangeError, function() { - new ArrayBuffer(undefined); -}, "`length` parameter is undefined"); - -var result = new ArrayBuffer(null); -assert.sameValue(result.byteLength, 0, "`length` parameter is null"); - -var result = new ArrayBuffer(true); -assert.sameValue(result.byteLength, 1, "`length` parameter is a Boolean"); - -var result = new ArrayBuffer(""); -assert.sameValue(result.byteLength, 0, "`length` parameter is a String"); - -assert.throws(TypeError, function() { - new ArrayBuffer(Symbol()); -}, "`length` parameter is a Symbol"); diff --git a/test/built-ins/ArrayBuffer/length-is-too-large-throws.js b/test/built-ins/ArrayBuffer/length-is-too-large-throws.js new file mode 100644 index 0000000000..915796019c --- /dev/null +++ b/test/built-ins/ArrayBuffer/length-is-too-large-throws.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 24.1.2.1 +esid: sec-arraybuffer-length +description: > + Throws a RangeError if length >= 2 ** 53 +info: > + ArrayBuffer( length ) + + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + + ToIndex( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + ... +---*/ + +assert.throws(RangeError, function() { + // Math.pow(2, 53) = 9007199254740992 + new ArrayBuffer(9007199254740992); +}, "`length` parameter is too large"); + +assert.throws(RangeError, function() { + new ArrayBuffer(Infinity); +}, "`length` parameter is positive Infinity"); diff --git a/test/built-ins/ArrayBuffer/negative-length-throws.js b/test/built-ins/ArrayBuffer/negative-length-throws.js new file mode 100644 index 0000000000..0c0302e525 --- /dev/null +++ b/test/built-ins/ArrayBuffer/negative-length-throws.js @@ -0,0 +1,34 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer-length +description: > + Throws a Range Error if length represents an integer < 0 +info: | + ArrayBuffer( length ) + + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + + ToIndex( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + ... +---*/ + +assert.throws(RangeError, function() { + new ArrayBuffer(-1); +}); + +assert.throws(RangeError, function() { + new ArrayBuffer(-1.1); +}); + +assert.throws(RangeError, function() { + new ArrayBuffer(-Infinity); +}); diff --git a/test/built-ins/ArrayBuffer/number-conversion.js b/test/built-ins/ArrayBuffer/number-conversion.js deleted file mode 100755 index 75bbb3b8f6..0000000000 --- a/test/built-ins/ArrayBuffer/number-conversion.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.1.2.1 -description: > - The `length` parameter is converted to a number value. -info: > - ArrayBuffer( length ) - - ... - 2. Let numberLength be ToNumber(length). - ... ----*/ - -var log = ""; -var lengthValue = { - valueOf: function() { - log += "ok"; - return 10; - } -}; - -var arrayBuffer = new ArrayBuffer(lengthValue); - -assert.sameValue(log, "ok"); -assert.sameValue(arrayBuffer.byteLength, 10); diff --git a/test/built-ins/ArrayBuffer/positive-integer-length.js b/test/built-ins/ArrayBuffer/positive-integer-length.js deleted file mode 100755 index f1f40800e3..0000000000 --- a/test/built-ins/ArrayBuffer/positive-integer-length.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.1.2.1 -description: > - The `length` parameter must be a positive, numeric integral value. -info: > - ArrayBuffer( length ) - - ... - 2. Let numberLength be ToNumber(length). - 3. Let byteLength be ToLength(numberLength). - 4. ReturnIfAbrupt(byteLength). - 5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception. - ... ----*/ - -assert.throws(RangeError, function() { - new ArrayBuffer(-10); -}, "`length` parameter is negative"); - -assert.throws(RangeError, function() { - new ArrayBuffer(3.8); -}, "`length` parameter is not integral value"); - -assert.throws(RangeError, function() { - // Math.pow(2, 53) = 9007199254740992 - new ArrayBuffer(9007199254740992); -}, "`length` parameter is too large"); - -assert.throws(RangeError, function() { - new ArrayBuffer(+Infinity); -}, "`length` parameter is positive Infinity"); - -assert.throws(RangeError, function() { - new ArrayBuffer(-Infinity); -}, "`length` parameter is negative Infinity"); - -assert.throws(RangeError, function() { - new ArrayBuffer(NaN); -}, "`length` parameter is NaN"); diff --git a/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js b/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js new file mode 100755 index 0000000000..d14d800680 --- /dev/null +++ b/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js @@ -0,0 +1,21 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer-length +description: > + Throws a TypeError if length is a symbol +info: | + ArrayBuffer( length ) + + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + ... +features: [Symbol] +---*/ + +var s = Symbol(); + +assert.throws(TypeError, function() { + new ArrayBuffer(s); +}, "`length` parameter is a Symbol"); diff --git a/test/built-ins/ArrayBuffer/return-abrupt-from-length.js b/test/built-ins/ArrayBuffer/return-abrupt-from-length.js new file mode 100644 index 0000000000..620c134d0d --- /dev/null +++ b/test/built-ins/ArrayBuffer/return-abrupt-from-length.js @@ -0,0 +1,24 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer-length +description: > + Return abrupt from ToIndex(length) +info: | + ArrayBuffer( length ) + + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + ... +---*/ + +var len = { + valueOf: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + new ArrayBuffer(len); +}); diff --git a/test/built-ins/ArrayBuffer/toindex-length.js b/test/built-ins/ArrayBuffer/toindex-length.js new file mode 100755 index 0000000000..b22694186b --- /dev/null +++ b/test/built-ins/ArrayBuffer/toindex-length.js @@ -0,0 +1,87 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer-length +description: > + The `length` parameter is converted to a value numeric index value. +info: | + ArrayBuffer( length ) + + 1. If NewTarget is undefined, throw a TypeError exception. + 2. Let byteLength be ? ToIndex(length). + 3. Return ? AllocateArrayBuffer(NewTarget, byteLength). + + ToIndex( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + c. Let index be ! ToLength(integerIndex). + d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception. + 3. Return index. +---*/ + +var obj1 = { + valueOf: function() { + return 42; + } +}; + +var obj2 = { + toString: function() { + return 42; + } +}; + +var buffer; + +buffer = new ArrayBuffer(obj1); +assert.sameValue(buffer.byteLength, 42, "object's valueOf"); + +buffer = new ArrayBuffer(obj2); +assert.sameValue(buffer.byteLength, 42, "object's toString"); + +buffer = new ArrayBuffer(""); +assert.sameValue(buffer.byteLength, 0, "the Empty string"); + +buffer = new ArrayBuffer("0"); +assert.sameValue(buffer.byteLength, 0, "string '0'"); + +buffer = new ArrayBuffer("1"); +assert.sameValue(buffer.byteLength, 1, "string '1'"); + +buffer = new ArrayBuffer(true); +assert.sameValue(buffer.byteLength, 1, "true"); + +buffer = new ArrayBuffer(false); +assert.sameValue(buffer.byteLength, 0, "false"); + +buffer = new ArrayBuffer(NaN); +assert.sameValue(buffer.byteLength, 0, "NaN"); + +buffer = new ArrayBuffer(null); +assert.sameValue(buffer.byteLength, 0, "null"); + +buffer = new ArrayBuffer(undefined); +assert.sameValue(buffer.byteLength, 0, "undefined"); + +buffer = new ArrayBuffer(0.1); +assert.sameValue(buffer.byteLength, 0, "0.1"); + +buffer = new ArrayBuffer(0.9); +assert.sameValue(buffer.byteLength, 0, "0.9"); + +buffer = new ArrayBuffer(1.1); +assert.sameValue(buffer.byteLength, 1, "1.1"); + +buffer = new ArrayBuffer(1.9); +assert.sameValue(buffer.byteLength, 1, "1.9"); + +buffer = new ArrayBuffer(-0.1); +assert.sameValue(buffer.byteLength, 0, "-0.1"); + +buffer = new ArrayBuffer(-0.99999); +assert.sameValue(buffer.byteLength, 0, "-0.99999"); diff --git a/test/built-ins/ArrayBuffer/undefined-newtarget.js b/test/built-ins/ArrayBuffer/undefined-newtarget-throws.js similarity index 100% rename from test/built-ins/ArrayBuffer/undefined-newtarget.js rename to test/built-ins/ArrayBuffer/undefined-newtarget-throws.js diff --git a/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js b/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js deleted file mode 100644 index 58d63d8192..0000000000 --- a/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.2.1 -esid: sec-dataview-buffer-byteoffset-bytelength -description: > - Throws a RangeError if ToNumber(byteOffset) diffs ToInteger(byteOffset) -info: | - 24.2.2.1 DataView (buffer, byteOffset, byteLength ) - - ... - 4. Let numberOffset be ? ToNumber(byteOffset). - 5. Let offset be ToInteger(numberOffset). - 6. If numberOffset ≠ offset or offset < 0, throw a RangeError exception. - ... ----*/ - -var ab = new ArrayBuffer(42); - -assert.throws(RangeError, function() { - new DataView(ab, 1.1); -}, "1.1"); - -assert.throws(RangeError, function() { - new DataView(ab, 0.0000001); -}, "0.0000001"); - -assert.throws(RangeError, function() { - new DataView(ab, NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - new DataView(ab, -1.1); -}, "-1.1"); - -assert.throws(RangeError, function() { - new DataView(ab, undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - new DataView(ab); -}, "no byteOffset arg"); diff --git a/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js b/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js index 6430e4df37..de0180c979 100644 --- a/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js +++ b/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js @@ -9,6 +9,9 @@ description: > info: | 24.2.2.1 DataView (buffer, byteOffset, byteLength ) + ... + 8. If byteLength is either not present or undefined, then + a. Let viewByteLength be bufferByteLength - offset. ... 17. Return O. ---*/ diff --git a/test/built-ins/DataView/defined-negative-bytelength.js b/test/built-ins/DataView/defined-negative-bytelength.js deleted file mode 100644 index 808435659d..0000000000 --- a/test/built-ins/DataView/defined-negative-bytelength.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.2.1 -esid: sec-dataview-buffer-byteoffset-bytelength -description: > - Return new instance from negative lengths -info: | - 24.2.2.1 DataView (buffer, byteOffset, byteLength ) - - ... - 17. Return O. ----*/ - -var sample; -var buffer = new ArrayBuffer(2); - -sample = new DataView(buffer, 0, -1); -assert.sameValue(sample.byteLength, 0, "sample.byteLength"); -assert.sameValue(sample.byteOffset, 0, "sample.byteOffset"); -assert.sameValue(sample.buffer, buffer); -assert.sameValue(sample.constructor, DataView); -assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype); - -sample = new DataView(buffer, 0, -Infinity); -assert.sameValue(sample.byteLength, 0, "sample.byteLength"); -assert.sameValue(sample.byteOffset, 0, "sample.byteOffset"); -assert.sameValue(sample.buffer, buffer); -assert.sameValue(sample.constructor, DataView); -assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype); - -sample = new DataView(buffer, 1, -1); -assert.sameValue(sample.byteLength, 0, "sample.byteLength"); -assert.sameValue(sample.byteOffset, 1, "sample.byteOffset"); -assert.sameValue(sample.buffer, buffer); -assert.sameValue(sample.constructor, DataView); -assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype); - -sample = new DataView(buffer, 2, -Infinity); -assert.sameValue(sample.byteLength, 0, "sample.byteLength"); -assert.sameValue(sample.byteOffset, 2, "sample.byteOffset"); -assert.sameValue(sample.buffer, buffer); -assert.sameValue(sample.constructor, DataView); -assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype); diff --git a/test/built-ins/DataView/negative-bytelength-throws.js b/test/built-ins/DataView/negative-bytelength-throws.js new file mode 100644 index 0000000000..ce11b03c55 --- /dev/null +++ b/test/built-ins/DataView/negative-bytelength-throws.js @@ -0,0 +1,44 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview-buffer-byteoffset-bytelength +description: > + Throws a RangeError if ToInteger(byteLength) < 0 +info: | + 24.2.2.1 DataView (buffer, byteOffset, byteLength ) + + ... + 8. If byteLength is either not present or undefined, then + a. Let viewByteLength be bufferByteLength - offset. + 9. Else, + a. Let viewByteLength be ? ToIndex(byteLength). + ... + + ToIndex ( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + ... +---*/ + +var buffer = new ArrayBuffer(2); + +assert.throws(RangeError, function() { + new DataView(buffer, 0, -1); +}, "new DataView(buffer, 0, -1);"); + +assert.throws(RangeError, function() { + new DataView(buffer, 0, -Infinity); +}, "new DataView(buffer, 0, -Infinity);"); + +assert.throws(RangeError, function() { + new DataView(buffer, 1, -1); +}, "new DataView(buffer, 1, -1);"); + +assert.throws(RangeError, function() { + new DataView(buffer, 2, -Infinity); +}, "new DataView(buffer, 2, -Infinity);"); diff --git a/test/built-ins/DataView/negative-byteoffset-throws.js b/test/built-ins/DataView/negative-byteoffset-throws.js new file mode 100644 index 0000000000..18f53dbb31 --- /dev/null +++ b/test/built-ins/DataView/negative-byteoffset-throws.js @@ -0,0 +1,33 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview-buffer-byteoffset-bytelength +description: > + Throws a RangeError if ToInteger(byteOffset) < 0 +info: | + 24.2.2.1 DataView (buffer, byteOffset, byteLength ) + + ... + 4. Let offset be ? ToIndex(byteOffset). + ... + + ToIndex ( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + ... +---*/ + +var buffer = new ArrayBuffer(2); + +assert.throws(RangeError, function() { + new DataView(buffer, -1); +}, "new DataView(buffer, -1);"); + +assert.throws(RangeError, function() { + new DataView(buffer, -Infinity); +}, "new DataView(buffer, -Infinity);"); diff --git a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 9c3dc53c8e..0000000000 --- a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getfloat32 -es6id: 24.2.4.5 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getFloat32(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getFloat32(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getFloat32(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getFloat32(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getFloat32(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getFloat32(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getFloat32(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js index 7e8966f0f0..ef2440d1a2 100644 --- a/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(6); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getFloat32(1.1); -}); assert.throws(RangeError, function() { sample.getFloat32(-1); diff --git a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js similarity index 78% rename from test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js index 4fc7baf8a3..f2298faa59 100644 --- a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js @@ -5,7 +5,7 @@ esid: sec-dataview.prototype.getfloat32 es6id: 24.2.4.5 description: > - Throws a RangeError if getIndex < 0 + Throws a RangeError if ToInteger(byteOffset) < 0 info: | 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] ) @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js deleted file mode 100644 index 207b0055fb..0000000000 --- a/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getfloat32 -es6id: 24.2.4.5 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(8); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 75); -sample.setUint8(1, 75); -sample.setUint8(2, 76); -sample.setUint8(3, 76); -sample.setUint8(4, 75); -sample.setUint8(5, 75); -sample.setUint8(6, 76); -sample.setUint8(7, 76); - -assert.sameValue(sample.getFloat32("", false), 13323340, "'', false"); -assert.sameValue(sample.getFloat32("", true), 53554476, "'', true"); - -assert.sameValue(sample.getFloat32("0", false), 13323340, "'0', false"); -assert.sameValue(sample.getFloat32("0", true), 53554476, "'0', true"); - -assert.sameValue(sample.getFloat32("1", false), 13388875, "'1', false"); -assert.sameValue(sample.getFloat32("1", true), 13388875, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getFloat32(obj1, false), 13388875, "{}.valueOf, false"); -assert.sameValue(sample.getFloat32(obj1, true), 13388875, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getFloat32(obj2, false), 13388875, "{}.toString, false"); -assert.sameValue(sample.getFloat32(obj2, true), 13388875, "{}.toString, true"); - -assert.sameValue(sample.getFloat32(true, false), 13388875, "true, false"); -assert.sameValue(sample.getFloat32(true, true), 13388875, "true, true"); - -assert.sameValue(sample.getFloat32(false, false), 13323340, "false, false"); -assert.sameValue(sample.getFloat32(false, true), 53554476, "false, true"); - -assert.sameValue(sample.getFloat32(null, false), 13323340, "null, false"); -assert.sameValue(sample.getFloat32(null, true), 53554476, "null, true"); diff --git a/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js new file mode 100644 index 0000000000..280a11d46b --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js @@ -0,0 +1,64 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat32 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 75); +sample.setUint8(1, 75); +sample.setUint8(2, 76); +sample.setUint8(3, 76); +sample.setUint8(4, 75); +sample.setUint8(5, 75); +sample.setUint8(6, 76); +sample.setUint8(7, 76); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 2; + } +}; + +assert.sameValue(sample.getFloat32(-0), 13323340, "-0"); +assert.sameValue(sample.getFloat32(obj1), 53292336, "object's valueOf"); +assert.sameValue(sample.getFloat32(obj2), 53554476, "object's toString"); +assert.sameValue(sample.getFloat32(""), 13323340, "the Empty string"); +assert.sameValue(sample.getFloat32("0"), 13323340, "string '0'"); +assert.sameValue(sample.getFloat32("2"), 53554476, "string '2'"); +assert.sameValue(sample.getFloat32(true), 13388875, "true"); +assert.sameValue(sample.getFloat32(false), 13323340, "false"); +assert.sameValue(sample.getFloat32(NaN), 13323340, "NaN"); +assert.sameValue(sample.getFloat32(null), 13323340, "null"); +assert.sameValue(sample.getFloat32(0.1), 13323340, "0.1"); +assert.sameValue(sample.getFloat32(0.9), 13323340, "0.9"); +assert.sameValue(sample.getFloat32(1.1), 13388875, "1.1"); +assert.sameValue(sample.getFloat32(1.9), 13388875, "1.9"); +assert.sameValue(sample.getFloat32(-0.1), 13323340, "-0.1"); +assert.sameValue(sample.getFloat32(-0.99999), 13323340, "-0.99999"); +assert.sameValue(sample.getFloat32(undefined), 13323340, "undefined"); +assert.sameValue(sample.getFloat32(), 13323340, "no arg"); diff --git a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 7f786beceb..0000000000 --- a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getfloat64 -es6id: 24.2.4.6 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getFloat64(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getFloat64(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getFloat64(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getFloat64(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getFloat64(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getFloat64(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getFloat64(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js index 0cd537b058..32947925e2 100644 --- a/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(10); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getFloat64(1.1); -}); assert.throws(RangeError, function() { sample.getFloat64(-1); diff --git a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js similarity index 82% rename from test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js index 0abb4d512f..12dbdcdeb5 100644 --- a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js deleted file mode 100644 index 31e95caad0..0000000000 --- a/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getfloat64 -es6id: 24.2.4.6 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(9); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 67); -sample.setUint8(1, 67); -sample.setUint8(2, 68); -sample.setUint8(3, 68); -sample.setUint8(4, 67); -sample.setUint8(5, 67); -sample.setUint8(6, 68); -sample.setUint8(7, 68); -sample.setUint8(8, 67); - -assert.sameValue(sample.getFloat64("", false), 10846169068898440, "'', false"); -assert.sameValue(sample.getFloat64("", true), 747563348316297500000, "'', true"); - -assert.sameValue(sample.getFloat64("0", false), 10846169068898440, "'0', false"); -assert.sameValue(sample.getFloat64("0", true), 747563348316297500000, "'0', true"); - -assert.sameValue(sample.getFloat64("1", false), 11409110432516230, "'1', false"); -assert.sameValue(sample.getFloat64("1", true), 11409110432516230, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getFloat64(obj1, false), 11409110432516230, "{}.valueOf, false"); -assert.sameValue(sample.getFloat64(obj1, true), 11409110432516230, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getFloat64(obj2, false), 11409110432516230, "{}.toString, false"); -assert.sameValue(sample.getFloat64(obj2, true), 11409110432516230, "{}.toString, true"); - -assert.sameValue(sample.getFloat64(true, false), 11409110432516230, "true, false"); -assert.sameValue(sample.getFloat64(true, true), 11409110432516230, "true, true"); - -assert.sameValue(sample.getFloat64(false, false), 10846169068898440, "false, false"); -assert.sameValue(sample.getFloat64(false, true), 747563348316297500000, "false, true"); - -assert.sameValue(sample.getFloat64(null, false), 10846169068898440, "null, false"); -assert.sameValue(sample.getFloat64(null, true), 747563348316297500000, "null, true"); diff --git a/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js new file mode 100644 index 0000000000..966630a1e6 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js @@ -0,0 +1,69 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat64 +es6id: 24.2.4.6 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 67); +sample.setUint8(1, 67); +sample.setUint8(2, 68); +sample.setUint8(3, 68); +sample.setUint8(4, 67); +sample.setUint8(5, 67); +sample.setUint8(6, 68); +sample.setUint8(7, 68); +sample.setUint8(8, 67); +sample.setUint8(9, 68); +sample.setUint8(10, 68); +sample.setUint8(11, 68); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getFloat64(-0), 10846169068898440, "-0"); +assert.sameValue(sample.getFloat64(obj1), 747563348316297600000, "{}.valueOf"); +assert.sameValue(sample.getFloat64(obj2), 710670423110275600000, "{}.toString"); +assert.sameValue(sample.getFloat64(""), 10846169068898440, "the Empty string"); +assert.sameValue(sample.getFloat64("0"), 10846169068898440, "string '0'"); +assert.sameValue(sample.getFloat64("2"), 747563348316297600000, "string '2'"); +assert.sameValue(sample.getFloat64(true), 11409110432516230, "true"); +assert.sameValue(sample.getFloat64(false), 10846169068898440, "false"); +assert.sameValue(sample.getFloat64(NaN), 10846169068898440, "NaN"); +assert.sameValue(sample.getFloat64(null), 10846169068898440, "null"); +assert.sameValue(sample.getFloat64(0.1), 10846169068898440, "0.1"); +assert.sameValue(sample.getFloat64(0.9), 10846169068898440, "0.9"); +assert.sameValue(sample.getFloat64(1.1), 11409110432516230, "1.1"); +assert.sameValue(sample.getFloat64(1.9), 11409110432516230, "1.9"); +assert.sameValue(sample.getFloat64(-0.1), 10846169068898440, "-0.1"); +assert.sameValue(sample.getFloat64(-0.99999), 10846169068898440, "-0.99999"); +assert.sameValue(sample.getFloat64(undefined), 10846169068898440, "undefined"); +assert.sameValue(sample.getFloat64(), 10846169068898440, "no arg"); diff --git a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js deleted file mode 100644 index c7b6cdf3ec..0000000000 --- a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint16 -es6id: 24.2.4.8 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getInt16(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getInt16(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getInt16(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getInt16(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getInt16(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getInt16(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getInt16(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js index 02e7d7baaf..5d7007553d 100644 --- a/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getInt16(1.1); -}); assert.throws(RangeError, function() { sample.getInt16(-1); diff --git a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js similarity index 82% rename from test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js index 117cff461a..1dd8d6665c 100644 --- a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js deleted file mode 100644 index a5b87ae239..0000000000 --- a/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint16 -es6id: 24.2.4.8 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(3); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 127); -sample.setUint8(1, 255); -sample.setUint8(2, 1); - -assert.sameValue(sample.getInt16("", false), 32767, "'', false"); -assert.sameValue(sample.getInt16("", true), -129, "'', true"); - -assert.sameValue(sample.getInt16("0", false), 32767, "'0', false"); -assert.sameValue(sample.getInt16("0", true), -129, "'0', true"); - -assert.sameValue(sample.getInt16("1", false), -255, "'1', false"); -assert.sameValue(sample.getInt16("1", true), 511, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getInt16(obj1, false), -255, "{}.valueOf, false"); -assert.sameValue(sample.getInt16(obj1, true), 511, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getInt16(obj2, false), -255, "{}.toString, false"); -assert.sameValue(sample.getInt16(obj2, true), 511, "{}.toString, true"); - -assert.sameValue(sample.getInt16(true, false), -255, "true, false"); -assert.sameValue(sample.getInt16(true, true), 511, "true, true"); - -assert.sameValue(sample.getInt16(false, false), 32767, "false, false"); -assert.sameValue(sample.getInt16(false, true), -129, "false, true"); - -assert.sameValue(sample.getInt16(null, false), 32767, "null, false"); -assert.sameValue(sample.getInt16(null, true), -129, "null, true"); diff --git a/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js new file mode 100644 index 0000000000..c8edfbbc05 --- /dev/null +++ b/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js @@ -0,0 +1,61 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getint16 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 127); +sample.setUint8(1, 255); +sample.setUint8(2, 1); +sample.setUint8(3, 127); +sample.setUint8(4, 255); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getInt16(-0), 32767, "-0"); +assert.sameValue(sample.getInt16(obj1), 383, "object's valueOf"); +assert.sameValue(sample.getInt16(obj2), 32767, "object's toString"); +assert.sameValue(sample.getInt16(""), 32767, "the Empty string"); +assert.sameValue(sample.getInt16("0"), 32767, "string '0'"); +assert.sameValue(sample.getInt16("2"), 383, "string '2'"); +assert.sameValue(sample.getInt16(true), -255, "true"); +assert.sameValue(sample.getInt16(false), 32767, "false"); +assert.sameValue(sample.getInt16(NaN), 32767, "NaN"); +assert.sameValue(sample.getInt16(null), 32767, "null"); +assert.sameValue(sample.getInt16(0.1), 32767, "0.1"); +assert.sameValue(sample.getInt16(0.9), 32767, "0.9"); +assert.sameValue(sample.getInt16(1.1), -255, "1.1"); +assert.sameValue(sample.getInt16(1.9), -255, "1.9"); +assert.sameValue(sample.getInt16(-0.1), 32767, "-0.1"); +assert.sameValue(sample.getInt16(-0.99999), 32767, "-0.99999"); +assert.sameValue(sample.getInt16(undefined), 32767, "undefined"); +assert.sameValue(sample.getInt16(), 32767, "no arg"); diff --git a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 4922b78b11..0000000000 --- a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint32 -es6id: 24.2.4.9 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getInt32(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getInt32(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getInt32(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getInt32(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getInt32(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getInt32(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getInt32(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js index 6d1aa431a8..777c6a6226 100644 --- a/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getInt32(1.1); -}); assert.throws(RangeError, function() { sample.getInt32(-1); diff --git a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js similarity index 82% rename from test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js index 9e42898d52..f67bc72e0d 100644 --- a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js deleted file mode 100644 index b4c19962c7..0000000000 --- a/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint32 -es6id: 24.2.4.9 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(5); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 127); -sample.setUint8(1, 255); -sample.setUint8(2, 255); -sample.setUint8(3, 255); -sample.setUint8(4, 128); - -assert.sameValue(sample.getInt32("", false), 2147483647, "'', false"); -assert.sameValue(sample.getInt32("", true), -129, "'', true"); - -assert.sameValue(sample.getInt32("0", false), 2147483647, "'0', false"); -assert.sameValue(sample.getInt32("0", true), -129, "'0', true"); - -assert.sameValue(sample.getInt32("1", false), -128, "'1', false"); -assert.sameValue(sample.getInt32("1", true), -2130706433, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getInt32(obj1, false), -128, "{}.valueOf, false"); -assert.sameValue(sample.getInt32(obj1, true), -2130706433, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getInt32(obj2, false), -128, "{}.toString, false"); -assert.sameValue(sample.getInt32(obj2, true), -2130706433, "{}.toString, true"); - -assert.sameValue(sample.getInt32(true, false), -128, "true, false"); -assert.sameValue(sample.getInt32(true, true), -2130706433, "true, true"); - -assert.sameValue(sample.getInt32(false, false), 2147483647, "false, false"); -assert.sameValue(sample.getInt32(false, true), -129, "false, true"); - -assert.sameValue(sample.getInt32(null, false), 2147483647, "null, false"); -assert.sameValue(sample.getInt32(null, true), -129, "null, true"); diff --git a/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js new file mode 100644 index 0000000000..4e1b88547a --- /dev/null +++ b/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js @@ -0,0 +1,64 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getint32 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 127); +sample.setUint8(1, 255); +sample.setUint8(2, 255); +sample.setUint8(3, 255); +sample.setUint8(4, 128); +sample.setUint8(5, 255); +sample.setUint8(6, 255); +sample.setUint8(7, 255); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getInt32(-0), 2147483647, "-0"); +assert.sameValue(sample.getInt32(obj1), -32513, "object's valueOf"); +assert.sameValue(sample.getInt32(obj2), -8323073, "object's toString"); +assert.sameValue(sample.getInt32(""), 2147483647, "the Empty string"); +assert.sameValue(sample.getInt32("0"), 2147483647, "string '0'"); +assert.sameValue(sample.getInt32("2"), -32513, "string '2'"); +assert.sameValue(sample.getInt32(true), -128, "true"); +assert.sameValue(sample.getInt32(false), 2147483647, "false"); +assert.sameValue(sample.getInt32(NaN), 2147483647, "NaN"); +assert.sameValue(sample.getInt32(null), 2147483647, "null"); +assert.sameValue(sample.getInt32(0.1), 2147483647, "0.1"); +assert.sameValue(sample.getInt32(0.9), 2147483647, "0.9"); +assert.sameValue(sample.getInt32(1.1), -128, "1.1"); +assert.sameValue(sample.getInt32(1.9), -128, "1.9"); +assert.sameValue(sample.getInt32(-0.1), 2147483647, "-0.1"); +assert.sameValue(sample.getInt32(-0.99999), 2147483647, "-0.99999"); +assert.sameValue(sample.getInt32(undefined), 2147483647, "undefined"); +assert.sameValue(sample.getInt32(), 2147483647, "no arg"); diff --git a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js deleted file mode 100644 index e0fe58d338..0000000000 --- a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint8 -es6id: 24.2.4.7 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.7 DataView.prototype.getInt8 ( byteOffset ) - - 1. Let v be the this value. - 2. Return ? GetViewValue(v, byteOffset, true, "Int8"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getInt8(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getInt8(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getInt8(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getInt8(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getInt8(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getInt8(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getInt8(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js index c2ba27aa51..175359727d 100644 --- a/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js @@ -16,10 +16,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getInt8(1.1); -}); assert.throws(RangeError, function() { sample.getInt8(-1); diff --git a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js similarity index 80% rename from test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js index eb69f07635..7f8e0add13 100644 --- a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js @@ -15,9 +15,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js deleted file mode 100644 index 635504ffc7..0000000000 --- a/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getint8 -es6id: 24.2.4.7 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.7 DataView.prototype.getInt8 ( byteOffset ) - - 1. Let v be the this value. - 2. Return ? GetViewValue(v, byteOffset, true, "Int8"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(2); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 39); -sample.setUint8(1, 42); - -assert.sameValue(sample.getInt8(""), 39, "''"); - -assert.sameValue(sample.getInt8("0"), 39, "'0'"); - -assert.sameValue(sample.getInt8("1"), 42, "'1'"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getInt8(obj1), 42, "{}.valueOf"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getInt8(obj2), 42, "{}.toString"); - -assert.sameValue(sample.getInt8(true), 42, "true"); - -assert.sameValue(sample.getInt8(false), 39, "false"); - -assert.sameValue(sample.getInt8(null), 39, "null"); diff --git a/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js new file mode 100644 index 0000000000..465d414a16 --- /dev/null +++ b/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js @@ -0,0 +1,59 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getint8 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.7 DataView.prototype.getInt8 ( byteOffset ) + + 1. Let v be the this value. + 2. Return ? GetViewValue(v, byteOffset, true, "Int8"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 39); +sample.setUint8(1, 42); +sample.setUint8(2, 7); +sample.setUint8(3, 77); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getInt8(-0), 39, "-0"); +assert.sameValue(sample.getInt8(obj1), 7, "object's valueOf"); +assert.sameValue(sample.getInt8(obj2), 77, "object's toString"); +assert.sameValue(sample.getInt8(""), 39, "the Empty string"); +assert.sameValue(sample.getInt8("0"), 39, "string '0'"); +assert.sameValue(sample.getInt8("2"), 7, "string '2'"); +assert.sameValue(sample.getInt8(true), 42, "true"); +assert.sameValue(sample.getInt8(false), 39, "false"); +assert.sameValue(sample.getInt8(NaN), 39, "NaN"); +assert.sameValue(sample.getInt8(null), 39, "null"); +assert.sameValue(sample.getInt8(0.1), 39, "0.1"); +assert.sameValue(sample.getInt8(0.9), 39, "0.9"); +assert.sameValue(sample.getInt8(1.1), 42, "1.1"); +assert.sameValue(sample.getInt8(1.9), 42, "1.9"); +assert.sameValue(sample.getInt8(-0.1), 39, "-0.1"); +assert.sameValue(sample.getInt8(-0.99999), 39, "-0.99999"); +assert.sameValue(sample.getInt8(undefined), 39, "undefined"); +assert.sameValue(sample.getInt8(), 39, "no arg"); diff --git a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 8be032d57f..0000000000 --- a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint16 -es6id: 24.2.4.11 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getUint16(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getUint16(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getUint16(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getUint16(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getUint16(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getUint16(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getUint16(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js index cbebef973c..874c54ad43 100644 --- a/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getUint16(1.1); -}); assert.throws(RangeError, function() { sample.getUint16(-1); diff --git a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js similarity index 82% rename from test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js index 62f15606e2..301b647eba 100644 --- a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js deleted file mode 100644 index 7396559bc2..0000000000 --- a/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint16 -es6id: 24.2.4.11 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(3); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 127); -sample.setUint8(1, 255); -sample.setUint8(2, 1); - -assert.sameValue(sample.getUint16("", false), 32767, "'', false"); -assert.sameValue(sample.getUint16("", true), 65407, "'', true"); - -assert.sameValue(sample.getUint16("0", false), 32767, "'0', false"); -assert.sameValue(sample.getUint16("0", true), 65407, "'0', true"); - -assert.sameValue(sample.getUint16("1", false), 65281, "'1', false"); -assert.sameValue(sample.getUint16("1", true), 511, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getUint16(obj1, false), 65281, "{}.valueOf, false"); -assert.sameValue(sample.getUint16(obj1, true), 511, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getUint16(obj2, false), 65281, "{}.toString, false"); -assert.sameValue(sample.getUint16(obj2, true), 511, "{}.toString, true"); - -assert.sameValue(sample.getUint16(true, false), 65281, "true, false"); -assert.sameValue(sample.getUint16(true, true), 511, "true, true"); - -assert.sameValue(sample.getUint16(false, false), 32767, "false, false"); -assert.sameValue(sample.getUint16(false, true), 65407, "false, true"); - -assert.sameValue(sample.getUint16(null, false), 32767, "null, false"); -assert.sameValue(sample.getUint16(null, true), 65407, "null, true"); diff --git a/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js new file mode 100644 index 0000000000..4958f26bf9 --- /dev/null +++ b/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js @@ -0,0 +1,62 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getuint16 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 127); +sample.setUint8(1, 255); +sample.setUint8(2, 1); +sample.setUint8(3, 127); +sample.setUint8(4, 255); +sample.setUint8(5, 1); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getUint16(-0), 32767, "-0"); +assert.sameValue(sample.getUint16(obj1), 383, "object's valueOf"); +assert.sameValue(sample.getUint16(obj2), 32767, "object's toString"); +assert.sameValue(sample.getUint16(""), 32767, "the Empty string"); +assert.sameValue(sample.getUint16("0"), 32767, "string '0'"); +assert.sameValue(sample.getUint16("2"), 383, "string '2'"); +assert.sameValue(sample.getUint16(true), 65281, "true"); +assert.sameValue(sample.getUint16(false), 32767, "false"); +assert.sameValue(sample.getUint16(NaN), 32767, "NaN"); +assert.sameValue(sample.getUint16(null), 32767, "null"); +assert.sameValue(sample.getUint16(0.1), 32767, "0.1"); +assert.sameValue(sample.getUint16(0.9), 32767, "0.9"); +assert.sameValue(sample.getUint16(1.1), 65281, "1.1"); +assert.sameValue(sample.getUint16(1.9), 65281, "1.9"); +assert.sameValue(sample.getUint16(-0.1), 32767, "-0.1"); +assert.sameValue(sample.getUint16(-0.99999), 32767, "-0.99999"); +assert.sameValue(sample.getUint16(undefined), 32767, "undefined"); +assert.sameValue(sample.getUint16(), 32767, "no arg"); diff --git a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 11eac838d4..0000000000 --- a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint32 -es6id: 24.2.4.12 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getUint32(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getUint32(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getUint32(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getUint32(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getUint32(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getUint32(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getUint32(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js index e993629e33..748a578c03 100644 --- a/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getUint32(1.1); -}); assert.throws(RangeError, function() { sample.getUint32(-1); diff --git a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js similarity index 82% rename from test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js index 54505fedfa..eb10997c43 100644 --- a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js deleted file mode 100644 index 22e8c7bc10..0000000000 --- a/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint32 -es6id: 24.2.4.12 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(5); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 127); -sample.setUint8(1, 255); -sample.setUint8(2, 255); -sample.setUint8(3, 255); -sample.setUint8(4, 128); - -assert.sameValue(sample.getUint32("", false), 2147483647, "'', false"); -assert.sameValue(sample.getUint32("", true), 4294967167, "'', true"); - -assert.sameValue(sample.getUint32("0", false), 2147483647, "'0', false"); -assert.sameValue(sample.getUint32("0", true), 4294967167, "'0', true"); - -assert.sameValue(sample.getUint32("1", false), 4294967168, "'1', false"); -assert.sameValue(sample.getUint32("1", true), 2164260863, "'1', true"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getUint32(obj1, false), 4294967168, "{}.valueOf, false"); -assert.sameValue(sample.getUint32(obj1, true), 2164260863, "{}.valueOf, true"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getUint32(obj2, false), 4294967168, "{}.toString, false"); -assert.sameValue(sample.getUint32(obj2, true), 2164260863, "{}.toString, true"); - -assert.sameValue(sample.getUint32(true, false), 4294967168, "true, false"); -assert.sameValue(sample.getUint32(true, true), 2164260863, "true, true"); - -assert.sameValue(sample.getUint32(false, false), 2147483647, "false, false"); -assert.sameValue(sample.getUint32(false, true), 4294967167, "false, true"); - -assert.sameValue(sample.getUint32(null, false), 2147483647, "null, false"); -assert.sameValue(sample.getUint32(null, true), 4294967167, "null, true"); diff --git a/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js new file mode 100644 index 0000000000..2f9e2fb29e --- /dev/null +++ b/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js @@ -0,0 +1,63 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getuint32 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 127); +sample.setUint8(1, 255); +sample.setUint8(2, 255); +sample.setUint8(3, 255); +sample.setUint8(4, 128); +sample.setUint8(5, 255); +sample.setUint8(6, 128); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getUint32(-0), 2147483647, "-0"); +assert.sameValue(sample.getUint32(obj1), 4294934783, "object's valueOf"); +assert.sameValue(sample.getUint32(obj2), 4286644096, "object's toString"); +assert.sameValue(sample.getUint32(""), 2147483647, "the Empty string"); +assert.sameValue(sample.getUint32("0"), 2147483647, "string '0'"); +assert.sameValue(sample.getUint32("2"), 4294934783, "string '2'"); +assert.sameValue(sample.getUint32(true), 4294967168, "true"); +assert.sameValue(sample.getUint32(false), 2147483647, "false"); +assert.sameValue(sample.getUint32(NaN), 2147483647, "NaN"); +assert.sameValue(sample.getUint32(null), 2147483647, "null"); +assert.sameValue(sample.getUint32(0.1), 2147483647, "0.1"); +assert.sameValue(sample.getUint32(0.9), 2147483647, "0.9"); +assert.sameValue(sample.getUint32(1.1), 4294967168, "1.1"); +assert.sameValue(sample.getUint32(1.9), 4294967168, "1.9"); +assert.sameValue(sample.getUint32(-0.1), 2147483647, "-0.1"); +assert.sameValue(sample.getUint32(-0.99999), 2147483647, "-0.99999"); +assert.sameValue(sample.getUint32(undefined), 2147483647, "undefined"); +assert.sameValue(sample.getUint32(), 2147483647, "no arg"); diff --git a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 9ff4645e62..0000000000 --- a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint8 -es6id: 24.2.4.10 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.10 DataView.prototype.getUint8 ( byteOffset ) - - 1. Let v be the this value. - 2. Return ? GetViewValue(v, byteOffset, true, "Uint8"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.getUint8(); -}, "no args"); - -assert.throws(RangeError, function() { - sample.getUint8(undefined); -}, "undefined"); - -assert.throws(RangeError, function() { - sample.getUint8(1.1); -}, "floating number"); - -assert.throws(RangeError, function() { - sample.getUint8(0.1); -}, "0.1"); - -assert.throws(RangeError, function() { - sample.getUint8(NaN); -}, "NaN"); - -assert.throws(RangeError, function() { - sample.getUint8(-0.1); -}, "-0.1"); - -assert.throws(RangeError, function() { - sample.getUint8(-1.1); -}, "-1.1"); diff --git a/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js index c67bfec4ef..16581aaed9 100644 --- a/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js @@ -16,10 +16,10 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.getUint8(1.1); -}); assert.throws(RangeError, function() { sample.getUint8(-1); diff --git a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js similarity index 80% rename from test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js index 3239ff7570..60133a0494 100644 --- a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js @@ -15,9 +15,7 @@ info: | 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ diff --git a/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js deleted file mode 100644 index 6e77bc089c..0000000000 --- a/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.getuint8 -es6id: 24.2.4.10 -description: > - Return values using coerced ToInteger byteOffset values -info: | - 24.2.4.10 DataView.prototype.getUint8 ( byteOffset ) - - 1. Let v be the this value. - 2. Return ? GetViewValue(v, byteOffset, true, "Uint8"). - - 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) - - ... - 14. Let bufferIndex be getIndex + viewOffset. - 15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian). - ... - - 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian - ] ) - - ... - 8. If isLittleEndian is false, reverse the order of the elements of rawValue. - ... -features: [DataView.prototype.setUint8] ----*/ - -var buffer = new ArrayBuffer(2); -var sample = new DataView(buffer, 0); - -sample.setUint8(0, 39); -sample.setUint8(1, 42); - -assert.sameValue(sample.getUint8(""), 39, "''"); - -assert.sameValue(sample.getUint8("0"), 39, "'0'"); - -assert.sameValue(sample.getUint8("1"), 42, "'1'"); - -var obj1 = { - valueOf: function() { - return 1; - } -}; -assert.sameValue(sample.getUint8(obj1), 42, "{}.valueOf"); - -var obj2 = { - toString: function() { - return 1; - } -}; -assert.sameValue(sample.getUint8(obj2), 42, "{}.toString"); - -assert.sameValue(sample.getUint8(true), 42, "true"); - -assert.sameValue(sample.getUint8(false), 39, "false"); - -assert.sameValue(sample.getUint8(null), 39, "null"); diff --git a/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js new file mode 100644 index 0000000000..3f684c83d8 --- /dev/null +++ b/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js @@ -0,0 +1,59 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getuint8 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.10 DataView.prototype.getUint8 ( byteOffset ) + + 1. Let v be the this value. + 2. Return ? GetViewValue(v, byteOffset, true, "Uint8"). + + 24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 39); +sample.setUint8(1, 42); +sample.setUint8(2, 7); +sample.setUint8(3, 77); + +var obj1 = { + valueOf: function() { + return 2; + } +}; + +var obj2 = { + toString: function() { + return 3; + } +}; + +assert.sameValue(sample.getUint8(-0), 39, "-0"); +assert.sameValue(sample.getUint8(obj1), 7, "object's valueOf"); +assert.sameValue(sample.getUint8(obj2), 77, "object's toString"); +assert.sameValue(sample.getUint8(""), 39, "the Empty string"); +assert.sameValue(sample.getUint8("0"), 39, "string '0'"); +assert.sameValue(sample.getUint8("2"), 7, "string '1'"); +assert.sameValue(sample.getUint8(true), 42, "true"); +assert.sameValue(sample.getUint8(false), 39, "false"); +assert.sameValue(sample.getUint8(NaN), 39, "NaN"); +assert.sameValue(sample.getUint8(null), 39, "null"); +assert.sameValue(sample.getUint8(0.1), 39, "0.1"); +assert.sameValue(sample.getUint8(0.9), 39, "0.9"); +assert.sameValue(sample.getUint8(1.1), 42, "1.1"); +assert.sameValue(sample.getUint8(1.9), 42, "1.9"); +assert.sameValue(sample.getUint8(-0.1), 39, "-0.1"); +assert.sameValue(sample.getUint8(-0.99999), 39, "-0.99999"); +assert.sameValue(sample.getUint8(undefined), 39, "undefined"); +assert.sameValue(sample.getUint8(), 39, "no arg"); diff --git a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index d76ed7d0be..0000000000 --- a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setfloat32 -es6id: 24.2.4.13 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getFloat32] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setFloat32(); -}, "no args"); -assert.sameValue(sample.getFloat32(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getFloat32(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getFloat32(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getFloat32(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getFloat32(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getFloat32(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat32(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getFloat32(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js index 371d440b16..4e101c3bc7 100644 --- a/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setFloat32(1.1, 0); -}); assert.throws(RangeError, function() { sample.setFloat32(-1, 0); diff --git a/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js index 6e6666e7b0..34cf980535 100755 --- a/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js @@ -4,8 +4,7 @@ /*--- esid: sec-dataview.prototype.setfloat32 description: > - RangeError exception for negative or non-integral index is thrown before - the value conversion. + RangeError exception for negative index is thrown before the value conversion. info: > ... 3. Return SetViewValue(v, byteOffset, littleEndian, "Float32", value). @@ -13,10 +12,7 @@ info: > 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ToNumber(requestIndex). - 5. Let getIndex be ? ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 7. Let numberValue be ? ToNumber(value). + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ @@ -28,14 +24,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setFloat32(NaN, poisoned); -}, "setFloat32(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32(1.5, poisoned); -}, "setFloat32(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setFloat32(-1.5, poisoned); }, "setFloat32(-1.5, poisoned)"); @@ -47,40 +35,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setFloat32(-Infinity, poisoned); }, "setFloat32(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32(undefined, poisoned); -}, "setFloat32(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('invalid', poisoned); -}, "setFloat32('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('NaN', poisoned); -}, "setFloat32('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('1.5', poisoned); -}, "setFloat32('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('-1.5', poisoned); -}, "setFloat32('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('-1', poisoned); -}, "setFloat32('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat32('-Infinity', poisoned); -}, "setFloat32('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setFloat32(obj, poisoned); -}, "setFloat32(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js b/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js deleted file mode 100755 index 1aec39f338..0000000000 --- a/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.13 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Float32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setFloat32(+0, 1); -assert.sameValue(dataView.getFloat32(0), 1, "setFloat32(+0, 1)"); - -dataView.setFloat32(-0, 2); -assert.sameValue(dataView.getFloat32(0), 2, "setFloat32(-0, 2)"); - -dataView.setFloat32(1, 3); -assert.sameValue(dataView.getFloat32(1), 3, "setFloat32(1, 3)"); - -dataView.setFloat32(null, 4); -assert.sameValue(dataView.getFloat32(0), 4, "setFloat32(null, 4)"); - -dataView.setFloat32(false, 5); -assert.sameValue(dataView.getFloat32(0), 5, "setFloat32(false, 5)"); - -dataView.setFloat32(true, 6); -assert.sameValue(dataView.getFloat32(1), 6, "setFloat32(true, 6)"); - -dataView.setFloat32("", 7); -assert.sameValue(dataView.getFloat32(0), 7, "setFloat32('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setFloat32(2147483648, 8); -}, "setFloat32(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setFloat32(4294967296, 9); -}, "setFloat32(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setFloat32(obj, 10); -assert.sameValue(dataView.getFloat32(1), 10, "setFloat32(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js index c6c37d61bc..1abcccd9ef 100644 --- a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getFloat32] ---*/ diff --git a/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js new file mode 100644 index 0000000000..c35276f0a0 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js @@ -0,0 +1,108 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat32 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float32", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getFloat32] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setFloat32(0, 0); +sample.setFloat32(-0, 42); +assert.sameValue(sample.getFloat32(0), 42, "-0"); + +sample.setFloat32(3, 0); +sample.setFloat32(obj1, 42); +assert.sameValue(sample.getFloat32(3), 42, "object's valueOf"); + +sample.setFloat32(4, 0); +sample.setFloat32(obj2, 42); +assert.sameValue(sample.getFloat32(4), 42, "object's toString"); + +sample.setFloat32(0, 0); +sample.setFloat32("", 42); +assert.sameValue(sample.getFloat32(0), 42, "the Empty string"); + +sample.setFloat32(0, 0); +sample.setFloat32("0", 42); +assert.sameValue(sample.getFloat32(0), 42, "string '0'"); + +sample.setFloat32(2, 0); +sample.setFloat32("2", 42); +assert.sameValue(sample.getFloat32(2), 42, "string '2'"); + +sample.setFloat32(1, 0); +sample.setFloat32(true, 42); +assert.sameValue(sample.getFloat32(1), 42, "true"); + +sample.setFloat32(0, 0); +sample.setFloat32(false, 42); +assert.sameValue(sample.getFloat32(0), 42, "false"); + +sample.setFloat32(0, 0); +sample.setFloat32(NaN, 42); +assert.sameValue(sample.getFloat32(0), 42, "NaN"); + +sample.setFloat32(0, 0); +sample.setFloat32(null, 42); +assert.sameValue(sample.getFloat32(0), 42, "null"); + +sample.setFloat32(0, 0); +sample.setFloat32(0.1, 42); +assert.sameValue(sample.getFloat32(0), 42, "0.1"); + +sample.setFloat32(0, 0); +sample.setFloat32(0.9, 42); +assert.sameValue(sample.getFloat32(0), 42, "0.9"); + +sample.setFloat32(1, 0); +sample.setFloat32(1.1, 42); +assert.sameValue(sample.getFloat32(1), 42, "1.1"); + +sample.setFloat32(1, 0); +sample.setFloat32(1.9, 42); +assert.sameValue(sample.getFloat32(1), 42, "1.9"); + +sample.setFloat32(0, 0); +sample.setFloat32(-0.1, 42); +assert.sameValue(sample.getFloat32(0), 42, "-0.1"); + +sample.setFloat32(0, 0); +sample.setFloat32(-0.99999, 42); +assert.sameValue(sample.getFloat32(0), 42, "-0.99999"); + +sample.setFloat32(0, 0); +sample.setFloat32(undefined, 42); +assert.sameValue(sample.getFloat32(0), 42, "undefined"); + +sample.setFloat32(0, 7); +sample.setFloat32(); +assert.sameValue(sample.getFloat32(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 79eb48e980..0000000000 --- a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setfloat64 -es6id: 24.2.4.14 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float64", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getFloat64] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setFloat64(); -}, "no args"); -assert.sameValue(sample.getFloat64(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getFloat64(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getFloat64(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getFloat64(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getFloat64(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getFloat64(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setFloat64(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getFloat64(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js index 369976baa6..5a80f5641d 100644 --- a/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setFloat64(1.1, 0); -}); assert.throws(RangeError, function() { sample.setFloat64(-1, 0); diff --git a/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js index 9df86cd988..5e66803fb7 100755 --- a/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js @@ -13,10 +13,7 @@ info: > 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ToNumber(requestIndex). - 5. Let getIndex be ? ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 7. Let numberValue be ? ToNumber(value). + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ @@ -28,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setFloat64(NaN, poisoned); -}, "setFloat64(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64(1.5, poisoned); -}, "setFloat64(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setFloat64(-1.5, poisoned); }, "setFloat64(-1.5, poisoned)"); @@ -47,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setFloat64(-Infinity, poisoned); }, "setFloat64(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64(undefined, poisoned); -}, "setFloat64(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('invalid', poisoned); -}, "setFloat64('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('NaN', poisoned); -}, "setFloat64('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('1.5', poisoned); -}, "setFloat64('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('-1.5', poisoned); -}, "setFloat64('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('-1', poisoned); -}, "setFloat64('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setFloat64('-Infinity', poisoned); -}, "setFloat64('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setFloat64(obj, poisoned); -}, "setFloat64(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js b/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js deleted file mode 100755 index 38c4a18313..0000000000 --- a/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.14 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Float64", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(16), 0); - -dataView.setFloat64(+0, 1); -assert.sameValue(dataView.getFloat64(0), 1, "setFloat64(+0, 1)"); - -dataView.setFloat64(-0, 2); -assert.sameValue(dataView.getFloat64(0), 2, "setFloat64(-0, 2)"); - -dataView.setFloat64(1, 3); -assert.sameValue(dataView.getFloat64(1), 3, "setFloat64(1, 3)"); - -dataView.setFloat64(null, 4); -assert.sameValue(dataView.getFloat64(0), 4, "setFloat64(null, 4)"); - -dataView.setFloat64(false, 5); -assert.sameValue(dataView.getFloat64(0), 5, "setFloat64(false, 5)"); - -dataView.setFloat64(true, 6); -assert.sameValue(dataView.getFloat64(1), 6, "setFloat64(true, 6)"); - -dataView.setFloat64("", 7); -assert.sameValue(dataView.getFloat64(0), 7, "setFloat64('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setFloat64(2147483648, 8); -}, "setFloat64(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setFloat64(4294967296, 9); -}, "setFloat64(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setFloat64(obj, 10); -assert.sameValue(dataView.getFloat64(1), 10, "setFloat64(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js index 95572ff02c..940f45bef9 100644 --- a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getFloat64] ---*/ diff --git a/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js new file mode 100644 index 0000000000..d09773c358 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat64 +es6id: 24.2.4.14 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float64", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getFloat64] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setFloat64(0, 0); +sample.setFloat64(-0, 42); +assert.sameValue(sample.getFloat64(0), 42, "-0"); + +sample.setFloat64(3, 0); +sample.setFloat64(obj1, 42); +assert.sameValue(sample.getFloat64(3), 42, "object's valueOf"); + +sample.setFloat64(4, 0); +sample.setFloat64(obj2, 42); +assert.sameValue(sample.getFloat64(4), 42, "object's toString"); + +sample.setFloat64(0, 0); +sample.setFloat64("", 42); +assert.sameValue(sample.getFloat64(0), 42, "the Empty string"); + +sample.setFloat64(0, 0); +sample.setFloat64("0", 42); +assert.sameValue(sample.getFloat64(0), 42, "string '0'"); + +sample.setFloat64(2, 0); +sample.setFloat64("2", 42); +assert.sameValue(sample.getFloat64(2), 42, "string '2'"); + +sample.setFloat64(1, 0); +sample.setFloat64(true, 42); +assert.sameValue(sample.getFloat64(1), 42, "true"); + +sample.setFloat64(0, 0); +sample.setFloat64(false, 42); +assert.sameValue(sample.getFloat64(0), 42, "false"); + +sample.setFloat64(0, 0); +sample.setFloat64(NaN, 42); +assert.sameValue(sample.getFloat64(0), 42, "NaN"); + +sample.setFloat64(0, 0); +sample.setFloat64(null, 42); +assert.sameValue(sample.getFloat64(0), 42, "null"); + +sample.setFloat64(0, 0); +sample.setFloat64(0.1, 42); +assert.sameValue(sample.getFloat64(0), 42, "0.1"); + +sample.setFloat64(0, 0); +sample.setFloat64(0.9, 42); +assert.sameValue(sample.getFloat64(0), 42, "0.9"); + +sample.setFloat64(1, 0); +sample.setFloat64(1.1, 42); +assert.sameValue(sample.getFloat64(1), 42, "1.1"); + +sample.setFloat64(1, 0); +sample.setFloat64(1.9, 42); +assert.sameValue(sample.getFloat64(1), 42, "1.9"); + +sample.setFloat64(0, 0); +sample.setFloat64(-0.1, 42); +assert.sameValue(sample.getFloat64(0), 42, "-0.1"); + +sample.setFloat64(0, 0); +sample.setFloat64(-0.99999, 42); +assert.sameValue(sample.getFloat64(0), 42, "-0.99999"); + +sample.setFloat64(0, 0); +sample.setFloat64(undefined, 42); +assert.sameValue(sample.getFloat64(0), 42, "undefined"); + +sample.setFloat64(0, 7); +sample.setFloat64(); +assert.sameValue(sample.getFloat64(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js deleted file mode 100644 index c3d6159df9..0000000000 --- a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setint16 -es6id: 24.2.4.16 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getInt16] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setInt16(); -}, "no args"); -assert.sameValue(sample.getInt16(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getInt16(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getInt16(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getInt16(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getInt16(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getInt16(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt16(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getInt16(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js index 5cbb432588..765fd8b3e8 100644 --- a/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setInt16(1.1, 0); -}); assert.throws(RangeError, function() { sample.setInt16(-1, 0); diff --git a/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js index 6c18f4fbe9..826cbc8313 100755 --- a/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js @@ -11,12 +11,10 @@ info: > 3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value). 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ? ToInteger(numberIndex). - 5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 6. Let numberValue be ? ToNumber(value). - ... + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... ---*/ var dataView = new DataView(new ArrayBuffer(8), 0); @@ -27,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setInt16(NaN, poisoned); -}, "setInt16(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16(1.5, poisoned); -}, "setInt16(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setInt16(-1.5, poisoned); }, "setInt16(-1.5, poisoned)"); @@ -46,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setInt16(-Infinity, poisoned); }, "setInt16(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16(undefined, poisoned); -}, "setInt16(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('invalid', poisoned); -}, "setInt16('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('NaN', poisoned); -}, "setInt16('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('1.5', poisoned); -}, "setInt16('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('-1.5', poisoned); -}, "setInt16('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('-1', poisoned); -}, "setInt16('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt16('-Infinity', poisoned); -}, "setInt16('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setInt16(obj, poisoned); -}, "setInt16(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setInt16/index-to-integer.js b/test/built-ins/DataView/prototype/setInt16/index-to-integer.js deleted file mode 100755 index d8c226498c..0000000000 --- a/test/built-ins/DataView/prototype/setInt16/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.16 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setInt16(+0, 1); -assert.sameValue(dataView.getInt16(0), 1, "setInt16(+0, 1)"); - -dataView.setInt16(-0, 2); -assert.sameValue(dataView.getInt16(0), 2, "setInt16(-0, 2)"); - -dataView.setInt16(1, 3); -assert.sameValue(dataView.getInt16(1), 3, "setInt16(1, 3)"); - -dataView.setInt16(null, 4); -assert.sameValue(dataView.getInt16(0), 4, "setInt16(null, 4)"); - -dataView.setInt16(false, 5); -assert.sameValue(dataView.getInt16(0), 5, "setInt16(false, 5)"); - -dataView.setInt16(true, 6); -assert.sameValue(dataView.getInt16(1), 6, "setInt16(true, 6)"); - -dataView.setInt16("", 7); -assert.sameValue(dataView.getInt16(0), 7, "setInt16('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setInt16(2147483648, 8); -}, "setInt16(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setInt16(4294967296, 9); -}, "setInt16(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setInt16(obj, 10); -assert.sameValue(dataView.getInt16(1), 10, "setInt16(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js index 4b2e67266b..84778b720a 100644 --- a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getInt16] ---*/ diff --git a/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js new file mode 100644 index 0000000000..33864075fe --- /dev/null +++ b/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setint16 +es6id: 24.2.4.16 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getInt16] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setInt16(0, 0); +sample.setInt16(-0, 42); +assert.sameValue(sample.getInt16(0), 42, "-0"); + +sample.setInt16(3, 0); +sample.setInt16(obj1, 42); +assert.sameValue(sample.getInt16(3), 42, "object's valueOf"); + +sample.setInt16(4, 0); +sample.setInt16(obj2, 42); +assert.sameValue(sample.getInt16(4), 42, "object's toString"); + +sample.setInt16(0, 0); +sample.setInt16("", 42); +assert.sameValue(sample.getInt16(0), 42, "the Empty string"); + +sample.setInt16(0, 0); +sample.setInt16("0", 42); +assert.sameValue(sample.getInt16(0), 42, "string '0'"); + +sample.setInt16(2, 0); +sample.setInt16("2", 42); +assert.sameValue(sample.getInt16(2), 42, "string '2'"); + +sample.setInt16(1, 0); +sample.setInt16(true, 42); +assert.sameValue(sample.getInt16(1), 42, "true"); + +sample.setInt16(0, 0); +sample.setInt16(false, 42); +assert.sameValue(sample.getInt16(0), 42, "false"); + +sample.setInt16(0, 0); +sample.setInt16(NaN, 42); +assert.sameValue(sample.getInt16(0), 42, "NaN"); + +sample.setInt16(0, 0); +sample.setInt16(null, 42); +assert.sameValue(sample.getInt16(0), 42, "null"); + +sample.setInt16(0, 0); +sample.setInt16(0.1, 42); +assert.sameValue(sample.getInt16(0), 42, "0.1"); + +sample.setInt16(0, 0); +sample.setInt16(0.9, 42); +assert.sameValue(sample.getInt16(0), 42, "0.9"); + +sample.setInt16(1, 0); +sample.setInt16(1.1, 42); +assert.sameValue(sample.getInt16(1), 42, "1.1"); + +sample.setInt16(1, 0); +sample.setInt16(1.9, 42); +assert.sameValue(sample.getInt16(1), 42, "1.9"); + +sample.setInt16(0, 0); +sample.setInt16(-0.1, 42); +assert.sameValue(sample.getInt16(0), 42, "-0.1"); + +sample.setInt16(0, 0); +sample.setInt16(-0.99999, 42); +assert.sameValue(sample.getInt16(0), 42, "-0.99999"); + +sample.setInt16(0, 0); +sample.setInt16(undefined, 42); +assert.sameValue(sample.getInt16(0), 42, "undefined"); + +sample.setInt16(0, 7); +sample.setInt16(); +assert.sameValue(sample.getInt16(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index bbc528a9b1..0000000000 --- a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setint32 -es6id: 24.2.4.17 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getInt32] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setInt32(); -}, "no args"); -assert.sameValue(sample.getInt32(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getInt32(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getInt32(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getInt32(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getInt32(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getInt32(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt32(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getInt32(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js index b42eef9316..128e66b0db 100644 --- a/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setInt32(1.1, 0); -}); assert.throws(RangeError, function() { sample.setInt32(-1, 0); diff --git a/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js index 2ee670647b..ee0adecbf3 100755 --- a/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js @@ -13,10 +13,7 @@ info: > 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ToNumber(requestIndex). - 5. Let getIndex be ? ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 7. Let numberValue be ? ToNumber(value). + 4. Let getIndex be ? ToIndex(requestIndex). ... ---*/ @@ -28,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setInt32(NaN, poisoned); -}, "setInt32(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32(1.5, poisoned); -}, "setInt32(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setInt32(-1.5, poisoned); }, "setInt32(-1.5, poisoned)"); @@ -47,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setInt32(-Infinity, poisoned); }, "setInt32(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32(undefined, poisoned); -}, "setInt32(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('invalid', poisoned); -}, "setInt32('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('NaN', poisoned); -}, "setInt32('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('1.5', poisoned); -}, "setInt32('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('-1.5', poisoned); -}, "setInt32('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('-1', poisoned); -}, "setInt32('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt32('-Infinity', poisoned); -}, "setInt32('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setInt32(obj, poisoned); -}, "setInt32(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setInt32/index-to-integer.js b/test/built-ins/DataView/prototype/setInt32/index-to-integer.js deleted file mode 100755 index e9d2a54963..0000000000 --- a/test/built-ins/DataView/prototype/setInt32/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.17 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Int32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setInt32(+0, 1); -assert.sameValue(dataView.getInt32(0), 1, "setInt32(+0, 1)"); - -dataView.setInt32(-0, 2); -assert.sameValue(dataView.getInt32(0), 2, "setInt32(-0, 2)"); - -dataView.setInt32(1, 3); -assert.sameValue(dataView.getInt32(1), 3, "setInt32(1, 3)"); - -dataView.setInt32(null, 4); -assert.sameValue(dataView.getInt32(0), 4, "setInt32(null, 4)"); - -dataView.setInt32(false, 5); -assert.sameValue(dataView.getInt32(0), 5, "setInt32(false, 5)"); - -dataView.setInt32(true, 6); -assert.sameValue(dataView.getInt32(1), 6, "setInt32(true, 6)"); - -dataView.setInt32("", 7); -assert.sameValue(dataView.getInt32(0), 7, "setInt32('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setInt32(2147483648, 8); -}, "setInt32(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setInt32(4294967296, 9); -}, "setInt32(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setInt32(obj, 10); -assert.sameValue(dataView.getInt32(1), 10, "setInt32(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js index 2f08ceac62..db2e5c428c 100644 --- a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getInt32] ---*/ diff --git a/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js new file mode 100644 index 0000000000..f5b45a5ae9 --- /dev/null +++ b/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setint32 +es6id: 24.2.4.17 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int32", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getInt32] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setInt32(0, 0); +sample.setInt32(-0, 42); +assert.sameValue(sample.getInt32(0), 42, "-0"); + +sample.setInt32(3, 0); +sample.setInt32(obj1, 42); +assert.sameValue(sample.getInt32(3), 42, "object's valueOf"); + +sample.setInt32(4, 0); +sample.setInt32(obj2, 42); +assert.sameValue(sample.getInt32(4), 42, "object's toString"); + +sample.setInt32(0, 0); +sample.setInt32("", 42); +assert.sameValue(sample.getInt32(0), 42, "the Empty string"); + +sample.setInt32(0, 0); +sample.setInt32("0", 42); +assert.sameValue(sample.getInt32(0), 42, "string '0'"); + +sample.setInt32(2, 0); +sample.setInt32("2", 42); +assert.sameValue(sample.getInt32(2), 42, "string '2'"); + +sample.setInt32(1, 0); +sample.setInt32(true, 42); +assert.sameValue(sample.getInt32(1), 42, "true"); + +sample.setInt32(0, 0); +sample.setInt32(false, 42); +assert.sameValue(sample.getInt32(0), 42, "false"); + +sample.setInt32(0, 0); +sample.setInt32(NaN, 42); +assert.sameValue(sample.getInt32(0), 42, "NaN"); + +sample.setInt32(0, 0); +sample.setInt32(null, 42); +assert.sameValue(sample.getInt32(0), 42, "null"); + +sample.setInt32(0, 0); +sample.setInt32(0.1, 42); +assert.sameValue(sample.getInt32(0), 42, "0.1"); + +sample.setInt32(0, 0); +sample.setInt32(0.9, 42); +assert.sameValue(sample.getInt32(0), 42, "0.9"); + +sample.setInt32(1, 0); +sample.setInt32(1.1, 42); +assert.sameValue(sample.getInt32(1), 42, "1.1"); + +sample.setInt32(1, 0); +sample.setInt32(1.9, 42); +assert.sameValue(sample.getInt32(1), 42, "1.9"); + +sample.setInt32(0, 0); +sample.setInt32(-0.1, 42); +assert.sameValue(sample.getInt32(0), 42, "-0.1"); + +sample.setInt32(0, 0); +sample.setInt32(-0.99999, 42); +assert.sameValue(sample.getInt32(0), 42, "-0.99999"); + +sample.setInt32(0, 0); +sample.setInt32(undefined, 42); +assert.sameValue(sample.getInt32(0), 42, "undefined"); + +sample.setInt32(0, 7); +sample.setInt32(); +assert.sameValue(sample.getInt32(0), 0, "no arg"); \ No newline at end of file diff --git a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 507836935a..0000000000 --- a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setint8 -es6id: 24.2.4.15 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value ) - - 1. Let v be the this value. - 2. Return ? SetViewValue(v, byteOffset, true, "Int8", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getInt8] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setInt8(); -}, "no args"); -assert.sameValue(sample.getInt8(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getInt8(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getInt8(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getInt8(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getInt8(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getInt8(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setInt8(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getInt8(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js index beab4af062..55eddc992a 100644 --- a/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js @@ -16,10 +16,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setInt8(1.1, 0); -}); assert.throws(RangeError, function() { sample.setInt8(-1, 0); diff --git a/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js index d297712e0c..ca6ce0c5a9 100755 --- a/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js @@ -11,12 +11,10 @@ info: > 3. Return SetViewValue(v, byteOffset, littleEndian, "Int8", value). 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ? ToInteger(numberIndex). - 5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 6. Let numberValue be ? ToNumber(value). - ... + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... ---*/ var dataView = new DataView(new ArrayBuffer(8), 0); @@ -27,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setInt8(NaN, poisoned); -}, "setInt8(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8(1.5, poisoned); -}, "setInt8(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setInt8(-1.5, poisoned); }, "setInt8(-1.5, poisoned)"); @@ -46,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setInt8(-Infinity, poisoned); }, "setInt8(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8(undefined, poisoned); -}, "setInt8(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('invalid', poisoned); -}, "setInt8('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('NaN', poisoned); -}, "setInt8('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('1.5', poisoned); -}, "setInt8('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('-1.5', poisoned); -}, "setInt8('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('-1', poisoned); -}, "setInt8('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setInt8('-Infinity', poisoned); -}, "setInt8('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setInt8(obj, poisoned); -}, "setInt8(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setInt8/index-to-integer.js b/test/built-ins/DataView/prototype/setInt8/index-to-integer.js deleted file mode 100755 index 409f722bbe..0000000000 --- a/test/built-ins/DataView/prototype/setInt8/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.15 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Int8", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setInt8(+0, 1); -assert.sameValue(dataView.getInt8(0), 1, "setInt8(+0, 1)"); - -dataView.setInt8(-0, 2); -assert.sameValue(dataView.getInt8(0), 2, "setInt8(-0, 2)"); - -dataView.setInt8(1, 3); -assert.sameValue(dataView.getInt8(1), 3, "setInt8(1, 3)"); - -dataView.setInt8(null, 4); -assert.sameValue(dataView.getInt8(0), 4, "setInt8(null, 4)"); - -dataView.setInt8(false, 5); -assert.sameValue(dataView.getInt8(0), 5, "setInt8(false, 5)"); - -dataView.setInt8(true, 6); -assert.sameValue(dataView.getInt8(1), 6, "setInt8(true, 6)"); - -dataView.setInt8("", 7); -assert.sameValue(dataView.getInt8(0), 7, "setInt8('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setInt8(2147483648, 8); -}, "setInt8(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setInt8(4294967296, 9); -}, "setInt8(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setInt8(obj, 10); -assert.sameValue(dataView.getInt8(1), 10, "setInt8(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js similarity index 84% rename from test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js index 09b103b754..5709e2ecc0 100644 --- a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js @@ -15,9 +15,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getInt8] ---*/ diff --git a/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js new file mode 100644 index 0000000000..b9022740c2 --- /dev/null +++ b/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js @@ -0,0 +1,108 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setint8 +es6id: 24.2.4.15 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value ) + + 1. Let v be the this value. + 2. Return ? SetViewValue(v, byteOffset, true, "Int8", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getInt8] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setInt8(0, 0); +sample.setInt8(-0, 42); +assert.sameValue(sample.getInt8(0), 42, "-0"); + +sample.setInt8(3, 0); +sample.setInt8(obj1, 42); +assert.sameValue(sample.getInt8(3), 42, "object's valueOf"); + +sample.setInt8(4, 0); +sample.setInt8(obj2, 42); +assert.sameValue(sample.getInt8(4), 42, "object's toString"); + +sample.setInt8(0, 0); +sample.setInt8("", 42); +assert.sameValue(sample.getInt8(0), 42, "the Empty string"); + +sample.setInt8(0, 0); +sample.setInt8("0", 42); +assert.sameValue(sample.getInt8(0), 42, "string '0'"); + +sample.setInt8(2, 0); +sample.setInt8("2", 42); +assert.sameValue(sample.getInt8(2), 42, "string '2'"); + +sample.setInt8(1, 0); +sample.setInt8(true, 42); +assert.sameValue(sample.getInt8(1), 42, "true"); + +sample.setInt8(0, 0); +sample.setInt8(false, 42); +assert.sameValue(sample.getInt8(0), 42, "false"); + +sample.setInt8(0, 0); +sample.setInt8(NaN, 42); +assert.sameValue(sample.getInt8(0), 42, "NaN"); + +sample.setInt8(0, 0); +sample.setInt8(null, 42); +assert.sameValue(sample.getInt8(0), 42, "null"); + +sample.setInt8(0, 0); +sample.setInt8(0.1, 42); +assert.sameValue(sample.getInt8(0), 42, "0.1"); + +sample.setInt8(0, 0); +sample.setInt8(0.9, 42); +assert.sameValue(sample.getInt8(0), 42, "0.9"); + +sample.setInt8(1, 0); +sample.setInt8(1.1, 42); +assert.sameValue(sample.getInt8(1), 42, "1.1"); + +sample.setInt8(1, 0); +sample.setInt8(1.9, 42); +assert.sameValue(sample.getInt8(1), 42, "1.9"); + +sample.setInt8(0, 0); +sample.setInt8(-0.1, 42); +assert.sameValue(sample.getInt8(0), 42, "-0.1"); + +sample.setInt8(0, 0); +sample.setInt8(-0.99999, 42); +assert.sameValue(sample.getInt8(0), 42, "-0.99999"); + +sample.setInt8(0, 0); +sample.setInt8(undefined, 42); +assert.sameValue(sample.getInt8(0), 42, "undefined"); + +sample.setInt8(0, 7); +sample.setInt8(); +assert.sameValue(sample.getInt8(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 92b1c2b4c4..0000000000 --- a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setuint16 -es6id: 24.2.4.19 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint16", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getUint16] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setUint16(); -}, "no args"); -assert.sameValue(sample.getUint16(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getUint16(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getUint16(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getUint16(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getUint16(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getUint16(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint16(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getUint16(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js index 097ab657c0..86f4be4bd9 100644 --- a/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setUint16(1.1, 0); -}); assert.throws(RangeError, function() { sample.setUint16(-1, 0); diff --git a/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js index 35475d172f..6fed3d7b4f 100755 --- a/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js @@ -11,12 +11,10 @@ info: > 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint16", value). 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ? ToInteger(numberIndex). - 5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 6. Let numberValue be ? ToNumber(value). - ... + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... ---*/ var dataView = new DataView(new ArrayBuffer(8), 0); @@ -27,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setUint16(NaN, poisoned); -}, "setUint16(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16(1.5, poisoned); -}, "setUint16(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setUint16(-1.5, poisoned); }, "setUint16(-1.5, poisoned)"); @@ -46,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setUint16(-Infinity, poisoned); }, "setUint16(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16(undefined, poisoned); -}, "setUint16(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('invalid', poisoned); -}, "setUint16('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('NaN', poisoned); -}, "setUint16('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('1.5', poisoned); -}, "setUint16('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('-1.5', poisoned); -}, "setUint16('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('-1', poisoned); -}, "setUint16('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint16('-Infinity', poisoned); -}, "setUint16('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setUint16(obj, poisoned); -}, "setUint16(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setUint16/index-to-integer.js b/test/built-ins/DataView/prototype/setUint16/index-to-integer.js deleted file mode 100755 index fbce423b58..0000000000 --- a/test/built-ins/DataView/prototype/setUint16/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.19 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint16", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setUint16(+0, 1); -assert.sameValue(dataView.getUint16(0), 1, "setUint16(+0, 1)"); - -dataView.setUint16(-0, 2); -assert.sameValue(dataView.getUint16(0), 2, "setUint16(-0, 2)"); - -dataView.setUint16(1, 3); -assert.sameValue(dataView.getUint16(1), 3, "setUint16(1, 3)"); - -dataView.setUint16(null, 4); -assert.sameValue(dataView.getUint16(0), 4, "setUint16(null, 4)"); - -dataView.setUint16(false, 5); -assert.sameValue(dataView.getUint16(0), 5, "setUint16(false, 5)"); - -dataView.setUint16(true, 6); -assert.sameValue(dataView.getUint16(1), 6, "setUint16(true, 6)"); - -dataView.setUint16("", 7); -assert.sameValue(dataView.getUint16(0), 7, "setUint16('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setUint16(2147483648, 8); -}, "setUint16(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setUint16(4294967296, 9); -}, "setUint16(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setUint16(obj, 10); -assert.sameValue(dataView.getUint16(1), 10, "setUint16(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js index 28fea9f791..282a71565a 100644 --- a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getUint16] ---*/ diff --git a/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js new file mode 100644 index 0000000000..703fdedba8 --- /dev/null +++ b/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setuint16 +es6id: 24.2.4.19 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint16", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getUint16] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setUint16(0, 0); +sample.setUint16(-0, 42); +assert.sameValue(sample.getUint16(0), 42, "-0"); + +sample.setUint16(3, 0); +sample.setUint16(obj1, 42); +assert.sameValue(sample.getUint16(3), 42, "object's valueOf"); + +sample.setUint16(4, 0); +sample.setUint16(obj2, 42); +assert.sameValue(sample.getUint16(4), 42, "object's toString"); + +sample.setUint16(0, 0); +sample.setUint16("", 42); +assert.sameValue(sample.getUint16(0), 42, "the Empty string"); + +sample.setUint16(0, 0); +sample.setUint16("0", 42); +assert.sameValue(sample.getUint16(0), 42, "string '0'"); + +sample.setUint16(2, 0); +sample.setUint16("2", 42); +assert.sameValue(sample.getUint16(2), 42, "string '2'"); + +sample.setUint16(1, 0); +sample.setUint16(true, 42); +assert.sameValue(sample.getUint16(1), 42, "true"); + +sample.setUint16(0, 0); +sample.setUint16(false, 42); +assert.sameValue(sample.getUint16(0), 42, "false"); + +sample.setUint16(0, 0); +sample.setUint16(NaN, 42); +assert.sameValue(sample.getUint16(0), 42, "NaN"); + +sample.setUint16(0, 0); +sample.setUint16(null, 42); +assert.sameValue(sample.getUint16(0), 42, "null"); + +sample.setUint16(0, 0); +sample.setUint16(0.1, 42); +assert.sameValue(sample.getUint16(0), 42, "0.1"); + +sample.setUint16(0, 0); +sample.setUint16(0.9, 42); +assert.sameValue(sample.getUint16(0), 42, "0.9"); + +sample.setUint16(1, 0); +sample.setUint16(1.1, 42); +assert.sameValue(sample.getUint16(1), 42, "1.1"); + +sample.setUint16(1, 0); +sample.setUint16(1.9, 42); +assert.sameValue(sample.getUint16(1), 42, "1.9"); + +sample.setUint16(0, 0); +sample.setUint16(-0.1, 42); +assert.sameValue(sample.getUint16(0), 42, "-0.1"); + +sample.setUint16(0, 0); +sample.setUint16(-0.99999, 42); +assert.sameValue(sample.getUint16(0), 42, "-0.99999"); + +sample.setUint16(0, 0); +sample.setUint16(undefined, 42); +assert.sameValue(sample.getUint16(0), 42, "undefined"); + +sample.setUint16(0, 7); +sample.setUint16(); +assert.sameValue(sample.getUint16(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js deleted file mode 100644 index d8327a4fde..0000000000 --- a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setuint32 -es6id: 24.2.4.20 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] ) - - 1. Let v be the this value. - 2. If littleEndian is not present, let littleEndian be false. - 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [DataView.prototype.getUint32] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); - -assert.throws(RangeError, function() { - sample.setUint32(); -}, "no args"); -assert.sameValue(sample.getUint32(0), 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(undefined, 39); -}, "undefined"); -assert.sameValue(sample.getUint32(0), 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(1.1, 39); -}, "floating number"); -assert.sameValue(sample.getUint32(0), 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(0.1, 39); -}, "0.1"); -assert.sameValue(sample.getUint32(0), 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(NaN, 39); -}, "NaN"); -assert.sameValue(sample.getUint32(0), 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(-0.1, 39); -}, "-0.1"); -assert.sameValue(sample.getUint32(0), 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint32(-1.1, 39); -}, "-1.1"); -assert.sameValue(sample.getUint32(0), 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js index 4fe6c41df7..7c9472078a 100644 --- a/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js @@ -17,10 +17,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setUint32(1.1, 0); -}); assert.throws(RangeError, function() { sample.setUint32(-1, 0); diff --git a/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js index b9abf5028d..7bbab801d3 100755 --- a/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js @@ -11,12 +11,10 @@ info: > 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint32", value). 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ? ToInteger(numberIndex). - 5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 6. Let numberValue be ? ToNumber(value). - ... + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... ---*/ var dataView = new DataView(new ArrayBuffer(8), 0); @@ -27,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setUint32(NaN, poisoned); -}, "setUint32(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32(1.5, poisoned); -}, "setUint32(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setUint32(-1.5, poisoned); }, "setUint32(-1.5, poisoned)"); @@ -46,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setUint32(-Infinity, poisoned); }, "setUint32(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32(undefined, poisoned); -}, "setUint32(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('invalid', poisoned); -}, "setUint32('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('NaN', poisoned); -}, "setUint32('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('1.5', poisoned); -}, "setUint32('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('-1.5', poisoned); -}, "setUint32('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('-1', poisoned); -}, "setUint32('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint32('-Infinity', poisoned); -}, "setUint32('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setUint32(obj, poisoned); -}, "setUint32(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setUint32/index-to-integer.js b/test/built-ins/DataView/prototype/setUint32/index-to-integer.js deleted file mode 100755 index 81488f4337..0000000000 --- a/test/built-ins/DataView/prototype/setUint32/index-to-integer.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.20 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint32", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... ----*/ - -var dataView = new DataView(new ArrayBuffer(8), 0); - -dataView.setUint32(+0, 1); -assert.sameValue(dataView.getUint32(0), 1, "setUint32(+0, 1)"); - -dataView.setUint32(-0, 2); -assert.sameValue(dataView.getUint32(0), 2, "setUint32(-0, 2)"); - -dataView.setUint32(1, 3); -assert.sameValue(dataView.getUint32(1), 3, "setUint32(1, 3)"); - -dataView.setUint32(null, 4); -assert.sameValue(dataView.getUint32(0), 4, "setUint32(null, 4)"); - -dataView.setUint32(false, 5); -assert.sameValue(dataView.getUint32(0), 5, "setUint32(false, 5)"); - -dataView.setUint32(true, 6); -assert.sameValue(dataView.getUint32(1), 6, "setUint32(true, 6)"); - -dataView.setUint32("", 7); -assert.sameValue(dataView.getUint32(0), 7, "setUint32('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setUint32(2147483648, 8); -}, "setUint32(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setUint32(4294967296, 9); -}, "setUint32(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setUint32(obj, 10); -assert.sameValue(dataView.getUint32(1), 10, "setUint32(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js similarity index 85% rename from test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js index dbc5705583..19baa9bf0b 100644 --- a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js @@ -16,9 +16,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [DataView.prototype.getUint32] ---*/ diff --git a/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js new file mode 100644 index 0000000000..c048f39c9d --- /dev/null +++ b/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setuint32 +es6id: 24.2.4.20 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] ) + + 1. Let v be the this value. + 2. If littleEndian is not present, let littleEndian be false. + 3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint32", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [DataView.prototype.getUint32] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setUint32(0, 0); +sample.setUint32(-0, 42); +assert.sameValue(sample.getUint32(0), 42, "-0"); + +sample.setUint32(3, 0); +sample.setUint32(obj1, 42); +assert.sameValue(sample.getUint32(3), 42, "object's valueOf"); + +sample.setUint32(4, 0); +sample.setUint32(obj2, 42); +assert.sameValue(sample.getUint32(4), 42, "object's toString"); + +sample.setUint32(0, 0); +sample.setUint32("", 42); +assert.sameValue(sample.getUint32(0), 42, "the Empty string"); + +sample.setUint32(0, 0); +sample.setUint32("0", 42); +assert.sameValue(sample.getUint32(0), 42, "string '0'"); + +sample.setUint32(2, 0); +sample.setUint32("2", 42); +assert.sameValue(sample.getUint32(2), 42, "string '2'"); + +sample.setUint32(1, 0); +sample.setUint32(true, 42); +assert.sameValue(sample.getUint32(1), 42, "true"); + +sample.setUint32(0, 0); +sample.setUint32(false, 42); +assert.sameValue(sample.getUint32(0), 42, "false"); + +sample.setUint32(0, 0); +sample.setUint32(NaN, 42); +assert.sameValue(sample.getUint32(0), 42, "NaN"); + +sample.setUint32(0, 0); +sample.setUint32(null, 42); +assert.sameValue(sample.getUint32(0), 42, "null"); + +sample.setUint32(0, 0); +sample.setUint32(0.1, 42); +assert.sameValue(sample.getUint32(0), 42, "0.1"); + +sample.setUint32(0, 0); +sample.setUint32(0.9, 42); +assert.sameValue(sample.getUint32(0), 42, "0.9"); + +sample.setUint32(1, 0); +sample.setUint32(1.1, 42); +assert.sameValue(sample.getUint32(1), 42, "1.1"); + +sample.setUint32(1, 0); +sample.setUint32(1.9, 42); +assert.sameValue(sample.getUint32(1), 42, "1.9"); + +sample.setUint32(0, 0); +sample.setUint32(-0.1, 42); +assert.sameValue(sample.getUint32(0), 42, "-0.1"); + +sample.setUint32(0, 0); +sample.setUint32(-0.99999, 42); +assert.sameValue(sample.getUint32(0), 42, "-0.99999"); + +sample.setUint32(0, 0); +sample.setUint32(undefined, 42); +assert.sameValue(sample.getUint32(0), 42, "undefined"); + +sample.setUint32(0, 7); +sample.setUint32(); +assert.sameValue(sample.getUint32(0), 0, "no arg"); diff --git a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js deleted file mode 100644 index 77dfe818c3..0000000000 --- a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-dataview.prototype.setuint8 -es6id: 24.2.4.18 -description: > - Throws a RangeError if numberIndex ≠ getIndex -info: | - 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value ) - - 1. Let v be the this value. - 2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - - ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - ... -features: [Uint8Array] ----*/ - -var buffer = new ArrayBuffer(12); -var sample = new DataView(buffer, 0); -var typedArray = new Uint8Array(buffer, 0); - -assert.throws(RangeError, function() { - sample.setUint8(); -}, "no args"); -assert.sameValue(typedArray[0], 0, "no args - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(undefined, 39); -}, "undefined"); -assert.sameValue(typedArray[0], 0, "undefined - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(1.1, 39); -}, "floating number"); -assert.sameValue(typedArray[0], 0, "floating number - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(0.1, 39); -}, "0.1"); -assert.sameValue(typedArray[0], 0, "0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(NaN, 39); -}, "NaN"); -assert.sameValue(typedArray[0], 0, "NaN - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(-0.1, 39); -}, "-0.1"); -assert.sameValue(typedArray[0], 0, "-0.1 - no value was set"); - -assert.throws(RangeError, function() { - sample.setUint8(-1.1, 39); -}, "-1.1"); -assert.sameValue(typedArray[0], 0, "-1.1 - no value was set"); diff --git a/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js index bdd4b3e3cc..952947f45f 100644 --- a/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js +++ b/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js @@ -16,10 +16,10 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... - 9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot. - 10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. + 7. Let buffer be view.[[ViewedArrayBuffer]]. + 8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception. ... includes: [detachArrayBuffer.js] ---*/ @@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(12); var sample = new DataView(buffer, 0); $DETACHBUFFER(buffer); -assert.throws(RangeError, function() { - sample.setUint8(1.1, 0); -}); assert.throws(RangeError, function() { sample.setUint8(-1, 0); diff --git a/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js index e61b0c4780..d1a93d452b 100755 --- a/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js +++ b/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js @@ -11,12 +11,10 @@ info: > 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint8", value). 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ? ToInteger(numberIndex). - 5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. - 6. Let numberValue be ? ToNumber(value). - ... + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... ---*/ var dataView = new DataView(new ArrayBuffer(8), 0); @@ -27,14 +25,6 @@ var poisoned = { } }; -assert.throws(RangeError, function() { - dataView.setUint8(NaN, poisoned); -}, "setUint8(NaN, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8(1.5, poisoned); -}, "setUint8(1.5, poisoned)"); - assert.throws(RangeError, function() { dataView.setUint8(-1.5, poisoned); }, "setUint8(-1.5, poisoned)"); @@ -46,40 +36,3 @@ assert.throws(RangeError, function() { assert.throws(RangeError, function() { dataView.setUint8(-Infinity, poisoned); }, "setUint8(-Infinity, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8(undefined, poisoned); -}, "setUint8(undefined, poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('invalid', poisoned); -}, "setUint8('invalid', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('NaN', poisoned); -}, "setUint8('NaN', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('1.5', poisoned); -}, "setUint8('1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('-1.5', poisoned); -}, "setUint8('-1.5', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('-1', poisoned); -}, "setUint8('-1', poisoned)"); - -assert.throws(RangeError, function() { - dataView.setUint8('-Infinity', poisoned); -}, "setUint8('-Infinity', poisoned)"); - -var obj = { - valueOf: function() { - return 1.41421; - } -}; -assert.throws(RangeError, function() { - dataView.setUint8(obj, poisoned); -}, "setUint8(obj, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setUint8/index-to-integer.js b/test/built-ins/DataView/prototype/setUint8/index-to-integer.js deleted file mode 100755 index 65e8a4cb69..0000000000 --- a/test/built-ins/DataView/prototype/setUint8/index-to-integer.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.4.18 -description: > - The requested index is converted with ToInteger. -info: > - ... - 3. Return SetViewValue(v, byteOffset, littleEndian, "Uint8", value). - - 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) - ... - 3. Let numberIndex be ToNumber(requestIndex). - 4. Let getIndex be ToInteger(numberIndex). - 5. ReturnIfAbrupt(getIndex). - ... -features: [Uint8Array] ----*/ - -var buffer = new ArrayBuffer(2); -var dataView = new DataView(buffer, 0); -var typedArray = new Uint8Array(buffer, 0); - -dataView.setUint8(+0, 1); -assert.sameValue(typedArray[0], 1, "setUint8(+0, 1)"); - -dataView.setUint8(-0, 2); -assert.sameValue(typedArray[0], 2, "setUint8(-0, 2)"); - -dataView.setUint8(1, 3); -assert.sameValue(typedArray[1], 3, "setUint8(1, 3)"); - -dataView.setUint8(null, 4); -assert.sameValue(typedArray[0], 4, "setUint8(null, 4)"); - -dataView.setUint8(false, 5); -assert.sameValue(typedArray[0], 5, "setUint8(false, 5)"); - -dataView.setUint8(true, 6); -assert.sameValue(typedArray[1], 6, "setUint8(true, 6)"); - -dataView.setUint8("", 7); -assert.sameValue(typedArray[0], 7, "setUint8('', 7)"); - -// Math.pow(2, 31) = 2147483648 -assert.throws(RangeError, function() { - dataView.setUint8(2147483648, 8); -}, "setUint8(2147483648, 8)"); - -// Math.pow(2, 32) = 4294967296 -assert.throws(RangeError, function() { - dataView.setUint8(4294967296, 9); -}, "setUint8(4294967296, 9)"); - -var obj = { - valueOf: function() { - return 1; - } -}; -dataView.setUint8(obj, 10); -assert.sameValue(typedArray[1], 10, "setUint8(obj, 10)"); diff --git a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js similarity index 84% rename from test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js rename to test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js index dc06ba300a..23f837fbee 100644 --- a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js +++ b/test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js @@ -15,9 +15,7 @@ info: | 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) ... - 4. Let numberIndex be ? ToNumber(requestIndex). - 5. Let getIndex be ToInteger(numberIndex). - 6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception. + 4. Let getIndex be ? ToIndex(requestIndex). ... features: [Uint8Array] ---*/ diff --git a/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js new file mode 100644 index 0000000000..426d43befe --- /dev/null +++ b/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js @@ -0,0 +1,109 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setuint8 +es6id: 24.2.4.18 +description: > + ToIndex conversions on byteOffset +info: | + 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value ) + + 1. Let v be the this value. + 2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value). + + 24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value ) + + ... + 4. Let getIndex be ? ToIndex(requestIndex). + ... +features: [Uint8Array] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); +var typedArray = new Uint8Array(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setUint8(0, 0); +sample.setUint8(-0, 42); +assert.sameValue(typedArray[0], 42, "-0"); + +sample.setUint8(3, 0); +sample.setUint8(obj1, 42); +assert.sameValue(typedArray[3], 42, "object's valueOf"); + +sample.setUint8(4, 0); +sample.setUint8(obj2, 42); +assert.sameValue(typedArray[4], 42, "object's toString"); + +sample.setUint8(0, 0); +sample.setUint8("", 42); +assert.sameValue(typedArray[0], 42, "the Empty string"); + +sample.setUint8(0, 0); +sample.setUint8("0", 42); +assert.sameValue(typedArray[0], 42, "string '0'"); + +sample.setUint8(2, 0); +sample.setUint8("2", 42); +assert.sameValue(typedArray[2], 42, "string '2'"); + +sample.setUint8(1, 0); +sample.setUint8(true, 42); +assert.sameValue(typedArray[1], 42, "true"); + +sample.setUint8(0, 0); +sample.setUint8(false, 42); +assert.sameValue(typedArray[0], 42, "false"); + +sample.setUint8(0, 0); +sample.setUint8(NaN, 42); +assert.sameValue(typedArray[0], 42, "NaN"); + +sample.setUint8(0, 0); +sample.setUint8(null, 42); +assert.sameValue(typedArray[0], 42, "null"); + +sample.setUint8(0, 0); +sample.setUint8(0.1, 42); +assert.sameValue(typedArray[0], 42, "0.1"); + +sample.setUint8(0, 0); +sample.setUint8(0.9, 42); +assert.sameValue(typedArray[0], 42, "0.9"); + +sample.setUint8(1, 0); +sample.setUint8(1.1, 42); +assert.sameValue(typedArray[1], 42, "1.1"); + +sample.setUint8(1, 0); +sample.setUint8(1.9, 42); +assert.sameValue(typedArray[1], 42, "1.9"); + +sample.setUint8(0, 0); +sample.setUint8(-0.1, 42); +assert.sameValue(typedArray[0], 42, "-0.1"); + +sample.setUint8(0, 0); +sample.setUint8(-0.99999, 42); +assert.sameValue(typedArray[0], 42, "-0.99999"); + +sample.setUint8(0, 0); +sample.setUint8(undefined, 42); +assert.sameValue(typedArray[0], 42, "undefined"); + +sample.setUint8(0, 7); +sample.setUint8(); +assert.sameValue(typedArray[0], 0, "no arg"); diff --git a/test/built-ins/DataView/toindex-bytelength.js b/test/built-ins/DataView/toindex-bytelength.js new file mode 100644 index 0000000000..7482a6df9b --- /dev/null +++ b/test/built-ins/DataView/toindex-bytelength.js @@ -0,0 +1,93 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview-buffer-byteoffset-bytelength +description: > + ToIndex conversions on byteLength +info: | + 24.2.2.1 DataView ( buffer, byteOffset, byteLength ) + + ... + 8. If byteLength is either not present or undefined, then + a. Let viewByteLength be bufferByteLength - offset. + 9. Else, + a. Let viewByteLength be ? ToIndex(byteLength). + b. If offset + viewByteLength > bufferByteLength, throw a RangeError + exception. + ... + + ToIndex( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + c. Let index be ! ToLength(integerIndex). + d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception. + 3. Return index. +---*/ + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +var sample; +var ab = new ArrayBuffer(42); + +sample = new DataView(ab, 0, -0); +assert.sameValue(sample.byteLength, 0, "-0"); + +sample = new DataView(ab, 0, obj1); +assert.sameValue(sample.byteLength, 3, "object's valueOf"); + +sample = new DataView(ab, 0, obj2); +assert.sameValue(sample.byteLength, 4, "object's toString"); + +sample = new DataView(ab, 0, ""); +assert.sameValue(sample.byteLength, 0, "the Empty string"); + +sample = new DataView(ab, 0, "0"); +assert.sameValue(sample.byteLength, 0, "string '0'"); + +sample = new DataView(ab, 0, "1"); +assert.sameValue(sample.byteLength, 1, "string '1'"); + +sample = new DataView(ab, 0, true); +assert.sameValue(sample.byteLength, 1, "true"); + +sample = new DataView(ab, 0, false); +assert.sameValue(sample.byteLength, 0, "false"); + +sample = new DataView(ab, 0, NaN); +assert.sameValue(sample.byteLength, 0, "NaN"); + +sample = new DataView(ab, 0, null); +assert.sameValue(sample.byteLength, 0, "null"); + +sample = new DataView(ab, 0, 0.1); +assert.sameValue(sample.byteLength, 0, "0.1"); + +sample = new DataView(ab, 0, 0.9); +assert.sameValue(sample.byteLength, 0, "0.9"); + +sample = new DataView(ab, 0, 1.1); +assert.sameValue(sample.byteLength, 1, "1.1"); + +sample = new DataView(ab, 0, 1.9); +assert.sameValue(sample.byteLength, 1, "1.9"); + +sample = new DataView(ab, 0, -0.1); +assert.sameValue(sample.byteLength, 0, "-0.1"); + +sample = new DataView(ab, 0, -0.99999); +assert.sameValue(sample.byteLength, 0, "-0.99999"); diff --git a/test/built-ins/DataView/toindex-byteoffset.js b/test/built-ins/DataView/toindex-byteoffset.js new file mode 100644 index 0000000000..2bd97d467e --- /dev/null +++ b/test/built-ins/DataView/toindex-byteoffset.js @@ -0,0 +1,91 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview-buffer-byteoffset-bytelength +description: > + ToIndex conversions on byteOffset +info: | + 24.2.2.1 DataView ( buffer, byteOffset, byteLength ) + + ... + 4. Let offset be ? ToIndex(byteOffset). + ... + + ToIndex( value ) + + 1. If value is undefined, then + a. Let index be 0. + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + c. Let index be ! ToLength(integerIndex). + d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception. + 3. Return index. +---*/ + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +var sample; +var ab = new ArrayBuffer(42); + +sample = new DataView(ab, -0); +assert.sameValue(sample.byteOffset, 0, "-0"); + +sample = new DataView(ab, obj1); +assert.sameValue(sample.byteOffset, 3, "object's valueOf"); + +sample = new DataView(ab, obj2); +assert.sameValue(sample.byteOffset, 4, "object's toString"); + +sample = new DataView(ab, ""); +assert.sameValue(sample.byteOffset, 0, "the Empty string"); + +sample = new DataView(ab, "0"); +assert.sameValue(sample.byteOffset, 0, "string '0'"); + +sample = new DataView(ab, "1"); +assert.sameValue(sample.byteOffset, 1, "string '1'"); + +sample = new DataView(ab, true); +assert.sameValue(sample.byteOffset, 1, "true"); + +sample = new DataView(ab, false); +assert.sameValue(sample.byteOffset, 0, "false"); + +sample = new DataView(ab, NaN); +assert.sameValue(sample.byteOffset, 0, "NaN"); + +sample = new DataView(ab, null); +assert.sameValue(sample.byteOffset, 0, "null"); + +sample = new DataView(ab, undefined); +assert.sameValue(sample.byteOffset, 0, "undefined"); + +sample = new DataView(ab, 0.1); +assert.sameValue(sample.byteOffset, 0, "0.1"); + +sample = new DataView(ab, 0.9); +assert.sameValue(sample.byteOffset, 0, "0.9"); + +sample = new DataView(ab, 1.1); +assert.sameValue(sample.byteOffset, 1, "1.1"); + +sample = new DataView(ab, 1.9); +assert.sameValue(sample.byteOffset, 1, "1.9"); + +sample = new DataView(ab, -0.1); +assert.sameValue(sample.byteOffset, 0, "-0.1"); + +sample = new DataView(ab, -0.99999); +assert.sameValue(sample.byteOffset, 0, "-0.99999"); diff --git a/test/built-ins/DataView/tolength-bytelength.js b/test/built-ins/DataView/tolength-bytelength.js deleted file mode 100644 index 34d58c3f7d..0000000000 --- a/test/built-ins/DataView/tolength-bytelength.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es6id: 24.2.2.1 -esid: sec-dataview-buffer-byteoffset-bytelength -description: > - ToLength(byteLength) conversions -info: | - 24.2.2.1 DataView (buffer, byteOffset, byteLength ) - - ... - 17. Return O. ----*/ - -var sample; -var buffer = new ArrayBuffer(2); - -sample = new DataView(buffer, 0, true); -assert.sameValue(sample.byteLength, 1, "true"); - -sample = new DataView(buffer, 0, false); -assert.sameValue(sample.byteLength, 0, "false"); - -sample = new DataView(buffer, 0, "1"); -assert.sameValue(sample.byteLength, 1, "string 1"); - -sample = new DataView(buffer, 0, ""); -assert.sameValue(sample.byteLength, 0, "the empty string"); - -sample = new DataView(buffer, 0, [1]); -assert.sameValue(sample.byteLength, 1, "[1]"); - -sample = new DataView(buffer, 0, []); -assert.sameValue(sample.byteLength, 0, "[]"); - -sample = new DataView(buffer, 0, NaN); -assert.sameValue(sample.byteLength, 0, "NaN"); - -sample = new DataView(buffer, 0, null); -assert.sameValue(sample.byteLength, 0, "null"); diff --git a/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js b/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js index 9e70c220f3..26b2630bf6 100644 --- a/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js +++ b/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js @@ -3,7 +3,7 @@ /*--- esid: sec-typedarray-buffer-byteoffset-length description: > - Return new typedArray from negative defined length + Throws RangeError for negative ToInteger(length) info: > 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ) @@ -14,31 +14,14 @@ info: > includes: [testTypedArray.js] ---*/ +var buffer = new ArrayBuffer(16); + testWithTypedArrayConstructors(function(TA) { - var bpe = TA.BYTES_PER_ELEMENT; - var buffer = new ArrayBuffer(bpe * 2); + assert.throws(RangeError, function() { + new TA(buffer, 0, -1); + }); - var ta1 = new TA(buffer, 0, -1); - assert.sameValue(ta1.length, 0); - assert.sameValue(ta1.buffer, buffer); - assert.sameValue(ta1.constructor, TA); - assert.sameValue(Object.getPrototypeOf(ta1), TA.prototype); - - var ta2 = new TA(buffer, 0, -Infinity); - assert.sameValue(ta2.length, 0); - assert.sameValue(ta2.buffer, buffer); - assert.sameValue(ta2.constructor, TA); - assert.sameValue(Object.getPrototypeOf(ta2), TA.prototype); - - var ta3 = new TA(buffer, bpe, -1); - assert.sameValue(ta3.length, 0); - assert.sameValue(ta3.buffer, buffer); - assert.sameValue(ta3.constructor, TA); - assert.sameValue(Object.getPrototypeOf(ta3), TA.prototype); - - var ta4 = new TA(buffer, bpe, -Infinity); - assert.sameValue(ta4.length, 0); - assert.sameValue(ta4.buffer, buffer); - assert.sameValue(ta4.constructor, TA); - assert.sameValue(Object.getPrototypeOf(ta4), TA.prototype); + assert.throws(RangeError, function() { + new TA(buffer, 0, -Infinity); + }); }); diff --git a/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js b/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js new file mode 100644 index 0000000000..8ea85b0ab8 --- /dev/null +++ b/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js @@ -0,0 +1,71 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-typedarray-buffer-byteoffset-length +description: > + ToIndex(length) operations +info: | + 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ) + + This description applies only if the TypedArray function is called with at + least one argument and the Type of the first argument is Object and that + object has an [[ArrayBufferData]] internal slot. + + ... + 11. If length is either not present or undefined, then + ... + 12. Else, + a. Let newLength be ? ToIndex(length). + ... +includes: [testTypedArray.js] +---*/ + +var buffer = new ArrayBuffer(16); + +var obj1 = { + valueOf: function() { + return 1; + } +}; + +var obj2 = { + toString: function() { + return 1; + } +}; + +var items = [ + [-0, 0, "-0"], + [obj1, 1, "object's valueOf"], + [obj2, 1, "object's toString"], + ["", 0, "the Empty string"], + ["0", 0, "string '0'"], + ["1", 1, "string '1'"], + [false, 0, "false"], + [true, 1, "true"], + [NaN, 0, "NaN"], + [null, 0, "null"], + [0.1, 0, "0.1"], + [0.9, 0, "0.9"], + [1.1, 1, "1.1"], + [1.9, 1, "1.9"], + [-0.1, 0, "-0.1"], + [-0.99999, 0, "-0.99999"] +]; + +testWithTypedArrayConstructors(function(TA) { + items.forEach(function(item) { + var len = item[0]; + var expected = item[1]; + var name = item[2]; + + var typedArray = new TA(buffer, 0, len); + assert.sameValue(typedArray.length, expected, name + " length"); + assert.sameValue(typedArray.constructor, TA, name + " constructor"); + assert.sameValue( + Object.getPrototypeOf(typedArray), + TA.prototype, + name + " prototype" + ); + }); +}); diff --git a/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js b/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js new file mode 100644 index 0000000000..ea9c39ca12 --- /dev/null +++ b/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js @@ -0,0 +1,85 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-typedarray-buffer-byteoffset-length +description: > + ToIndex(byteOffset) operations +info: | + 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ) + + This description applies only if the TypedArray function is called with at + least one argument and the Type of the first argument is Object and that + object has an [[ArrayBufferData]] internal slot. + + ... + 7. Let offset be ? ToIndex(byteOffset). + 8. If offset modulo elementSize ≠ 0, throw a RangeError exception. + ... +includes: [testTypedArray.js] +---*/ + +var buffer = new ArrayBuffer(16); + +var obj1 = { + valueOf: function() { + return 8; + } +}; + +var obj2 = { + toString: function() { + return 8; + } +}; + +var items = [ + [-0, 0, "-0"], + [obj1, 8, "object's valueOf"], + [obj2, 8, "object's toString"], + ["", 0, "the Empty string"], + ["0", 0, "string '0'"], + ["8", 8, "string '8'"], + [false, 0, "false"], + [NaN, 0, "NaN"], + [null, 0, "null"], + [undefined, 0, "undefined"], + [0.1, 0, "0.1"], + [0.9, 0, "0.9"], + [8.1, 8, "8.1"], + [8.9, 8, "8.9"], + [-0.1, 0, "-0.1"], + [-0.99999, 0, "-0.99999"] +]; + +testWithTypedArrayConstructors(function(TA) { + items.forEach(function(item) { + var offset = item[0]; + var expected = item[1]; + var name = item[2]; + + var typedArray = new TA(buffer, offset); + assert.sameValue(typedArray.byteOffset, expected, name + " byteOffset"); + assert.sameValue(typedArray.constructor, TA, name + " constructor"); + assert.sameValue( + Object.getPrototypeOf(typedArray), + TA.prototype, + name + " prototype" + ); + }); + + // Testing `true`. See step 8 + if (TA.BYTES_PER_ELEMENT === 1) { + var typedArray = new TA(buffer, true); + assert.sameValue(typedArray.byteOffset, 1, "true => 1 byteOffset"); + assert.sameValue(typedArray.constructor, TA, "true => 1 constructor"); + assert.sameValue( + Object.getPrototypeOf(typedArray), + TA.prototype, + "true => 1 prototype" + ); + } else { + assert.throws(RangeError, function() { + new TA(buffer, true); + }, "1 modulo elementSize ≠ 0, throws a RangeError"); + } +}); diff --git a/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js deleted file mode 100644 index 22eb44956f..0000000000 --- a/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-typedarray-length -description: > - Throws a RangeError if length is a float number -info: > - 22.2.4.2 TypedArray ( length ) - - This description applies only if the TypedArray function is called with at - least one argument and the Type of the first argument is not Object. - - ... - 4. Let numberLength be ? ToNumber(length). - 5. Let elementLength be ToLength(numberLength). - 6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError - exception. - ... -includes: [testTypedArray.js] ----*/ - -testWithTypedArrayConstructors(function(TA) { - assert.throws(RangeError, function() { - new TA(1.1); - }); -}); diff --git a/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js deleted file mode 100644 index 67e6e9cc83..0000000000 --- a/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-typedarray-length -description: > - Throws a RangeError if length is NaN -info: > - 22.2.4.2 TypedArray ( length ) - - This description applies only if the TypedArray function is called with at - least one argument and the Type of the first argument is not Object. - - ... - 4. Let numberLength be ? ToNumber(length). - 5. Let elementLength be ToLength(numberLength). - 6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError - exception. - ... -includes: [testTypedArray.js] ----*/ - -testWithTypedArrayConstructors(function(TA) { - assert.throws(RangeError, function() { - new TA(NaN); - }); -}); diff --git a/test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js similarity index 59% rename from test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js rename to test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js index 13929cf65d..2c33cbf24b 100644 --- a/test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js +++ b/test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js @@ -3,7 +3,7 @@ /*--- esid: sec-typedarray-length description: > - Throws a RangeError if length is a negative value + Throws a RangeError if ToInteger(length) is a negative value info: > 22.2.4.2 TypedArray ( length ) @@ -11,11 +11,17 @@ info: > least one argument and the Type of the first argument is not Object. ... - 4. Let numberLength be ? ToNumber(length). - 5. Let elementLength be ToLength(numberLength). - 6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError - exception. + 3. Let elementLength be ? ToIndex(length). ... + + 7.1.17 ToIndex ( value ) + + 1. If value is undefined, then + ... + 2. Else, + a. Let integerIndex be ? ToInteger(value). + b. If integerIndex < 0, throw a RangeError exception. + ... includes: [testTypedArray.js] ---*/ @@ -23,4 +29,8 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(RangeError, function() { new TA(-1); }); + + assert.throws(RangeError, function() { + new TA(-Infinity); + }); }); diff --git a/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js deleted file mode 100644 index a9fe4cca58..0000000000 --- a/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-typedarray-length -description: > - Throws a RangeError when length argument is not a valid buffer size -info: > - 22.2.4.2 TypedArray ( length ) - - This description applies only if the TypedArray function is called with at - least one argument and the Type of the first argument is not Object. - - ... - 8. Return ? AllocateTypedArray(constructorName, NewTarget, - %TypedArrayPrototype%, elementLength). - - 22.2.4.2.1 Runtime Semantics: AllocateTypedArray (constructorName, newTarget, - defaultProto [ , length ]) - - 6. Else, - a. Perform ? AllocateTypedArrayBuffer(obj, length). - ... - - 22.2.4.2.2 Runtime Semantics: AllocateTypedArrayBuffer ( O, length ) - - ... - 7. Let data be ? AllocateArrayBuffer(%ArrayBuffer%, byteLength). - ... - - - 24.1.1.1 AllocateArrayBuffer ( constructor, byteLength ) - - ... - 3. Let block be ? CreateByteDataBlock(byteLength). - ... - - 6.2.6.1 CreateByteDataBlock (size) - - ... - 2. Let db be a new Data Block value consisting of size bytes. If it is - impossible to create such a Data Block, throw a RangeError exception. - ... - -includes: [testTypedArray.js] ----*/ - -var length = Math.pow(2, 53); - -testWithTypedArrayConstructors(function(TA) { - assert.throws(RangeError, function() { - new TA(length); - }); -}); diff --git a/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js b/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js deleted file mode 100644 index 7ec83c73b2..0000000000 --- a/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-typedarray-length -description: > - If length is undefined, throw a TypeError exception. -info: > - 22.2.4.2 TypedArray ( length ) - - This description applies only if the TypedArray function is called with at - least one argument and the Type of the first argument is not Object. - - ... - 3. If length is undefined, throw a TypeError exception. - ... -includes: [testTypedArray.js] ----*/ - -testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, function() { - new TA(undefined); - }); -}); diff --git a/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js b/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js deleted file mode 100644 index 63b5bed7d6..0000000000 --- a/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2016 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-typedarray-length -description: > - Does not throw when length is -0 -info: > - 22.2.4.2 TypedArray ( length ) - - This description applies only if the TypedArray function is called with at - least one argument and the Type of the first argument is not Object. - - ... - 4. Let numberLength be ? ToNumber(length). - 5. Let elementLength be ToLength(numberLength). - 6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError - exception. - ... -includes: [testTypedArray.js] ----*/ - -testWithTypedArrayConstructors(function(TA) { - var typedArray = new TA(-0); - - assert.sameValue(typedArray.length, 0, "length"); - assert.sameValue(typedArray.constructor, TA); - assert.sameValue(Object.getPrototypeOf(typedArray), TA.prototype); -}); diff --git a/test/built-ins/TypedArrays/length-arg-toindex-length.js b/test/built-ins/TypedArrays/length-arg-toindex-length.js new file mode 100644 index 0000000000..21547df1ef --- /dev/null +++ b/test/built-ins/TypedArrays/length-arg-toindex-length.js @@ -0,0 +1,66 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-typedarray-length +description: > + ToIndex(length) operations +info: > + 22.2.4.2 TypedArray ( length ) + + This description applies only if the TypedArray function is called with at + least one argument and the Type of the first argument is not Object. + + ... + 3. Let elementLength be ? ToIndex(length). + ... +includes: [testTypedArray.js] +---*/ + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +var items = [ + [-0, 0, "-0"], + ["", 0, "the Empty string"], + ["0", 0, "string '0'"], + ["1", 1, "string '1'"], + [true, 1, "true"], + [false, 0, "false"], + [NaN, 0, "NaN"], + [null, 0, "null"], + [undefined, 0, "undefined"], + [0.1, 0, "0.1"], + [0.9, 0, "0.9"], + [1.1, 1, "1.1"], + [1.9, 1, "1.9"], + [-0.1, 0, "-0.1"], + [-0.99999, 0, "-0.99999"], + [obj1, 3, "object's valueOf"], + [obj2, 4, "object's toString"] +]; + +testWithTypedArrayConstructors(function(TA) { + items.forEach(function(item) { + var len = item[0]; + var expected = item[1]; + var name = item[2]; + + var typedArray = new TA(len); + assert.sameValue(typedArray.length, expected, name + " length"); + assert.sameValue(typedArray.constructor, TA, name + " constructor"); + assert.sameValue( + Object.getPrototypeOf(typedArray), + TA.prototype, + name + " prototype" + ); + }); +}); diff --git a/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js b/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js index 6308500747..c58318dc04 100644 --- a/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js +++ b/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js @@ -14,37 +14,14 @@ info: > 2. If NewTarget is undefined, throw a TypeError exception. ... includes: [testTypedArray.js] -features: [Symbol] ---*/ -var s = Symbol('1'); - testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { TA(0); }); assert.throws(TypeError, function() { - TA(NaN); - }); - - assert.throws(TypeError, function() { - TA(""); - }); - - assert.throws(TypeError, function() { - TA(true); - }); - - assert.throws(TypeError, function() { - TA(null); - }); - - assert.throws(TypeError, function() { - TA(undefined); - }); - - assert.throws(TypeError, function() { - TA(s); + TA(Infinity); }); });