Files
core-js/tests/unit-global/es.string.pad-start.js

32 lines
1.3 KiB
JavaScript

import { STRICT } from '../helpers/constants.js';
QUnit.test('String#padStart', assert => {
const { padStart } = String.prototype;
assert.isFunction(padStart);
assert.arity(padStart, 1);
assert.name(padStart, 'padStart');
assert.looksNative(padStart);
assert.nonEnumerable(String.prototype, 'padStart');
assert.same('abc'.padStart(5), ' abc');
assert.same('abc'.padStart(4, 'de'), 'dabc');
assert.same('abc'.padStart(), 'abc');
assert.same('abc'.padStart(5, '_'), '__abc');
assert.same(''.padStart(0), '');
assert.same('foo'.padStart(1), 'foo');
assert.same('foo'.padStart(5, ''), 'foo');
const thrower = { toString() { throw new Error('oops'); } };
assert.throws(() => 'a'.padStart(10, thrower), 'throws on thrower argument conversion');
assert.same('abc'.padStart(2, thrower), 'abc', 'does not throw on thrower argument when no padding needed');
const symbol = Symbol('padStart test');
assert.throws(() => padStart.call(symbol, 10, 'a'), 'throws on symbol context');
assert.throws(() => padStart.call('a', 10, symbol), 'throws on symbol argument');
assert.same('abc'.padStart(2, symbol), 'abc', 'does not throw on symbol fillString when no padding needed');
if (STRICT) {
assert.throws(() => padStart.call(null, 0), TypeError);
assert.throws(() => padStart.call(undefined, 0), TypeError);
}
});