1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
function basic() {
assertEq("a".at(0), "a");
assertEq("a".at(-1), "a");
assertEq("".at(0), undefined);
assertEq("".at(-1), undefined);
assertEq("".at(1), undefined);
assertEq("ab".at(0), "a");
assertEq("ab".at(1), "b");
assertEq("ab".at(-2), "a");
assertEq("ab".at(-1), "b");
assertEq("ab".at(2), undefined);
assertEq("ab".at(-3), undefined);
assertEq("ab".at(-4), undefined);
assertEq("ab".at(Infinity), undefined);
assertEq("ab".at(-Infinity), undefined);
assertEq("ab".at(NaN), "a"); // ToInteger(NaN) = 0
assertEq("\u{1f921}".at(0), "\u{d83e}");
assertEq("\u{1f921}".at(1), "\u{dd21}");
}
function other() {
var n = 146;
assertEq(String.prototype.at.call(n, 0), "1");
var obj = {};
assertEq(String.prototype.at.call(obj, -1), "]");
var b = true;
assertEq(String.prototype.at.call(b, 0), "t");
}
basic();
other();
if (typeof reportCompare === "function")
reportCompare(true, true);
|