mirror of https://github.com/tc39/test262.git
Coverage: Array.prototype.item, String.prototype.item, TypedArray.prototype.item. Closes gh-2809, gh-2810, gh-2811
This commit is contained in:
parent
bf205bac84
commit
e3b12065b2
|
@ -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
|
||||
|
|
|
@ -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');
|
20
test/built-ins/Array/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal file
20
test/built-ins/Array/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal 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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
43
test/built-ins/Array/prototype/item/returns-undefined-for-holes-in-sparse-arrays.js
vendored
Normal file
43
test/built-ins/Array/prototype/item/returns-undefined-for-holes-in-sparse-arrays.js
vendored
Normal 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');
|
20
test/built-ins/Array/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal file
20
test/built-ins/Array/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal 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');
|
||||
|
|
@ -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');
|
20
test/built-ins/String/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal file
20
test/built-ins/String/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal 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');
|
26
test/built-ins/String/prototype/item/index-non-numeric-argument-tointeger.js
vendored
Normal file
26
test/built-ins/String/prototype/item/index-non-numeric-argument-tointeger.js
vendored
Normal 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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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"');
|
|
@ -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"');
|
|
@ -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"');
|
20
test/built-ins/String/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal file
20
test/built-ins/String/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal 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');
|
||||
|
|
@ -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');
|
||||
});
|
28
test/built-ins/TypedArray/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal file
28
test/built-ins/TypedArray/prototype/item/index-non-numeric-argument-tointeger-invalid.js
vendored
Normal 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');
|
||||
});
|
35
test/built-ins/TypedArray/prototype/item/index-non-numeric-argument-tointeger.js
vendored
Normal file
35
test/built-ins/TypedArray/prototype/item/index-non-numeric-argument-tointeger.js
vendored
Normal 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');
|
||||
});
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
|
@ -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');
|
||||
});
|
|
@ -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');
|
||||
});
|
|
@ -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');
|
||||
});
|
50
test/built-ins/TypedArray/prototype/item/returns-undefined-for-holes-in-sparse-arrays.js
vendored
Normal file
50
test/built-ins/TypedArray/prototype/item/returns-undefined-for-holes-in-sparse-arrays.js
vendored
Normal 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');
|
||||
});
|
28
test/built-ins/TypedArray/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal file
28
test/built-ins/TypedArray/prototype/item/returns-undefined-for-out-of-range-index.js
vendored
Normal 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');
|
||||
});
|
Loading…
Reference in New Issue