mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:27:35 +00:00
LibJS: Implement StringPad abstract operation with UTF-16 code units
Affects String.prototype.padStart and String.prototype.padEnd.
This commit is contained in:
parent
ef2ff5f88b
commit
eaa1360eee
3 changed files with 51 additions and 7 deletions
|
@ -16,3 +16,19 @@ test("basic functionality", () => {
|
|||
expect(s.padEnd(10, "bar")).toBe("foobarbarb");
|
||||
expect(s.padEnd(10, "123456789")).toBe("foo1234567");
|
||||
});
|
||||
|
||||
test("UTF-16", () => {
|
||||
var s = "😀";
|
||||
expect(s).toHaveLength(2);
|
||||
expect(s.padEnd(-1)).toBe("😀");
|
||||
expect(s.padEnd(0)).toBe("😀");
|
||||
expect(s.padEnd(1)).toBe("😀");
|
||||
expect(s.padEnd(2)).toBe("😀");
|
||||
expect(s.padEnd(3)).toBe("😀 ");
|
||||
expect(s.padEnd(10)).toBe("😀 ");
|
||||
|
||||
expect(s.padEnd(2, "😀")).toBe("😀");
|
||||
expect(s.padEnd(3, "😀")).toBe("😀\ud83d");
|
||||
expect(s.padEnd(4, "😀")).toBe("😀😀");
|
||||
expect(s.padEnd(5, "😀")).toBe("😀😀\ud83d");
|
||||
});
|
||||
|
|
|
@ -16,3 +16,19 @@ test("basic functionality", () => {
|
|||
expect(s.padStart(10, "bar")).toBe("barbarbfoo");
|
||||
expect(s.padStart(10, "123456789")).toBe("1234567foo");
|
||||
});
|
||||
|
||||
test("UTF-16", () => {
|
||||
var s = "😀";
|
||||
expect(s).toHaveLength(2);
|
||||
expect(s.padStart(-1)).toBe("😀");
|
||||
expect(s.padStart(0)).toBe("😀");
|
||||
expect(s.padStart(1)).toBe("😀");
|
||||
expect(s.padStart(2)).toBe("😀");
|
||||
expect(s.padStart(3)).toBe(" 😀");
|
||||
expect(s.padStart(10)).toBe(" 😀");
|
||||
|
||||
expect(s.padStart(2, "😀")).toBe("😀");
|
||||
expect(s.padStart(3, "😀")).toBe("\ud83d😀");
|
||||
expect(s.padStart(4, "😀")).toBe("😀😀");
|
||||
expect(s.padStart(5, "😀")).toBe("😀\ud83d😀");
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue