summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValerie <spectranaut@gmail.com>2018-03-09 11:23:50 -0500
committerLeo Balter <leonardo.balter@gmail.com>2018-03-09 11:23:50 -0500
commit3c69133cc419840c1be34638039cd8c48a7ef581 (patch)
treede83a9d9767fc8edbc86d46fff5e18bd67f8c394
parent3854fc38dd51c85062f94cd3b98f5f04ca976fae (diff)
downloadqtdeclarative-testsuites-3c69133cc419840c1be34638039cd8c48a7ef581.tar.gz
Bigint typedarray conversion (#1469)
* BigInt: add tests for TypedArray(typedArray) constructor of mixed 'Big'/'not Big' element types * BigInt: update info text on tests of ToBigInt * BigInt: conversion to big int on creation of Big(U)Int64 TypedArray * BigInt: Add tests for ToBigInt64 and ToBigUint64 wrapping
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/#undefined-tobigint.js#53
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobigint64.js98
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobiguint64.js98
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/boolean-tobigint.js52
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/null-tobigint.js53
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/number-tobigint.js82
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/string-nan-tobigint.js61
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/string-tobigint.js77
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/symbol-tobigint.js60
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js10
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js10
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-tostring.js12
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js12
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof.js12
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/object-arg/undefined-tobigint.js53
-rw-r--r--test/built-ins/TypedArrays/ctors-bigint/typedarray-arg/src-typedarray-not-big-throws.js36
-rw-r--r--test/built-ins/TypedArrays/ctors/typedarray-arg/src-typedarray-big-throws.js37
17 files changed, 788 insertions, 28 deletions
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/#undefined-tobigint.js# b/test/built-ins/TypedArrays/ctors-bigint/object-arg/#undefined-tobigint.js#
new file mode 100644
index 000000000..26f708df5
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/#undefined-tobigint.js#
@@ -0,0 +1,53 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt on undefined
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Undefined
+ Result: Throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(TypeError, function() {
+ new TA([undefined]);
+ }, "abrupt completion from undefined");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobigint64.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobigint64.js
new file mode 100644
index 000000000..501df4ec9
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobigint64.js
@@ -0,0 +1,98 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Behavior for input array of BigInts
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+ 15. Perform SetValueInBuffer(buffer, indexedPosition, elementType, numValue, true, "Unordered").
+ // NOTE: type will be set to BigInt64 in this test
+ 16. Return true.
+
+ SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )
+ ...
+ 8. Let rawBytes be NumberToRawBytes(type, value, isLittleEndian).
+ ...
+
+ NumberToRawBytes( type, value, isLittleEndian )
+ ...
+ 3. Else,
+ a. Let n be the Number value of the Element Size specified in Table
+ [The TypedArray Constructors] for Element Type type.
+ b. Let convOp be the abstract operation named in the Conversion Operation
+ column in Table 9 for Element Type type.
+
+ The TypedArray Constructors
+ Element Type: BigInt64
+ Conversion Operation: ToBigInt64
+
+ ToBigInt64 ( argument )
+ The abstract operation ToBigInt64 converts argument to one of 264 integer
+ values in the range -2^63 through 2^63-1, inclusive.
+ This abstract operation functions as follows:
+ 1. Let n be ? ToBigInt(argument).
+ 2. Let int64bit be n modulo 2^64.
+ 3. If int64bit ≥ 2^63, return int64bit - 2^64; otherwise return int64bit.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+var vals = [
+ 18446744073709551618n, // 2n ** 64n + 2n
+ 9223372036854775810n, // 2n ** 63n + 2n
+ 2n,
+ 0n,
+ -2n,
+ -9223372036854775810n, // -(2n ** 63n) - 2n
+ -18446744073709551618n, // -(2n ** 64n) - 2n
+];
+
+var typedArray = new BigInt64Array(vals);
+
+assert.sameValue(typedArray[0], 2n,
+ "ToBigInt64(2n ** 64n + 2n) => 2n");
+
+assert.sameValue(typedArray[1], -9223372036854775806n, // 2n - 2n ** 63n
+ "ToBigInt64(2n ** 63n + 2n) => -9223372036854775806n");
+
+assert.sameValue(typedArray[2], 2n,
+ "ToBigInt64(2n) => 2n");
+
+assert.sameValue(typedArray[3], 0n,
+ "ToBigInt64(0n) => 0n");
+
+assert.sameValue(typedArray[4], -2n,
+ "ToBigInt64( -2n) => -2n");
+
+assert.sameValue(typedArray[5], 9223372036854775806n, // 2n ** 63n - 2
+ "ToBigInt64( -(2n ** 64n) - 2n) => 9223372036854775806n");
+
+assert.sameValue(typedArray[6], -2n,
+ "ToBigInt64( -(2n ** 64n) - 2n) => -2n");
+
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobiguint64.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobiguint64.js
new file mode 100644
index 000000000..9f87a9be2
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/bigint-tobiguint64.js
@@ -0,0 +1,98 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Behavior for input array of BigInts
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+ 15. Perform SetValueInBuffer(buffer, indexedPosition, elementType, numValue, true, "Unordered").
+ // NOTE: type will be set to BigUint64 in this test
+ 16. Return true.
+
+ SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )
+ ...
+ 8. Let rawBytes be NumberToRawBytes(type, value, isLittleEndian).
+ ...
+
+ NumberToRawBytes( type, value, isLittleEndian )
+ ...
+ 3. Else,
+ a. Let n be the Number value of the Element Size specified in Table
+ [The TypedArray Constructors] for Element Type type.
+ b. Let convOp be the abstract operation named in the Conversion Operation
+ column in Table 9 for Element Type type.
+
+ The TypedArray Constructors
+ Element Type: BigUint64
+ Conversion Operation: ToBigUint64
+
+ ToBigUint64 ( argument )
+ The abstract operation ToBigInt64 converts argument to one of 264 integer
+ values in the range -2^63 through 2^63-1, inclusive.
+ This abstract operation functions as follows:
+ 1. Let n be ? ToBigInt(argument).
+ 2. Let int64bit be n modulo 2^64.
+ 3. Return int64bit.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+var vals = [
+ 18446744073709551618n, // 2n ** 64n + 2n
+ 9223372036854775810n, // 2n ** 63n + 2n
+ 2n,
+ 0n,
+ -2n,
+ -9223372036854775810n, // -(2n ** 63n) - 2n
+ -18446744073709551618n, // -(2n ** 64n) - 2n
+];
+
+var typedArray = new BigUint64Array(vals);
+
+
+assert.sameValue(typedArray[0], 2n,
+ "ToBigUint64(2n ** 64n + 2n) => 2n");
+
+assert.sameValue(typedArray[1], 9223372036854775810n, // 2n ** 63n + 2n
+ "ToBigUint64(2n ** 63n + 2n) => 9223372036854775810");
+
+assert.sameValue(typedArray[2], 2n,
+ "ToBigUint64(2n) => 2n");
+
+assert.sameValue(typedArray[3], 0n,
+ "ToBigUint64(0n) => 0n");
+
+assert.sameValue(typedArray[4], 18446744073709551614n, // 2n ** 64n - 2n
+ "ToBigUint64( -2n) => 18446744073709551614n");
+
+assert.sameValue(typedArray[5], 9223372036854775806n, // 2n ** 63n - 2n
+ "ToBigUint64( -(2n ** 63n) - 2n) => 9223372036854775806n");
+
+assert.sameValue(typedArray[6], 18446744073709551614n, // 2n ** 64n - 2n
+ "ToBigUint64( -(2n ** 64n) - 2n) => 18446744073709551614n");
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/boolean-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/boolean-tobigint.js
new file mode 100644
index 000000000..c277e50fd
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/boolean-tobigint.js
@@ -0,0 +1,52 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Behavior for input array of Booleans
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Boolean
+ Result: Return 1n if prim is true and 0n if prim is false.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ var typedArray = new TA([false, true]);
+
+ assert.sameValue(typedArray[0], 0n);
+ assert.sameValue(typedArray[1], 1n);
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/null-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/null-tobigint.js
new file mode 100644
index 000000000..fdbbab93d
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/null-tobigint.js
@@ -0,0 +1,53 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt on null
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Null
+ Result: Throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(TypeError, function() {
+ new TA([null]);
+ }, "abrupt completion from Null");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/number-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/number-tobigint.js
new file mode 100644
index 000000000..886c99f16
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/number-tobigint.js
@@ -0,0 +1,82 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt on Number
+info: |
+ 22.2.4.4 TypedArray ( object )
+
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ 9.4.5.5 [[Set]] ( P, V, Receiver)
+
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ 9.4.5.9 IntegerIndexedElementSet ( O, index, value )
+
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Number
+ Result: Throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(TypeError, function() {
+ new TA([1]);
+ }, "abrupt completion from Number: 1");
+
+ assert.throws(TypeError, function() {
+ new TA([Math.pow(2, 63)]);
+ }, "abrupt completion from Number: 2**63");
+
+ assert.throws(TypeError, function() {
+ new TA([+0]);
+ }, "abrupt completion from Number: +0");
+
+ assert.throws(TypeError, function() {
+ new TA([-0]);
+ }, "abrupt completion from Number: -0");
+
+ assert.throws(TypeError, function() {
+ new TA([Infinity]);
+ }, "abrupt completion from Number: Infinity");
+
+ assert.throws(TypeError, function() {
+ new TA([-Infinity]);
+ }, "abrupt completion from Number: -Infinity");
+
+ assert.throws(TypeError, function() {
+ new TA([NaN]);
+ }, "abrupt completion from Number: NaN");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-nan-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-nan-tobigint.js
new file mode 100644
index 000000000..0726d56e5
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-nan-tobigint.js
@@ -0,0 +1,61 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt String, when StringToBigInt returns NaN
+info: |
+ 22.2.4.4 TypedArray ( object )
+
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ 9.4.5.5 [[Set]] ( P, V, Receiver)
+
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ 9.4.5.9 IntegerIndexedElementSet ( O, index, value )
+
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: String
+ Result:
+ 1. Let n be StringToBigInt(prim).
+ 2. If n is NaN, throw a SyntaxError exception.
+ 3. Return n.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(SyntaxError, function() {
+ new TA(["definately not a number"]);
+ }, "StringToBigInt(prim) == NaN");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-tobigint.js
new file mode 100644
index 000000000..90b8a41fa
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/string-tobigint.js
@@ -0,0 +1,77 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Behavior for input array of Strings, successful conversion
+info: |
+ 22.2.4.4 TypedArray ( object )
+
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ 9.4.5.5 [[Set]] ( P, V, Receiver)
+
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ 9.4.5.9 IntegerIndexedElementSet ( O, index, value )
+
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: String
+ Result:
+ 1. Let n be StringToBigInt(prim).
+ 2. If n is NaN, throw a SyntaxError exception.
+ 3. Return n.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ var typedArray = new TA(['', '1']);
+
+ assert.sameValue(typedArray[0], 0n);
+ assert.sameValue(typedArray[1], 1n);
+
+ assert.throws(TypeError, function() {
+ new TA(["1n"]);
+ }, "A StringNumericLiteral may not include a BigIntLiteralSuffix.");
+
+ assert.throws(TypeError, function() {
+ new TA(["Infinity"]);
+ }, "Replace the StrUnsignedDecimalLiteral production with DecimalDigits to not allow Infinity..");
+
+ assert.throws(TypeError, function() {
+ new TA(["1.1"]);
+ }, "Replace the StrUnsignedDecimalLiteral production with DecimalDigits to not allow... decimal points...");
+
+ assert.throws(TypeError, function() {
+ new TA(["1e7"]);
+ }, "Replace the StrUnsignedDecimalLiteral production with DecimalDigits to not allow... exponents...");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/symbol-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/symbol-tobigint.js
new file mode 100644
index 000000000..2183b6ab1
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/symbol-tobigint.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt on Symbol
+info: |
+ 22.2.4.4 TypedArray ( object )
+
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ 9.4.5.5 [[Set]] ( P, V, Receiver)
+
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ 9.4.5.9 IntegerIndexedElementSet ( O, index, value )
+
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Symbol
+ Result: Throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray, Symbol]
+---*/
+
+var s = Symbol()
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(TypeError, function() {
+ new TA([s]);
+ }, "abrupt completion from Symbol");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js
index 027ad4ba6..116401a4c 100644
--- a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js
@@ -31,15 +31,15 @@ info: |
9.4.5.9 IntegerIndexedElementSet ( O, index, value )
...
- 3. Let numValue be ? ToNumber(value).
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
...
- 7.1.3 ToNumber ( argument )
+ ToBigInt ( argument )
Object, Apply the following steps:
-
- 1. Let primValue be ? ToPrimitive(argument, hint Number).
- 2. Return ? ToNumber(primValue).
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table 10.
7.1.1 ToPrimitive ( input [ , PreferredType ] )
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js
index 9d84bee67..7742ba6ac 100644
--- a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js
@@ -31,15 +31,15 @@ info: |
9.4.5.9 IntegerIndexedElementSet ( O, index, value )
...
- 3. Let numValue be ? ToNumber(value).
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
...
- 7.1.3 ToNumber ( argument )
+ ToBigInt ( argument )
Object, Apply the following steps:
-
- 1. Let primValue be ? ToPrimitive(argument, hint Number).
- 2. Return ? ToNumber(primValue).
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table 10.
7.1.1 ToPrimitive ( input [ , PreferredType ] )
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-tostring.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-tostring.js
index 58801c0b0..bbe3c2c5b 100644
--- a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-tostring.js
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-tostring.js
@@ -31,15 +31,15 @@ info: |
9.4.5.9 IntegerIndexedElementSet ( O, index, value )
...
- 3. Let numValue be ? ToNumber(value).
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
...
- 7.1.3 ToNumber ( argument )
+ ToBigInt ( argument )
Object, Apply the following steps:
-
- 1. Let primValue be ? ToPrimitive(argument, hint Number).
- 2. Return ? ToNumber(primValue).
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table 10.
7.1.1 ToPrimitive ( input [ , PreferredType ] )
@@ -81,7 +81,7 @@ testWithBigIntTypedArrayConstructors(function(TA) {
assert.throws(Test262Error, function() {
new TA([8n, sample]);
- }, "abrupt completion from ToNumber(sample)");
+ }, "abrupt completion from ToBigInt(sample)");
assert.sameValue(valueOf, 1, "valueOf called once");
assert.sameValue(toString, 1, "toString called once");
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js
index 90a587af7..3165cbd39 100644
--- a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js
@@ -31,15 +31,15 @@ info: |
9.4.5.9 IntegerIndexedElementSet ( O, index, value )
...
- 3. Let numValue be ? ToNumber(value).
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
...
- 7.1.3 ToNumber ( argument )
+ ToBigInt ( argument )
Object, Apply the following steps:
-
- 1. Let primValue be ? ToPrimitive(argument, hint Number).
- 2. Return ? ToNumber(primValue).
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table 10.
7.1.1 ToPrimitive ( input [ , PreferredType ] )
@@ -82,7 +82,7 @@ testWithBigIntTypedArrayConstructors(function(TA) {
assert.throws(TypeError, function() {
new TA([8n, sample]);
- }, "abrupt completion from ToNumber(sample)");
+ }, "abrupt completion from ToBigInt(sample)");
assert.sameValue(valueOf, 1, "valueOf called once");
assert.sameValue(toString, 1, "toString called once");
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof.js
index d5138d56e..b9f0d461a 100644
--- a/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof.js
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/throws-setting-obj-valueof.js
@@ -31,15 +31,15 @@ info: |
9.4.5.9 IntegerIndexedElementSet ( O, index, value )
...
- 3. Let numValue be ? ToNumber(value).
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
...
- 7.1.3 ToNumber ( argument )
+ ToBigInt ( argument )
Object, Apply the following steps:
-
- 1. Let primValue be ? ToPrimitive(argument, hint Number).
- 2. Return ? ToNumber(primValue).
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table 10.
7.1.1 ToPrimitive ( input [ , PreferredType ] )
@@ -76,7 +76,7 @@ testWithBigIntTypedArrayConstructors(function(TA) {
assert.throws(Test262Error, function() {
new TA([8n, sample]);
- }, "abrupt completion from ToNumber(sample)");
+ }, "abrupt completion from ToBigInt(sample)");
assert.sameValue(valueOf, 1, "valueOf called once");
});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/object-arg/undefined-tobigint.js b/test/built-ins/TypedArrays/ctors-bigint/object-arg/undefined-tobigint.js
new file mode 100644
index 000000000..26f708df5
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/object-arg/undefined-tobigint.js
@@ -0,0 +1,53 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-object
+description: >
+ Return abrupt on undefined
+info: |
+ TypedArray ( object )
+ 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 does not have either a [[TypedArrayName]] or an [[ArrayBufferData]]
+ internal slot.
+ ...
+ 8. Repeat, while k < len
+ ...
+ b. Let kValue be ? Get(arrayLike, Pk).
+ c. Perform ? Set(O, Pk, kValue, true).
+ ...
+
+ [[Set]] ( P, V, Receiver)
+ ...
+ 2. If Type(P) is String and if SameValue(O, Receiver) is true, then
+ a. Let numericIndex be ! CanonicalNumericIndexString(P).
+ b. If numericIndex is not undefined, then
+ i. Return ? IntegerIndexedElementSet(O, numericIndex, V).
+ ...
+
+ IntegerIndexedElementSet ( O, index, value )
+ ...
+ 5. If arrayTypeName is "BigUint64Array" or "BigInt64Array",
+ let numValue be ? ToBigInt(value).
+ ...
+
+ ToBigInt ( argument )
+ Object, Apply the following steps:
+ 1. Let prim be ? ToPrimitive(argument, hint Number).
+ 2. Return the value that prim corresponds to in Table [BigInt Conversions]
+
+ BigInt Conversions
+ Argument Type: Undefined
+ Result: Throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+
+ assert.throws(TypeError, function() {
+ new TA([undefined]);
+ }, "abrupt completion from undefined");
+
+});
diff --git a/test/built-ins/TypedArrays/ctors-bigint/typedarray-arg/src-typedarray-not-big-throws.js b/test/built-ins/TypedArrays/ctors-bigint/typedarray-arg/src-typedarray-not-big-throws.js
new file mode 100644
index 000000000..190b2356f
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors-bigint/typedarray-arg/src-typedarray-not-big-throws.js
@@ -0,0 +1,36 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-typedarray
+description: >
+ If typedArray constructor argument is not a Big(U)Int, throw
+info: |
+ 22.2.4.3 TypedArray ( typedArray )
+
+ 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 a [[TypedArrayName]] internal slot.
+
+ ...
+ 19. Else,
+ ...
+ c. If one of srcType and elementType contains the substring "Big" and the other
+ does not, throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js, testTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+var notBigTypedArray;
+
+testWithTypedArrayConstructors(function(TA) {
+
+ notBigTypedArray = new TA(16);
+
+ testWithBigIntTypedArrayConstructors(function(BTA) {
+ assert.throws(TypeError, function() {
+ new BTA(notBigTypedArray);
+ });
+ });
+
+});
diff --git a/test/built-ins/TypedArrays/ctors/typedarray-arg/src-typedarray-big-throws.js b/test/built-ins/TypedArrays/ctors/typedarray-arg/src-typedarray-big-throws.js
new file mode 100644
index 000000000..370f392fb
--- /dev/null
+++ b/test/built-ins/TypedArrays/ctors/typedarray-arg/src-typedarray-big-throws.js
@@ -0,0 +1,37 @@
+// Copyright (C) 2018 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-typedarray
+description: >
+ If typedArray constructor argument is a Big(U)Int, throw
+info: |
+ 22.2.4.3 TypedArray ( typedArray )
+
+ 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 a [[TypedArrayName]] internal slot.
+
+ ...
+ 19. Else,
+ ...
+ c. If one of srcType and elementType contains the substring "Big" and the other
+ does not, throw a TypeError exception.
+
+includes: [testBigIntTypedArray.js, testTypedArray.js]
+features: [BigInt, TypedArray]
+---*/
+
+var bigTypedArray;
+
+testWithBigIntTypedArrayConstructors(function(BTA) {
+
+ bigTypedArray = new BTA(16);
+
+ testWithTypedArrayConstructors(function(TA) {
+ assert.throws(TypeError, function() {
+ new TA(bigTypedArray);
+ });
+ });
+
+});
+