mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 00:36:07 +03:00
terminal/Screen: improve selectionString page test
More readable (smaller) output when failing, catches more edge cases. At the time of this commit, this test is failing. Changed primarily to address the edge case that was missed before.
This commit is contained in:
@ -7079,29 +7079,30 @@ test "Screen: selectionString multi-page" {
|
||||
const testing = std.testing;
|
||||
const alloc = testing.allocator;
|
||||
|
||||
var s = try init(alloc, 130, 40, 512);
|
||||
var s = try init(alloc, 1, 3, 2048);
|
||||
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';
|
||||
|
||||
const first_page_size = s.pages.pages.first.?.data.capacity.rows;
|
||||
|
||||
// Lazy way to seek to the first page boundary.
|
||||
for (0..first_page_size - 1) |_| {
|
||||
try s.testWriteString("\n");
|
||||
}
|
||||
try s.testWriteString(&str);
|
||||
|
||||
try s.testWriteString("y\ny\ny");
|
||||
|
||||
{
|
||||
const sel = Selection.init(
|
||||
s.pages.pin(.{ .screen = .{ .x = 0, .y = 0 } }).?,
|
||||
s.pages.pin(.{ .active = .{ .x = 1, .y = 39 } }).?,
|
||||
s.pages.pin(.{ .active = .{ .x = 0, .y = 0 } }).?,
|
||||
s.pages.pin(.{ .active = .{ .x = 0, .y = 2 } }).?,
|
||||
false,
|
||||
);
|
||||
const contents = try s.selectionString(alloc, .{
|
||||
.sel = sel,
|
||||
.trim = true,
|
||||
.trim = false,
|
||||
});
|
||||
defer alloc.free(contents);
|
||||
const expected = str[0..1023];
|
||||
const expected = "y\ny\ny";
|
||||
try testing.expectEqualStrings(expected, contents);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user