/
es.string.at-alternative.js
32 lines (28 loc) · 1.04 KB
/
es.string.at-alternative.js
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
import { STRICT } from '../helpers/constants';
import at from 'core-js-pure/es/string/at';
import Symbol from 'core-js-pure/es/symbol';
QUnit.test('String#at', assert => {
assert.isFunction(at);
assert.same('1', at('123', 0));
assert.same('2', at('123', 1));
assert.same('3', at('123', 2));
assert.same(undefined, at('123', 3));
assert.same('3', at('123', -1));
assert.same('2', at('123', -2));
assert.same('1', at('123', -3));
assert.same(undefined, at('123', -4));
assert.same('1', at('123', 0.4));
assert.same('1', at('123', 0.5));
assert.same('1', at('123', 0.6));
assert.same('1', at('1', NaN));
assert.same('1', at('1'));
assert.same('1', at('123', -0));
// TODO: disabled by default because of the conflict with old proposal
// assert.same('\uD842', at('𠮷'));
assert.same('1', at({ toString() { return '123'; } }, 0));
assert.throws(() => at(Symbol(), 0), 'throws on symbol context');
if (STRICT) {
assert.throws(() => at(null, 0), TypeError);
assert.throws(() => at(undefined, 0), TypeError);
}
});