mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
terminal2: selectWord more tests
This commit is contained in:
@ -4740,6 +4740,7 @@ test "Screen: selectWord" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// X
|
||||||
test "Screen: selectWord across soft-wrap" {
|
test "Screen: selectWord across soft-wrap" {
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
const alloc = testing.allocator;
|
const alloc = testing.allocator;
|
||||||
|
@ -1068,12 +1068,6 @@ pub fn selectWord(self: *Screen, pin: Pin) ?Selection {
|
|||||||
const rac = p.rowAndCell();
|
const rac = p.rowAndCell();
|
||||||
const cell = rac.cell;
|
const cell = rac.cell;
|
||||||
|
|
||||||
// If we are going to the next row and it isn't wrapped, we
|
|
||||||
// return the previous.
|
|
||||||
if (p.x == 0 and !rac.row.wrap) {
|
|
||||||
break :end prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we reached an empty cell its always a boundary
|
// If we reached an empty cell its always a boundary
|
||||||
if (!cell.hasText()) break :end prev;
|
if (!cell.hasText()) break :end prev;
|
||||||
|
|
||||||
@ -1085,6 +1079,12 @@ pub fn selectWord(self: *Screen, pin: Pin) ?Selection {
|
|||||||
) != null;
|
) != null;
|
||||||
if (this_boundary != expect_boundary) break :end prev;
|
if (this_boundary != expect_boundary) break :end prev;
|
||||||
|
|
||||||
|
// If we are going to the next row and it isn't wrapped, we
|
||||||
|
// return the previous.
|
||||||
|
if (p.x == p.page.data.size.cols - 1 and !rac.row.wrap) {
|
||||||
|
break :end p;
|
||||||
|
}
|
||||||
|
|
||||||
prev = p;
|
prev = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4145,3 +4145,69 @@ test "Screen: selectWord" {
|
|||||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "Screen: selectWord across soft-wrap" {
|
||||||
|
const testing = std.testing;
|
||||||
|
const alloc = testing.allocator;
|
||||||
|
|
||||||
|
var s = try init(alloc, 5, 10, 0);
|
||||||
|
defer s.deinit();
|
||||||
|
try s.testWriteString(" 1234012\n 123");
|
||||||
|
|
||||||
|
{
|
||||||
|
const contents = try s.dumpStringAlloc(alloc, .{ .screen = .{} });
|
||||||
|
defer alloc.free(contents);
|
||||||
|
try testing.expectEqualStrings(" 1234\n012\n 123", contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Going forward
|
||||||
|
{
|
||||||
|
var sel = s.selectWord(s.pages.pin(.{ .active = .{
|
||||||
|
.x = 1,
|
||||||
|
.y = 0,
|
||||||
|
} }).?).?;
|
||||||
|
defer sel.deinit(&s);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 1,
|
||||||
|
.y = 0,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 2,
|
||||||
|
.y = 1,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Going backward
|
||||||
|
{
|
||||||
|
var sel = s.selectWord(s.pages.pin(.{ .active = .{
|
||||||
|
.x = 1,
|
||||||
|
.y = 1,
|
||||||
|
} }).?).?;
|
||||||
|
defer sel.deinit(&s);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 1,
|
||||||
|
.y = 0,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 2,
|
||||||
|
.y = 1,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Going forward and backward
|
||||||
|
{
|
||||||
|
var sel = s.selectWord(s.pages.pin(.{ .active = .{
|
||||||
|
.x = 3,
|
||||||
|
.y = 0,
|
||||||
|
} }).?).?;
|
||||||
|
defer sel.deinit(&s);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 1,
|
||||||
|
.y = 0,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||||
|
try testing.expectEqual(point.Point{ .screen = .{
|
||||||
|
.x = 2,
|
||||||
|
.y = 1,
|
||||||
|
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user