From fa5646e762b4836526858ba3e2ea2cfdb8c43812 Mon Sep 17 00:00:00 2001 From: Qwerasd Date: Wed, 3 Apr 2024 19:28:02 -0400 Subject: [PATCH] test(terminal/Screen): selectionString across page boundaries --- src/terminal/Screen.zig | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index a295f0ce5..f59a4549f 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -7073,6 +7073,37 @@ test "Screen: selectionString, rectangle, more complex w/breaks" { try testing.expectEqualStrings(expected, contents); } +test "Screen: selectionString multi-page" { + const testing = std.testing; + const alloc = testing.allocator; + + var s = try init(alloc, 130, 40, 512); + defer s.deinit(); + // 512 * "y\n" + var str: [1024]u8 = undefined; + var i: usize = 0; + while (i < str.len) : (i += 2) { + str[i] = 'y'; + str[i + 1] = '\n'; + } + try s.testWriteString(&str); + + { + const sel = Selection.init( + s.pages.pin(.{ .screen = .{ .x = 0, .y = 0 } }).?, + s.pages.pin(.{ .active = .{ .x = 1, .y = 39 } }).?, + false, + ); + const contents = try s.selectionString(alloc, .{ + .sel = sel, + .trim = true, + }); + defer alloc.free(contents); + const expected = str[0..1023]; + try testing.expectEqualStrings(expected, contents); + } +} + test "Screen: lineIterator" { const testing = std.testing; const alloc = testing.allocator;