function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } function startTest(string, expected) { shouldBe(string.trimStart(), expected); shouldBe(string.trimLeft(), expected); } function endTest(string, expected) { shouldBe(string.trimEnd(), expected); shouldBe(string.trimRight(), expected); } function trimTest(string, expected) { shouldBe(string.trim(), expected); } startTest(` Hello `, `Hello `); endTest(` Hello `, ` Hello`); trimTest(` Hello `, `Hello`); startTest(` 日本語 `, `日本語 `); endTest(` 日本語 `, ` 日本語`); trimTest(` 日本語 `, `日本語`); startTest(`Hello`, `Hello`); endTest(`Hello`, `Hello`); trimTest(`Hello`, `Hello`); startTest(`日本語`, `日本語`); endTest(`日本語`, `日本語`); trimTest(`日本語`, `日本語`); startTest(``, ``); endTest(``, ``); trimTest(``, ``); startTest(` `, ``); endTest(` `, ``); trimTest(` `, ``); startTest(` A`, `A`); endTest(` A`, ` A`); trimTest(` A`, `A`); startTest(`A `, `A `); endTest(`A `, `A`); trimTest(`A `, `A`); shouldBe(String.prototype.trimStart, String.prototype.trimLeft); shouldBe(String.prototype.trimEnd, String.prototype.trimRight);