From 65c292b7dd9f77be9e823dcd661f241122164d07 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 19 Dec 2025 21:41:28 +0100 Subject: [PATCH] Fix outdated editor tests for grapheme-aware cursor movement --- packages/tui/test/editor.test.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/tui/test/editor.test.ts b/packages/tui/test/editor.test.ts index 1f02e3e4..716c2b4d 100644 --- a/packages/tui/test/editor.test.ts +++ b/packages/tui/test/editor.test.ts @@ -309,14 +309,13 @@ describe("Editor component", () => { assert.strictEqual(text, "Àâ"); }); - it("deletes multi-code-unit emojis with repeated Backspace", () => { + it("deletes multi-code-unit emojis with single Backspace", () => { const editor = new Editor(defaultEditorTheme); editor.handleInput("πŸ˜€"); editor.handleInput("πŸ‘"); - // Delete the last emoji (πŸ‘) - requires 2 backspaces since emojis are 2 code units - editor.handleInput("\x7f"); // Backspace + // Delete the last emoji (πŸ‘) - single backspace deletes whole grapheme cluster editor.handleInput("\x7f"); // Backspace const text = editor.getText(); @@ -341,20 +340,18 @@ describe("Editor component", () => { assert.strictEqual(text, "Γ€xΓΆΓΌ"); }); - it("moves cursor in code units across multi-code-unit emojis before insertion", () => { + it("moves cursor across multi-code-unit emojis with single arrow key", () => { const editor = new Editor(defaultEditorTheme); editor.handleInput("πŸ˜€"); editor.handleInput("πŸ‘"); editor.handleInput("πŸŽ‰"); - // Move cursor left over last emoji (πŸŽ‰) - editor.handleInput("\x1b[D"); // Left arrow + // Move cursor left over last emoji (πŸŽ‰) - single arrow moves over whole grapheme editor.handleInput("\x1b[D"); // Left arrow // Move cursor left over second emoji (πŸ‘) editor.handleInput("\x1b[D"); - editor.handleInput("\x1b[D"); // Insert 'x' between first and second emoji editor.handleInput("x");