Skip to content

Commit

Permalink
[Fix] ES2024: StringPad, StringPaddingBuiltinsImpl: prefer uppe…
Browse files Browse the repository at this point in the history
…rcase spec enums
  • Loading branch information
ljharb committed Mar 29, 2024
1 parent fc195ed commit f1049a5
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
6 changes: 3 additions & 3 deletions 2024/StringPad.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ module.exports = function StringPad(S, maxLength, fillString, placement) {
if (typeof fillString !== 'string') {
throw new $TypeError('Assertion failed: `fillString` must be a String');
}
if (placement !== 'start' && placement !== 'end') {
throw new $TypeError('Assertion failed: `placement` must be "start" or "end"');
if (placement !== 'start' && placement !== 'end' && placement !== 'START' && placement !== 'END') {
throw new $TypeError('Assertion failed: `placement` must be ~START~ or ~END~');
}

var stringLength = S.length; // step 1
Expand All @@ -39,7 +39,7 @@ module.exports = function StringPad(S, maxLength, fillString, placement) {
}
truncatedStringFiller = $strSlice(truncatedStringFiller, 0, fillLen);

if (placement === 'start') { return truncatedStringFiller + S; } // step 6
if (placement === 'start' || placement === 'START') { return truncatedStringFiller + S; } // step 6

return S + truncatedStringFiller; // step 7
};
4 changes: 2 additions & 2 deletions 2024/StringPaddingBuiltinsImpl.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ var ToString = require('./ToString');
// https://262.ecma-international.org/15.0/#sec-stringpaddingbuiltinsimpl

module.exports = function StringPaddingBuiltinsImpl(O, maxLength, fillString, placement) {
if (placement !== 'start' && placement !== 'end') {
throw new $TypeError('Assertion failed: `placement` must be "start" or "end"');
if (placement !== 'start' && placement !== 'end' && placement !== 'START' && placement !== 'END') {
throw new $TypeError('Assertion failed: `placement` must be ~START~ or ~END~');
}

var S = ToString(O); // step 1
Expand Down
24 changes: 22 additions & 2 deletions test/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -16790,7 +16790,7 @@ var es2024 = function ES2024(ES, ops, expectedMissing, skips) {
t['throws'](
function () { ES.StringPad('', 0, '', 'not start or end'); },
TypeError,
'`placement` must be "start" or "end"'
'`placement` must be ~START~ or ~END~'
);

t.equal(ES.StringPad('a', 3, '', 'start'), 'a');
Expand All @@ -16802,14 +16802,23 @@ var es2024 = function ES2024(ES, ops, expectedMissing, skips) {
t.equal(ES.StringPad('a', 7, '012', 'start'), '012012a');
t.equal(ES.StringPad('a', 7, '012', 'end'), 'a012012');

t.equal(ES.StringPad('a', 3, '', 'START'), 'a');
t.equal(ES.StringPad('a', 3, '', 'END'), 'a');
t.equal(ES.StringPad('a', 3, '0', 'START'), '00a');
t.equal(ES.StringPad('a', 3, '0', 'END'), 'a00');
t.equal(ES.StringPad('a', 3, '012', 'START'), '01a');
t.equal(ES.StringPad('a', 3, '012', 'END'), 'a01');
t.equal(ES.StringPad('a', 7, '012', 'START'), '012012a');
t.equal(ES.StringPad('a', 7, '012', 'END'), 'a012012');

t.end();
});

test('StringPaddingBuiltinsImpl', function (t) {
t['throws'](
function () { ES.StringPaddingBuiltinsImpl('', 0, '', 'not start or end'); },
TypeError,
'`placement` must be "start" or "end"'
'`placement` must be ~START~ or ~END~'
);

t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '', 'start'), 'a');
Expand All @@ -16823,6 +16832,17 @@ var es2024 = function ES2024(ES, ops, expectedMissing, skips) {
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, undefined, 'start'), ' a');
t.equal(ES.StringPaddingBuiltinsImpl('abc', 1, undefined, 'start'), 'abc');

t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '', 'START'), 'a');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '', 'END'), 'a');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '0', 'START'), '00a');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '0', 'END'), 'a00');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '012', 'START'), '01a');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, '012', 'END'), 'a01');
t.equal(ES.StringPaddingBuiltinsImpl('a', 7, '012', 'START'), '012012a');
t.equal(ES.StringPaddingBuiltinsImpl('a', 7, '012', 'END'), 'a012012');
t.equal(ES.StringPaddingBuiltinsImpl('a', 3, undefined, 'START'), ' a');
t.equal(ES.StringPaddingBuiltinsImpl('abc', 1, undefined, 'START'), 'abc');

t.end();
});

Expand Down

0 comments on commit f1049a5

Please sign in to comment.