Coverage: Array.prototype.item, String.prototype.item, TypedArray.prototype.item. Closes gh-2809, gh-2810, gh-2811

This commit is contained in:
Rick Waldron 2020-09-22 16:39:41 -04:00
parent bf205bac84
commit e3b12065b2
34 changed files with 942 additions and 0 deletions

View File

@ -182,6 +182,12 @@ logical-assignment-operators
# https://github.com/tc39/proposal-atomics-wait-async
Atomics.waitAsync
# Item Method
# https://github.com/tc39/proposal-item-method
Array.prototype.item
String.prototype.item
TypedArray.prototype.item
## Standard language features
#
# Language features that have been included in a published version of the

View File

@ -0,0 +1,27 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Property type and descriptor.
info: |
Array.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let valueOfCallCount = 0;
let index = {
valueOf() {
valueOfCallCount++;
return 1;
}
};
let a = [0,1,2,3];
assert.sameValue(a.item(index), 1, 'a.item({valueOf() {valueOfCallCount++; return 1;}}) must return 1');
assert.sameValue(valueOfCallCount, 1, 'The value of `valueOfCallCount` is 1');

View File

@ -0,0 +1,20 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Property type and descriptor.
info: |
Array.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let a = [0,1,2,3];
assert.throws(TypeError, () => {
a.item(Symbol());
}, '`a.item(Symbol())` throws TypeError');

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Property type and descriptor.
info: |
Array.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let a = [0,1,2,3];
assert.sameValue(a.item(false), 0, 'a.item(false) must return 0');
assert.sameValue(a.item(null), 0, 'a.item(null) must return 0');
assert.sameValue(a.item(undefined), 0, 'a.item(undefined) must return 0');
assert.sameValue(a.item(""), 0, 'a.item("") must return 0');
assert.sameValue(a.item(function() {}), 0, 'a.item(function() {}) must return 0');
assert.sameValue(a.item([]), 0, 'a.item([]) must return 0');
assert.sameValue(a.item(true), 1, 'a.item(true) must return 1');
assert.sameValue(a.item("1"), 1, 'a.item("1") must return 1');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Array.prototype.item.length value and descriptor.
info: |
Array.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
assert.sameValue(
Array.prototype.item.length, 1,
'The value of Array.prototype.item.length is 1'
);
verifyNotEnumerable(Array.prototype.item, 'length');
verifyNotWritable(Array.prototype.item, 'length');
verifyConfigurable(Array.prototype.item, 'length');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Array.prototype.item.name value and descriptor.
info: |
Array.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
assert.sameValue(
Array.prototype.item.name, 'item',
'The value of Array.prototype.item.name is "item"'
);
verifyNotEnumerable(Array.prototype.item, 'name');
verifyNotWritable(Array.prototype.item, 'name');
verifyConfigurable(Array.prototype.item, 'name');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Property type and descriptor.
info: |
Array.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
assert.sameValue(
typeof Array.prototype.item,
'function',
'The value of `typeof Array.prototype.item` is "function"'
);
verifyNotEnumerable(Array.prototype, 'item');
verifyWritable(Array.prototype, 'item');
verifyConfigurable(Array.prototype, 'item');

View File

@ -0,0 +1,22 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Return abrupt from ToObject(this value).
info: |
Array.prototype.item( index )
Let O be ? ToObject(this value).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
assert.throws(TypeError, () => {
Array.prototype.item.call(undefined);
}, '`Array.prototype.item.call(undefined)` throws TypeError');
assert.throws(TypeError, () => {
Array.prototype.item.call(null);
}, '`Array.prototype.item.call(null)` throws TypeError');

View File

@ -0,0 +1,30 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Returns the item value at the specified relative index
info: |
Array.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfArrayLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let a = [1, 2, 3, 4, ,5];
assert.sameValue(a.item(0), 1, 'a.item(0) must return 1');
assert.sameValue(a.item(-1), 5, 'a.item(-1) must return 5');
assert.sameValue(a.item(-2), undefined, 'a.item(-2) must return undefined');
assert.sameValue(a.item(-3), 4, 'a.item(-3) must return 4');
assert.sameValue(a.item(-4), 3, 'a.item(-4) must return 3');

View File

@ -0,0 +1,31 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Returns the item value at the specified index
info: |
Array.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfArrayLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let a = [1, 2, 3, 4,,5];
assert.sameValue(a.item(0), 1, 'a.item(0) must return 1');
assert.sameValue(a.item(1), 2, 'a.item(1) must return 2');
assert.sameValue(a.item(2), 3, 'a.item(2) must return 3');
assert.sameValue(a.item(3), 4, 'a.item(3) must return 4');
assert.sameValue(a.item(4), undefined, 'a.item(4) must return undefined');
assert.sameValue(a.item(5), 5, 'a.item(5) must return 5');

View File

@ -0,0 +1,43 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Returns the item value at the specified index, respecting holes in sparse arrays.
info: |
Array.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfArrayLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [Array.prototype.item]
---*/
assert.sameValue(
typeof Array.prototype.item,
'function',
'The value of `typeof Array.prototype.item` is "function"'
);
let a = [0, 1, , 3, 4, , 6];
assert.sameValue(a.item(0), 0, 'a.item(0) must return 0');
assert.sameValue(a.item(1), 1, 'a.item(1) must return 1');
assert.sameValue(a.item(2), undefined, 'a.item(2) must return undefined');
assert.sameValue(a.item(3), 3, 'a.item(3) must return 3');
assert.sameValue(a.item(4), 4, 'a.item(4) must return 4');
assert.sameValue(a.item(5), undefined, 'a.item(5) must return undefined');
assert.sameValue(a.item(6), 6, 'a.item(6) must return 6');
assert.sameValue(a.item(-0), 0, 'a.item(-0) must return 0');
assert.sameValue(a.item(-1), 6, 'a.item(-1) must return 6');
assert.sameValue(a.item(-2), undefined, 'a.item(-2) must return undefined');
assert.sameValue(a.item(-3), 4, 'a.item(-3) must return 4');
assert.sameValue(a.item(-4), 3, 'a.item(-4) must return 3');
assert.sameValue(a.item(-5), undefined, 'a.item(-5) must return undefined');
assert.sameValue(a.item(-6), 1, 'a.item(-6) must return 1');

View File

@ -0,0 +1,20 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.item
description: >
Returns undefined if the specified index less than or greater than the available index range.
info: |
Array.prototype.item( index )
If k < 0 or k len, then return undefined.
features: [Array.prototype.item]
---*/
assert.sameValue(typeof Array.prototype.item, 'function');
let a = [];
assert.sameValue(a.item(-2), undefined, 'a.item(-2) must return undefined'); // wrap around the end
assert.sameValue(a.item(0), undefined, 'a.item(0) must return undefined');
assert.sameValue(a.item(1), undefined, 'a.item(1) must return undefined');

View File

@ -0,0 +1,27 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Property type and descriptor.
info: |
String.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let valueOfCallCount = 0;
let index = {
valueOf() {
valueOfCallCount++;
return 1;
}
};
let s = "01";
assert.sameValue(s.item(index), '1', 's.item({valueOf() {valueOfCallCount++; return 1;}}) must return 1');
assert.sameValue(valueOfCallCount, 1, 'The value of `valueOfCallCount` is 1');

View File

@ -0,0 +1,20 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Property type and descriptor.
info: |
String.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "01";
assert.throws(TypeError, () => {
s.item(Symbol());
}, '`s.item(Symbol())` throws TypeError');

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Property type and descriptor.
info: |
String.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "01";
assert.sameValue(s.item(false), '0', 's.item(false) must return 0');
assert.sameValue(s.item(null), '0', 's.item(null) must return 0');
assert.sameValue(s.item(undefined), '0', 's.item(undefined) must return 0');
assert.sameValue(s.item(""), '0', 's.item("") must return 0');
assert.sameValue(s.item(function() {}), '0', 's.item(function() {}) must return 0');
assert.sameValue(s.item([]), '0', 's.item([]) must return 0');
assert.sameValue(s.item(true), '1', 's.item(true) must return 1');
assert.sameValue(s.item("1"), '1', 's.item("1") must return 1');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
String.prototype.item.length value and descriptor.
info: |
String.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
assert.sameValue(
String.prototype.item.length, 1,
'The value of String.prototype.item.length is 1'
);
verifyNotEnumerable(String.prototype.item, 'length');
verifyNotWritable(String.prototype.item, 'length');
verifyConfigurable(String.prototype.item, 'length');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
String.prototype.item.name value and descriptor.
info: |
String.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
assert.sameValue(
String.prototype.item.name, 'item',
'The value of String.prototype.item.name is "item"'
);
verifyNotEnumerable(String.prototype.item, 'name');
verifyNotWritable(String.prototype.item, 'name');
verifyConfigurable(String.prototype.item, 'name');

View File

@ -0,0 +1,24 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Property type and descriptor.
info: |
String.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js]
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
assert.sameValue(
typeof String.prototype.item,
'function',
'The value of `typeof String.prototype.item` is "function"'
);
verifyNotEnumerable(String.prototype, 'item');
verifyWritable(String.prototype, 'item');
verifyConfigurable(String.prototype, 'item');

View File

@ -0,0 +1,22 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Return abrupt from RequireObjectCoercible(this value).
info: |
String.prototype.item( index )
Let O be ? RequireObjectCoercible(this value).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
assert.throws(TypeError, () => {
String.prototype.item.call(undefined);
}, '`String.prototype.item.call(undefined)` throws TypeError');
assert.throws(TypeError, () => {
String.prototype.item.call(null);
}, '`String.prototype.item.call(null)` throws TypeError');

View File

@ -0,0 +1,30 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-String.prototype.item
description: >
The method should return an Iterator instance.
info: |
String.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfStringLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "12\uD80034";
assert.sameValue(s.item(0), "1", 's.item(0) must return "1"');
assert.sameValue(s.item(1), "2", 's.item(1) must return "2"');
assert.sameValue(s.item(2), "\uD800", 's.item(2) must return "\\uD800"');
assert.sameValue(s.item(3), "3", 's.item(3) must return "3"');
assert.sameValue(s.item(4), "4", 's.item(4) must return "4"');

View File

@ -0,0 +1,29 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-String.prototypeitem
description: >
Returns the item value at the specified relative index
info: |
String.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfStringLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "12345";
assert.sameValue(s.item(0), "1", 's.item(0) must return "1"');
assert.sameValue(s.item(-1), "5", 's.item(-1) must return "5"');
assert.sameValue(s.item(-3), "3", 's.item(-3) must return "3"');
assert.sameValue(s.item(-4), "2", 's.item(-4) must return "2"');

View File

@ -0,0 +1,30 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-String.prototypeitem
description: >
Returns the item value at the specified index
info: |
String.prototypeitem ( )
Let O be ? ToObject(this value).
Let len be ? LengthOfStringLike(O).
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "12345";
assert.sameValue(s.item(0), "1", 's.item(0) must return "1"');
assert.sameValue(s.item(1), "2", 's.item(1) must return "2"');
assert.sameValue(s.item(2), "3", 's.item(2) must return "3"');
assert.sameValue(s.item(3), "4", 's.item(3) must return "4"');
assert.sameValue(s.item(4), "5", 's.item(4) must return "5"');

View File

@ -0,0 +1,20 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-string.prototype.item
description: >
Creates an iterator from a custom object.
info: |
String.prototype.item( index )
If k < 0 or k len, then return undefined.
features: [String.prototype.item]
---*/
assert.sameValue(typeof String.prototype.item, 'function');
let s = "";
assert.sameValue(s.item(-2), undefined, 's.item(-2) must return undefined'); // wrap around the end
assert.sameValue(s.item(0), undefined, 's.item(0) must return undefined');
assert.sameValue(s.item(1), undefined, 's.item(1) must return undefined');

View File

@ -0,0 +1,35 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Property type and descriptor.
info: |
%TypedArray%.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
includes: [testTypedArray.js]
features: [TypedArray, TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
let valueOfCallCount = 0;
let index = {
valueOf() {
valueOfCallCount++;
return 1;
}
};
let a = new TA([0,1,2,3]);
assert.sameValue(a.item(index), 1, 'a.item({valueOf() {valueOfCallCount++; return 1;}}) must return 1');
assert.sameValue(valueOfCallCount, 1, 'The value of `valueOfCallCount` is 1');
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Property type and descriptor.
info: |
%TypedArray%.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
includes: [testTypedArray.js]
features: [TypedArray, TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
let a = new TA([0,1,2,3]);
assert.throws(TypeError, () => {
a.item(Symbol());
}, '`a.item(Symbol())` throws TypeError');
});

View File

@ -0,0 +1,35 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Property type and descriptor.
info: |
%TypedArray%.prototype.item( index )
Let relativeIndex be ? ToInteger(index).
includes: [testTypedArray.js]
features: [TypedArray, TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
let a = new TA([0,1,2,3]);
assert.sameValue(a.item(false), 0, 'a.item(false) must return 0');
assert.sameValue(a.item(null), 0, 'a.item(null) must return 0');
assert.sameValue(a.item(undefined), 0, 'a.item(undefined) must return 0');
assert.sameValue(a.item(""), 0, 'a.item("") must return 0');
assert.sameValue(a.item(function() {}), 0, 'a.item(function() {}) must return 0');
assert.sameValue(a.item([]), 0, 'a.item([]) must return 0');
assert.sameValue(a.item(true), 1, 'a.item(true) must return 1');
assert.sameValue(a.item("1"), 1, 'a.item("1") must return 1');
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
TypedArray.prototype.item.length value and descriptor.
info: |
%TypedArray%.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js, testTypedArray.js]
features: [TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
assert.sameValue(
TypedArray.prototype.item.length, 1,
'The value of TypedArray.prototype.item.length is 1'
);
verifyNotEnumerable(TypedArray.prototype.item, 'length');
verifyNotWritable(TypedArray.prototype.item, 'length');
verifyConfigurable(TypedArray.prototype.item, 'length');

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
%TypedArray%.prototype.item.name value and descriptor.
info: |
%TypedArray%.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js, testTypedArray.js]
features: [TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
assert.sameValue(
TypedArray.prototype.item.name, 'item',
'The value of TypedArray.prototype.item.name is "item"'
);
verifyNotEnumerable(TypedArray.prototype.item, 'name');
verifyNotWritable(TypedArray.prototype.item, 'name');
verifyConfigurable(TypedArray.prototype.item, 'name');

View File

@ -0,0 +1,22 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Property type and descriptor.
info: |
%TypedArray%.prototype.item( index )
17 ECMAScript Standard Built-in Objects
includes: [propertyHelper.js, testTypedArray.js]
features: [TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
verifyNotEnumerable(TypedArray.prototype, 'item');
verifyWritable(TypedArray.prototype, 'item');
verifyConfigurable(TypedArray.prototype, 'item');

View File

@ -0,0 +1,40 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Return abrupt from ToObject(this value).
info: |
%TypedArray%.prototype.item( index )
Let O be the this value.
Perform ? ValidateTypedArray(O).
includes: [testTypedArray.js]
features: [TypedArray,TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
assert.throws(TypeError, () => {
TypedArray.prototype.item.call(undefined);
}, '`TypedArray.prototype.item.call(undefined)` throws TypeError');
assert.throws(TypeError, () => {
TypedArray.prototype.item.call(null);
}, '`TypedArray.prototype.item.call(null)` throws TypeError');
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
assert.throws(TypeError, () => {
TA.prototype.item.call(undefined);
}, '`TA.prototype.item.call(undefined)` throws TypeError');
assert.throws(TypeError, () => {
TA.prototype.item.call(null);
}, '`TA.prototype.item.call(null)` throws TypeError');
});

View File

@ -0,0 +1,37 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Returns the item value at the specified relative index
info: |
%TypedArray%.prototype.item( index )
Let O be the this value.
Perform ? ValidateTypedArray(O).
Let len be O.[[ArrayLength]].
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
includes: [testTypedArray.js]
features: [TypedArray,TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
let a = new TA([1, 2, 3, 4, 5]);
assert.sameValue(a.item(0), 1, 'a.item(0) must return 1');
assert.sameValue(a.item(-1), 5, 'a.item(-1) must return 5');
assert.sameValue(a.item(-2), 4, 'a.item(-2) must return 4');
assert.sameValue(a.item(-3), 3, 'a.item(-3) must return 3');
assert.sameValue(a.item(-4), 2, 'a.item(-4) must return 2');
});

View File

@ -0,0 +1,38 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Returns the item value at the specified index
info: |
%TypedArray%.prototype.item( index )
Let O be the this value.
Perform ? ValidateTypedArray(O).
Let len be O.[[ArrayLength]].
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
includes: [testTypedArray.js]
features: [TypedArray,TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
let a = new TA([1, 2, 3, 4]);
assert.sameValue(a.item(0), 1, 'a.item(0) must return 1');
assert.sameValue(a.item(1), 2, 'a.item(1) must return 2');
assert.sameValue(a.item(2), 3, 'a.item(2) must return 3');
assert.sameValue(a.item(3), 4, 'a.item(3) must return 4');
});

View File

@ -0,0 +1,50 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Returns the item value at the specified index, holes are filled in sparse arrays.
info: |
%TypedArray%.prototype.item( index )
Let O be the this value.
Perform ? ValidateTypedArray(O).
Let len be O.[[ArrayLength]].
Let relativeIndex be ? ToInteger(index).
If relativeIndex 0, then
Let k be relativeIndex.
Else,
Let k be len + relativeIndex.
If k < 0 or k len, then return undefined.
Return ? Get(O, ! ToString(k)).
includes: [testTypedArray.js]
features: [TypedArray, TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
let a = new TA([0, 1, , 3, 4, , 6]);
let filler = 0;
if (TA.name.startsWith('Float')) {
filler = NaN;
}
assert.sameValue(a.item(0), 0, 'a.item(0) must return 0');
assert.sameValue(a.item(1), 1, 'a.item(1) must return 1');
assert.sameValue(a.item(2), filler, 'a.item(2) must return the value of filler');
assert.sameValue(a.item(3), 3, 'a.item(3) must return 3');
assert.sameValue(a.item(4), 4, 'a.item(4) must return 4');
assert.sameValue(a.item(5), filler, 'a.item(5) must return the value of filler');
assert.sameValue(a.item(6), 6, 'a.item(6) must return 6');
assert.sameValue(a.item(-0), 0, 'a.item(-0) must return 0');
assert.sameValue(a.item(-1), 6, 'a.item(-1) must return 6');
assert.sameValue(a.item(-2), filler, 'a.item(-2) must return the value of filler');
assert.sameValue(a.item(-3), 4, 'a.item(-3) must return 4');
assert.sameValue(a.item(-4), 3, 'a.item(-4) must return 3');
assert.sameValue(a.item(-5), filler, 'a.item(-5) must return the value of filler');
assert.sameValue(a.item(-6), 1, 'a.item(-6) must return 1');
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-%typedarray%.prototype.item
description: >
Returns undefined if the specified index less than or greater than the available index range.
info: |
%TypedArray%.prototype.item( index )
If k < 0 or k len, then return undefined.
includes: [testTypedArray.js]
features: [TypedArray,TypedArray.prototype.item]
---*/
assert.sameValue(
typeof TypedArray.prototype.item,
'function',
'The value of `typeof TypedArray.prototype.item` is "function"'
);
testWithTypedArrayConstructors(TA => {
assert.sameValue(typeof TA.prototype.item, 'function', 'The value of `typeof TA.prototype.item` is "function"');
let a = new TA([]);
assert.sameValue(a.item(-2), undefined, 'a.item(-2) must return undefined'); // wrap around the end
assert.sameValue(a.item(0), undefined, 'a.item(0) must return undefined');
assert.sameValue(a.item(1), undefined, 'a.item(1) must return undefined');
});