summaryrefslogtreecommitdiff
path: root/test/parallel/test-icu-stringwidth.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-icu-stringwidth.js')
-rw-r--r--test/parallel/test-icu-stringwidth.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/parallel/test-icu-stringwidth.js b/test/parallel/test-icu-stringwidth.js
index 0620d3af39..48384f916d 100644
--- a/test/parallel/test-icu-stringwidth.js
+++ b/test/parallel/test-icu-stringwidth.js
@@ -69,3 +69,25 @@ assert.strictEqual(
// Control chars and combining chars are zero
assert.strictEqual(readline.getStringWidth('\u200E\n\u220A\u20D2'), 1);
+
+// Test that the fast path for ASCII characters yields results consistent
+// with the 'slow' path.
+for (const ambiguousAsFullWidth of [ false, true ]) {
+ for (let i = 0; i < 256; i++) {
+ const char = String.fromCharCode(i);
+ assert.strictEqual(
+ readline.getStringWidth(i, { ambiguousAsFullWidth }),
+ readline.getStringWidth(char, { ambiguousAsFullWidth }));
+ assert.strictEqual(
+ readline.getStringWidth(char + '🎉', { ambiguousAsFullWidth }),
+ readline.getStringWidth(char, { ambiguousAsFullWidth }) + 2);
+
+ if (i < 32 || (i >= 127 && i < 160)) { // Control character
+ assert.strictEqual(
+ readline.getStringWidth(i, { ambiguousAsFullWidth }), 0);
+ } else if (i < 127) { // Regular ASCII character
+ assert.strictEqual(
+ readline.getStringWidth(i, { ambiguousAsFullWidth }), 1);
+ }
+ }
+}