summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/String/at.js
blob: c994d44de12550bf417391b0f1894c78fd747404 (plain)
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);