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:
Qwerasd
2024-04-04 17:44:06 -04:00
parent e224ff887f
commit b03f80cadd

View File

@ -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);
}
}