mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-25 13:16:11 +03:00
terminal: more dirty tests
This commit is contained in:
@ -809,6 +809,10 @@ pub fn clearRows(
|
|||||||
|
|
||||||
var it = self.pages.pageIterator(.right_down, tl, bl);
|
var it = self.pages.pageIterator(.right_down, tl, bl);
|
||||||
while (it.next()) |chunk| {
|
while (it.next()) |chunk| {
|
||||||
|
// Mark everything in this chunk as dirty
|
||||||
|
var dirty = chunk.page.data.dirtyBitSet();
|
||||||
|
dirty.setRangeValue(.{ .start = chunk.start, .end = chunk.end }, true);
|
||||||
|
|
||||||
for (chunk.rows()) |*row| {
|
for (chunk.rows()) |*row| {
|
||||||
const cells_offset = row.cells;
|
const cells_offset = row.cells;
|
||||||
const cells_multi: [*]Cell = row.cells.ptr(chunk.page.data.memory);
|
const cells_multi: [*]Cell = row.cells.ptr(chunk.page.data.memory);
|
||||||
@ -2508,6 +2512,7 @@ test "Screen clearRows active one line" {
|
|||||||
|
|
||||||
try s.testWriteString("hello, world");
|
try s.testWriteString("hello, world");
|
||||||
s.clearRows(.{ .active = .{} }, null, false);
|
s.clearRows(.{ .active = .{} }, null, false);
|
||||||
|
try testing.expect(s.pages.isDirty(.{ .active = .{ .x = 0, .y = 0 } }));
|
||||||
const str = try s.dumpStringAlloc(alloc, .{ .screen = .{} });
|
const str = try s.dumpStringAlloc(alloc, .{ .screen = .{} });
|
||||||
defer alloc.free(str);
|
defer alloc.free(str);
|
||||||
try testing.expectEqualStrings("", str);
|
try testing.expectEqualStrings("", str);
|
||||||
@ -2522,6 +2527,8 @@ test "Screen clearRows active multi line" {
|
|||||||
|
|
||||||
try s.testWriteString("hello\nworld");
|
try s.testWriteString("hello\nworld");
|
||||||
s.clearRows(.{ .active = .{} }, null, false);
|
s.clearRows(.{ .active = .{} }, null, false);
|
||||||
|
try testing.expect(s.pages.isDirty(.{ .active = .{ .x = 0, .y = 0 } }));
|
||||||
|
try testing.expect(s.pages.isDirty(.{ .active = .{ .x = 0, .y = 1 } }));
|
||||||
const str = try s.dumpStringAlloc(alloc, .{ .screen = .{} });
|
const str = try s.dumpStringAlloc(alloc, .{ .screen = .{} });
|
||||||
defer alloc.free(str);
|
defer alloc.free(str);
|
||||||
try testing.expectEqualStrings("", str);
|
try testing.expectEqualStrings("", str);
|
||||||
|
@ -8662,8 +8662,14 @@ test "Terminal: eraseDisplay simple erase below" {
|
|||||||
try t.linefeed();
|
try t.linefeed();
|
||||||
for ("GHI") |c| try t.print(c);
|
for ("GHI") |c| try t.print(c);
|
||||||
t.setCursorPos(2, 2);
|
t.setCursorPos(2, 2);
|
||||||
|
|
||||||
|
t.clearDirty();
|
||||||
t.eraseDisplay(.below, false);
|
t.eraseDisplay(.below, false);
|
||||||
|
|
||||||
|
try testing.expect(!t.isDirty(.{ .active = .{ .x = 0, .y = 0 } }));
|
||||||
|
try testing.expect(t.isDirty(.{ .active = .{ .x = 0, .y = 1 } }));
|
||||||
|
try testing.expect(t.isDirty(.{ .active = .{ .x = 0, .y = 2 } }));
|
||||||
|
|
||||||
{
|
{
|
||||||
const str = try t.plainString(testing.allocator);
|
const str = try t.plainString(testing.allocator);
|
||||||
defer testing.allocator.free(str);
|
defer testing.allocator.free(str);
|
||||||
@ -8840,7 +8846,12 @@ test "Terminal: eraseDisplay simple erase above" {
|
|||||||
try t.linefeed();
|
try t.linefeed();
|
||||||
for ("GHI") |c| try t.print(c);
|
for ("GHI") |c| try t.print(c);
|
||||||
t.setCursorPos(2, 2);
|
t.setCursorPos(2, 2);
|
||||||
|
|
||||||
|
t.clearDirty();
|
||||||
t.eraseDisplay(.above, false);
|
t.eraseDisplay(.above, false);
|
||||||
|
try testing.expect(t.isDirty(.{ .active = .{ .x = 0, .y = 0 } }));
|
||||||
|
try testing.expect(t.isDirty(.{ .active = .{ .x = 0, .y = 1 } }));
|
||||||
|
try testing.expect(!t.isDirty(.{ .active = .{ .x = 0, .y = 2 } }));
|
||||||
|
|
||||||
{
|
{
|
||||||
const str = try t.plainString(testing.allocator);
|
const str = try t.plainString(testing.allocator);
|
||||||
@ -9018,7 +9029,10 @@ test "Terminal: eraseDisplay protected complete" {
|
|||||||
t.setProtectedMode(.dec);
|
t.setProtectedMode(.dec);
|
||||||
try t.print('X');
|
try t.print('X');
|
||||||
t.setCursorPos(t.screen.cursor.y + 1, 4);
|
t.setCursorPos(t.screen.cursor.y + 1, 4);
|
||||||
|
|
||||||
|
t.clearDirty();
|
||||||
t.eraseDisplay(.complete, true);
|
t.eraseDisplay(.complete, true);
|
||||||
|
for (0..t.rows) |y| try testing.expect(t.isDirty(.{ .active = .{ .x = 0, .y = y } }));
|
||||||
|
|
||||||
{
|
{
|
||||||
const str = try t.plainString(testing.allocator);
|
const str = try t.plainString(testing.allocator);
|
||||||
|
Reference in New Issue
Block a user