mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 16:56:09 +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 testing = std.testing;
|
||||||
const alloc = testing.allocator;
|
const alloc = testing.allocator;
|
||||||
|
|
||||||
var s = try init(alloc, 130, 40, 512);
|
var s = try init(alloc, 1, 3, 2048);
|
||||||
defer s.deinit();
|
defer s.deinit();
|
||||||
// 512 * "y\n"
|
|
||||||
var str: [1024]u8 = undefined;
|
const first_page_size = s.pages.pages.first.?.data.capacity.rows;
|
||||||
var i: usize = 0;
|
|
||||||
while (i < str.len) : (i += 2) {
|
// Lazy way to seek to the first page boundary.
|
||||||
str[i] = 'y';
|
for (0..first_page_size - 1) |_| {
|
||||||
str[i + 1] = '\n';
|
try s.testWriteString("\n");
|
||||||
}
|
}
|
||||||
try s.testWriteString(&str);
|
|
||||||
|
try s.testWriteString("y\ny\ny");
|
||||||
|
|
||||||
{
|
{
|
||||||
const sel = Selection.init(
|
const sel = Selection.init(
|
||||||
s.pages.pin(.{ .screen = .{ .x = 0, .y = 0 } }).?,
|
s.pages.pin(.{ .active = .{ .x = 0, .y = 0 } }).?,
|
||||||
s.pages.pin(.{ .active = .{ .x = 1, .y = 39 } }).?,
|
s.pages.pin(.{ .active = .{ .x = 0, .y = 2 } }).?,
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
const contents = try s.selectionString(alloc, .{
|
const contents = try s.selectionString(alloc, .{
|
||||||
.sel = sel,
|
.sel = sel,
|
||||||
.trim = true,
|
.trim = false,
|
||||||
});
|
});
|
||||||
defer alloc.free(contents);
|
defer alloc.free(contents);
|
||||||
const expected = str[0..1023];
|
const expected = "y\ny\ny";
|
||||||
try testing.expectEqualStrings(expected, contents);
|
try testing.expectEqualStrings(expected, contents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user