From 24ef5d1b1c0bcfdd58b84a0e63f2cfb63e5dab08 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 7 Aug 2023 08:07:14 -0700 Subject: [PATCH] tests for insert mode (4) --- src/terminal/Terminal.zig | 83 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 1d5c13b7b..2baa5eab0 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -2322,6 +2322,89 @@ test "Terminal: insertBlanks more than size" { } } +test "Terminal: insert mode with space" { + const alloc = testing.allocator; + var t = try init(alloc, 10, 2); + defer t.deinit(alloc); + + for ("hello") |c| try t.print(c); + t.setCursorPos(1, 2); + t.modes.insert = true; + try t.print('X'); + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("hXello", str); + } +} + +test "Terminal: insert mode doesn't wrap pushed characters" { + const alloc = testing.allocator; + var t = try init(alloc, 5, 2); + defer t.deinit(alloc); + + for ("hello") |c| try t.print(c); + t.setCursorPos(1, 2); + t.modes.insert = true; + try t.print('X'); + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("hXell", str); + } +} + +test "Terminal: insert mode does nothing at the end of the line" { + const alloc = testing.allocator; + var t = try init(alloc, 5, 2); + defer t.deinit(alloc); + + for ("hello") |c| try t.print(c); + t.modes.insert = true; + try t.print('X'); + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("hello\nX", str); + } +} + +test "Terminal: insert mode with wide characters" { + const alloc = testing.allocator; + var t = try init(alloc, 5, 2); + defer t.deinit(alloc); + + for ("hello") |c| try t.print(c); + t.setCursorPos(1, 2); + t.modes.insert = true; + try t.print('๐Ÿ˜€'); // 0x1F600 + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("h๐Ÿ˜€el", str); + } +} + +test "Terminal: insert mode with wide characters at end" { + const alloc = testing.allocator; + var t = try init(alloc, 5, 2); + defer t.deinit(alloc); + + for ("well") |c| try t.print(c); + t.modes.insert = true; + try t.print('๐Ÿ˜€'); // 0x1F600 + + { + var str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("well\n๐Ÿ˜€", str); + } +} + test "Terminal: cursorIsAtPrompt" { const alloc = testing.allocator; var t = try init(alloc, 3, 2);