diff --git a/test/built-ins/ArrayBuffer/length-is-absent.js b/test/built-ins/ArrayBuffer/length-is-absent.js index fd657ec2dbb9004723e03623173103b780b2a17b..dfeeed0eeb85870add76094817087a13e490a384 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 f40a44588ea0b864ee095efb28508ce6c5e2dba5..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..915796019cd47a4161c43b4794a17320a36092e0 --- /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 0000000000000000000000000000000000000000..0c0302e525bae34e9de67385bcfa2e4e0ff8f5e0 --- /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 75bbb3b8f643b4d87bf355a69c8c771800c0e2a7..0000000000000000000000000000000000000000 --- 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 f1f40800e30f05ec6aea47648cbbdba023e49684..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..d14d80068097434eb1035f470975fdb34c34eb6e --- /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 0000000000000000000000000000000000000000..620c134d0dcfd5bf6db1275888eb87eb09efa352 --- /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 0000000000000000000000000000000000000000..b22694186bd0bbed6756c0c4f8b1e705a8d2e7e7 --- /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 58d63d819279e8bb4aa853dcac849fba3a233bbe..0000000000000000000000000000000000000000 --- 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 6430e4df376f8e5a8aabf603cac22e742b5657e3..de0180c979bbbaeb5ecb61bf8ee0896012270611 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 808435659d2beb8db647d4d7d9753f0c8e02ec10..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..ce11b03c5577e8be7fdce6974eb4fd1323d54fc3 --- /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 0000000000000000000000000000000000000000..18f53dbb3196b4f11789f059a77aa6c4d88eb03e --- /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 9c3dc53c8ebf04469769b0624d3351a5cf235c65..0000000000000000000000000000000000000000 --- 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 7e8966f0f04b6ee24f2fa8b5a6e9a58a46902414..ef2440d1a22ab168b3fe501982012fb188602f72 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 4fc7baf8a360acacb6db2ba125539cd65df64428..f2298faa59a15c7fd4f7618c0d7d72f6ed70aef9 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 207b0055fb2b48122804023755a6a57483f59d11..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..280a11d46b5477a91136acfdae142e42fa6e85e8 --- /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 7f786becebed1236546e34bdf4347bfa22d83aa0..0000000000000000000000000000000000000000 --- 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 0cd537b05873bacb6776c8d36b3ae3bc2f382fe4..32947925e28097545de879c4051c444a19cac878 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 0abb4d512f45c6350d697fb9cdd81ff6b9ba208c..12dbdcdeb5ae0998402a42d317364446ea1623e0 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 31e95caad0d342134be60356fc71f4d4e09d869a..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..966630a1e69ceeecf5e726b303b5c0936b8a2ea4 --- /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 c7b6cdf3ec586fe683000cf3d923e57f9973e01b..0000000000000000000000000000000000000000 --- 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 02e7d7baafe3c12d2ee0fb18ad2cb6504c93e14b..5d7007553d2329cbc9f77ae86389527c8ddcb9c2 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 117cff461a03bfb6f07449426d7c17df8fb5c9da..1dd8d6665c5a6076666fd5069604aec1b61a450a 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 a5b87ae239e840be3caa7986485c46f13fb94662..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..c8edfbbc0511f70ed354a53e7f5358de1b89b183 --- /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 4922b78b11db11e4939685007561f5ed5a9bc2e2..0000000000000000000000000000000000000000 --- 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 6d1aa431a8e1d0ca7251880e0186861b72f26846..777c6a6226d3d6b5e64b56f9eff4e378f02ae7b8 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 9e42898d52a3172c677907f729fdf66fb6f9341f..f67bc72e0d60096c63893696d9fa5886a5f4027e 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 b4c19962c7a09dccc7cedd0f9cf46d9b23fa04e0..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..4e1b88547a6190501b9af17e78cb13d2f4d134c8 --- /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 e0fe58d338068ae0a8e0897a5b3e2b8c342b3e8d..0000000000000000000000000000000000000000 --- 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 c2ba27aa513fc881e6a089949aa72eba0b55f171..175359727d09cd57746937ddee69c72b00967d78 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 eb69f0763562ac78a6276bd98211357b8b30d642..7f8e0add13baf72c434afffe237b17f081122873 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 635504ffc7c1c53b8413d514f6758e3655beca62..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..465d414a167592ce53207cb43412fb5402287bec --- /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 8be032d57f7969093e5d3d0655397bdf0612571b..0000000000000000000000000000000000000000 --- 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 cbebef973c86921e804fd9648921b45714bb342d..874c54ad435c0c2e38b4e795a2a785168039f12b 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 62f15606e28b1c5c82938b55052867d1261072f3..301b647eba7e717905c9843e2116f49178bc2e1c 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 7396559bc235d389a020dfedaf82964ccb4eac68..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..4958f26bf995e6434d3add27d030e82f58b98037 --- /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 11eac838d4350eba4bc3e4222877c29462b11a87..0000000000000000000000000000000000000000 --- 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 e993629e33c7c98b7e75598cb248a80739db0e39..748a578c03a20ea0562bbeed7bd308de3f890a8a 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 54505fedfadbb33d866e5857fdcefcf29deebc76..eb10997c430c26a4508eded1ca15609d28361747 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 22e8c7bc10a0ae90cc559c4d2163c692a1b9aed9..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..2f9e2fb29eddfcb4df0eb6c926672544f497bc04 --- /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 9ff4645e6274cefcf7f0bf254bb056875fb039e0..0000000000000000000000000000000000000000 --- 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 c67bfec4ef7b9a03bb28df597c3a2ce9818175bc..16581aaed9214d7aa2349194838fa8cec9d4e5f5 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 3239ff7570680de14dd827e79b8c143c5c3e9fc6..60133a0494b584dd22adb251a455a75a3df23a84 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 6e77bc089c34bdecdfc0da8e243fde5103b088bb..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..3f684c83d8c19ce9edbaa87c2dd5059026073564 --- /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 d76ed7d0bee8d689239dfc43fb30f12b52da2fad..0000000000000000000000000000000000000000 --- 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 371d440b1647129d2b7a9a7be28ef9e73b045284..4e101c3bc79dd2c7cf182e22271894bb4b355b26 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 6e6666e7b06a55635086fb0b81a4c78076fab9e4..34cf9805355025fb782f9b9683651fede638841a 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 1aec39f338aed0c43221bfdaa58b558e157d4e79..0000000000000000000000000000000000000000 --- 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 c6c37d61bcc7e12257db933a0e35bbc29d16faee..1abcccd9ef8f9733b66104503a4c210395797e86 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 0000000000000000000000000000000000000000..c35276f0a0938ef02e9c18e455c6689f7cb900be --- /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 79eb48e9803fb6504d9e8eb721a36697a3cd6b38..0000000000000000000000000000000000000000 --- 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 369976baa6c847143b43c3fe6fd6fb2b8a7af027..5a80f5641dcfcdac64b650b9e234160aec823fd3 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 9df86cd988904d78382e171ee8eaa2849a0e191a..5e66803fb73466ca91a8621516e52f8d4dc5e5bb 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 38c4a18313653c0b91f6b6d315d920381521d475..0000000000000000000000000000000000000000 --- 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 95572ff02cceeafa7342aaa59cd1aa1a2d3ce2ba..940f45bef9bc1da98d350cf6709fa5cb45f8d7fd 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 0000000000000000000000000000000000000000..d09773c3581ae982e5f0537e0fffae7c49ff3291 --- /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 c3d6159df95726715bed0b380d5e97a409a37208..0000000000000000000000000000000000000000 --- 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 5cbb432588d39d93ed9fe41eaf147dc61d6ac978..765fd8b3e8d73cc359d2536d48ba604f1261bdfa 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 6c18f4fbe973bc1d4f3d801a861be38deaafb75a..826cbc8313132dbf26c56778482342bf13fb1661 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 d8c226498cf2e077bcd35692a1b3f5262afff666..0000000000000000000000000000000000000000 --- 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 4b2e67266bccbb3ea2c098f14808eb79170e66a7..84778b720a648a42499890664a134a7011c1d8a9 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 0000000000000000000000000000000000000000..33864075fee6a7ff45e3124d94df887563894a5b --- /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 bbc528a9b121753a7a147f05bd3385a37b7f59b8..0000000000000000000000000000000000000000 --- 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 b42eef93168901352ad4bea6a30f48c92465bbc7..128e66b0db2ef66b0e1159e66f904902d8c40d4f 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 2ee670647be9ee4e84088c94d2de23ca0f2e0558..ee0adecbf3bc3967ef3bd5d15eaa402a386e4af2 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 e9d2a5496330abdbfa77c67e6db0cb41e23b9cae..0000000000000000000000000000000000000000 --- 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 2f08ceac6204c1e84f678f25a3198c7bdbdaa48b..db2e5c428c118af7b272613c2f413f042515ddcf 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 0000000000000000000000000000000000000000..f5b45a5ae978bab08dbf158c0f50e5e8c3e7872a --- /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 507836935ae448fb3a1aa608e8a355fd875a652d..0000000000000000000000000000000000000000 --- 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 beab4af062e7ff460fc0c1a94eeedf59be6aab7c..55eddc992a76416754c348d93017cca1f45240d7 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 d297712e0c8d202c149e80eb482db0cebc937867..ca6ce0c5a99b734369c26a9559f45b8bea8bf53f 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 409f722bbe5a509f4e59e73a5eed80b7cc279442..0000000000000000000000000000000000000000 --- 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 09b103b7547440269e42fe78bd0f0f2d07c0d47c..5709e2ecc0c3f873a0c713eff1e0db85e2dfefac 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 0000000000000000000000000000000000000000..b9022740c2a75b21ec456a8deed607d60eb65622 --- /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 92b1c2b4c435d9f03b76b5a17b22d667c97871de..0000000000000000000000000000000000000000 --- 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 097ab657c0e20d87be28234b1521ada6f17af2ac..86f4be4bd9dabd328deec3eeb617ef67f876b207 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 35475d172f1da9864ffbf3c05bd515ca4c4e2222..6fed3d7b4fd266823d6937d51bc8338decf61b8c 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 fbce423b58d4ea83f869b5f08fe0a2b967557fd1..0000000000000000000000000000000000000000 --- 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 28fea9f79142374e6ce9c06b9cdee75232bad397..282a71565ade1ab2d124e412d40047baa2401d47 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 0000000000000000000000000000000000000000..703fdedba8b5ce2e5daebd027b28cb3662ddfcc8 --- /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 d8327a4fde5589a63104c07aa898447ca878d985..0000000000000000000000000000000000000000 --- 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 4fe6c41df7b77817deff482e984fb0548130f9dc..7c9472078a2770ae77709e4223c221ab8f603ac9 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 b9abf5028d12ffceed4d28548146f6b3d0d290ba..7bbab801d30b7b08a56bc87d881757ab96430fc3 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 81488f4337276f05c234c984a1d789a96ffeef75..0000000000000000000000000000000000000000 --- 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 dbc5705583e14a8329a509aee487d4c8fdea6297..19baa9bf0bc408338892a70099700400e394a1ec 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 0000000000000000000000000000000000000000..c048f39c9d94f13d75111fd7762cd0af43aaae63 --- /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 77dfe818c34755a8dbda6227e068fdd4301cea8d..0000000000000000000000000000000000000000 --- 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 bdd4b3e3cc9344fcbaa3b6ac604d79ed4d5c2014..952947f45f0adf37b6408f4d9ca4bf7b998a0980 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 e61b0c4780f3df9439cde5145fb7cbb0b5c35cdb..d1a93d452b230c057bf0109c0a88711ab72cd162 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 65e8a4cb69c7056e77896cb4adbbcb5aa594a8f2..0000000000000000000000000000000000000000 --- 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 dc06ba300abd763105b2783b8ce7ee26d61b4e3c..23f837fbee8819b6177d28aa0454f85bd6eb45af 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 0000000000000000000000000000000000000000..426d43befe55f5662ebc8994653dc7b76cf17b1b --- /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 0000000000000000000000000000000000000000..7482a6df9b822b6f87611c7dd05c34e2d2bc5f7f --- /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 0000000000000000000000000000000000000000..2bd97d467eb3138171b3e7fde4d069f4080fbc00 --- /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 34d58c3f7d5b492b2e57d9cb9550c00d7cf3da7b..0000000000000000000000000000000000000000 --- 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 9e70c220f3dd6b26be2ccb2b0d4ee75c62bc6cc9..26b2630bf643543c253d488a54b2192cc4c821e3 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] ---*/ -testWithTypedArrayConstructors(function(TA) { - var bpe = TA.BYTES_PER_ELEMENT; - var buffer = new ArrayBuffer(bpe * 2); - - 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 buffer = new ArrayBuffer(16); - 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); +testWithTypedArrayConstructors(function(TA) { + assert.throws(RangeError, function() { + new TA(buffer, 0, -1); + }); - 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 0000000000000000000000000000000000000000..8ea85b0ab8365c71fefd75b5b673f954df08b506 --- /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 0000000000000000000000000000000000000000..ea9c39ca125d4be5faaba64676abfefe053f31dd --- /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 22eb44956f2d11e3d10ed536698341bc964fc349..0000000000000000000000000000000000000000 --- 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 67e6e9cc8374211a4daf31c94449eb9366c60719..0000000000000000000000000000000000000000 --- 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 13929cf65daabd436c3a12efdfca86be83b72db5..2c33cbf24b33eff0b90c291fd0884bc1e235ca19 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 a9fe4cca581d2456f1fa667c7c2c66ac2f0a090e..0000000000000000000000000000000000000000 --- 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 7ec83c73b2f0a156f8fe787599ba466200628a82..0000000000000000000000000000000000000000 --- 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 63b5bed7d6f097749b5638c23174857f5ac43064..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..21547df1efb72b32b2a233a74ad1cd45de42cee0 --- /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 6308500747d689b0115e69314bae87d216723d8f..c58318dc0497160056baa9fa493d4987dba18d82 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); }); });