summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/column_drag.zig18
-rw-r--r--test/fs_bench.zig2
-rw-r--r--test/mode.zig6
-rw-r--r--test/panes.zig50
-rw-r--r--test/pdf.zig10
5 files changed, 43 insertions, 43 deletions
diff --git a/test/column_drag.zig b/test/column_drag.zig
index f128aa61..feea1bf7 100644
--- a/test/column_drag.zig
+++ b/test/column_drag.zig
@@ -37,7 +37,7 @@ fn expectOrder(p: *Pardes, before: []const Snapshot, order: []const usize) !void
try std.testing.expectEqual(saved.serial, p.col_serial[column]);
try std.testing.expectEqual(saved.count, p.col_n[column]);
try std.testing.expectEqualSlices(usize, saved.panes[0..saved.count], p.col_panes[column][0..p.col_n[column]]);
- try std.testing.expectEqualStrings(saved.tag, p.columnTag(column));
+ try std.testing.expectEqualStrings(saved.tag, pardes.tagline.columnTag(p, column));
}
}
@@ -67,7 +67,7 @@ test "column grip drag moves only its interval and keeps tag caret with the colu
_ = try p.render(frame.allocator());
var before: [4]Snapshot = undefined;
for (&before, 0..) |*saved, column| {
- saved.* = .{ .weight = p.col_weight[column], .serial = p.col_serial[column], .count = p.col_n[column], .tag = p.columnTag(column) };
+ saved.* = .{ .weight = p.col_weight[column], .serial = p.col_serial[column], .count = p.col_n[column], .tag = pardes.tagline.columnTag(p, column) };
@memcpy(saved.panes[0..saved.count], p.col_panes[column][0..saved.count]);
}
const layer = try tagLayer(p, 1);
@@ -75,8 +75,8 @@ test "column grip drag moves only its interval and keeps tag caret with the colu
p.update(.{ .mouse = headerMouse(layer, 10, .press) });
p.update(.{ .mouse = headerMouse(layer, 10, .release) });
try std.testing.expectEqual(@as(?usize, 1), p.header_column);
- const caret = p.focusedHeader().?.cur_col;
- const anchor = p.focusedHeader().?.vsel;
+ const caret = pardes.tagline.focusedHeader(p).?.cur_col;
+ const anchor = pardes.tagline.focusedHeader(p).?.vsel;
const scroll = p.header_scroll;
const target = p.col_x[3] + p.col_w[3] - 2;
const last_rect = p.rects[p.col_panes[3][0]];
@@ -93,14 +93,14 @@ test "column grip drag moves only its interval and keeps tag caret with the colu
try expectOrder(p, &before, &.{ 0, 2, 3, 1 });
try std.testing.expectEqual(active, p.active);
try std.testing.expectEqual(@as(?usize, 3), p.header_column);
- try std.testing.expectEqual(caret, p.focusedHeader().?.cur_col);
- try std.testing.expectEqual(anchor, p.focusedHeader().?.vsel);
+ try std.testing.expectEqual(caret, pardes.tagline.focusedHeader(p).?.cur_col);
+ try std.testing.expectEqual(anchor, pardes.tagline.focusedHeader(p).?.vsel);
try std.testing.expectEqual(scroll, p.header_scroll);
// The old tag envelope must not edit the new occupant of its old index,
// including the interval before hosts request another rendered frame.
p.update(.{ .mouse = stale });
try std.testing.expectEqual(@as(?usize, 3), p.header_column);
- try std.testing.expectEqual(caret, p.focusedHeader().?.cur_col);
+ try std.testing.expectEqual(caret, pardes.tagline.focusedHeader(p).?.cur_col);
_ = try p.render(frame.allocator());
try std.testing.expectEqual(before[1].serial, (try tagLayer(p, 3)).serial);
try std.testing.expectEqual(p.col_w[3] - pardes.TAG_TEXT_INSET, (try tagLayer(p, 3)).viewport.w);
@@ -110,7 +110,7 @@ test "column grip drag moves only its interval and keeps tag caret with the colu
mouse(p, .release, back);
try expectOrder(p, &before, &.{ 0, 1, 2, 3 });
try std.testing.expectEqual(@as(?usize, 1), p.header_column);
- try std.testing.expectEqual(caret, p.focusedHeader().?.cur_col);
+ try std.testing.expectEqual(caret, pardes.tagline.focusedHeader(p).?.cur_col);
try std.testing.expectEqual(active, p.active);
// A structural change between press and release must not retarget the
// in-flight drag to whichever column now occupies the original index.
@@ -165,7 +165,7 @@ test "column grip is separate from compact text and the resize seam" {
try std.testing.expect(p.drag != .column_move);
try std.testing.expect(p.header_drag);
p.update(.{ .mouse = headerMouse(layer, 0, .release) });
- try std.testing.expectEqual(@as(i32, 0), p.focusedHeader().?.cur_col);
+ try std.testing.expectEqual(@as(i32, 0), pardes.tagline.focusedHeader(p).?.cur_col);
mouse(p, .press, p.col_x[1] + config.GUTTER - 1);
try std.testing.expect(p.drag == .column_move);
mouse(p, .release, p.col_x[1] + config.GUTTER - 1);
diff --git a/test/fs_bench.zig b/test/fs_bench.zig
index a816ebbd..da9da47c 100644
--- a/test/fs_bench.zig
+++ b/test/fs_bench.zig
@@ -65,7 +65,7 @@ const Session = struct {
.file_id = id,
.file_serial = pane.serial,
.body_bytes = pane.file.?.content.len,
- .tag = try core.tagText(backing, pane),
+ .tag = try pardes.tagline.tagText(core, backing, pane),
};
}
diff --git a/test/mode.zig b/test/mode.zig
index c429ea72..c7d7d548 100644
--- a/test/mode.zig
+++ b/test/mode.zig
@@ -11,7 +11,7 @@ fn mode(p: *Pardes, id: usize, expected: panes.Text.Mode) !void {
fn clickModeTag(p: *Pardes) !void {
const pane = p.panes[0].?;
- const text = try p.tagText(p.scratch.allocator(), pane);
+ const text = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
const col = std.mem.indexOf(u8, text, "Mode") orelse return error.MissingModeTag;
const rect = p.rects[0];
const row = if (p.settings.tag_bottom) rect.y + rect.h - pardes.BOX_H else rect.y;
@@ -33,7 +33,7 @@ test "Mode cycles terminal modes and keeps legacy toggle and custom tags" {
while (p.nextEffect()) |_| {}
const pane = p.panes[0].?;
try std.testing.expectEqual(panes.Text.Mode.tty, pane.body.mode);
- try std.testing.expect(std.mem.indexOf(u8, try p.tagText(p.scratch.allocator(), pane), " Mode") != null);
+ try std.testing.expect(std.mem.indexOf(u8, try pardes.tagline.tagText(p, p.scratch.allocator(), pane), " Mode") != null);
try mode(p, 0, .normal);
try mode(p, 0, .insert);
// A clicked tag is typed into; its execute key is a normal-mode key, as
@@ -67,7 +67,7 @@ test "Mode from actual tag Exec preserves parked file and output insert transact
p.presentation.enabled = false;
const pane = try p.setTestFile("ab\n");
if (output) pane.file.?.output = .{ .from = .search };
- try std.testing.expect(std.mem.indexOf(u8, try p.tagText(p.scratch.allocator(), pane), " Mode") == null);
+ try std.testing.expect(std.mem.indexOf(u8, try pardes.tagline.tagText(p, p.scratch.allocator(), pane), " Mode") == null);
try customTag(pane, " Mode");
try mode(p, 0, .insert);
p.update(.{ .key = .{ .cp = '界', .text = "界" } });
diff --git a/test/panes.zig b/test/panes.zig
index 4804c497..954e431b 100644
--- a/test/panes.zig
+++ b/test/panes.zig
@@ -15,7 +15,7 @@ const filesystem = pardes.filesystem;
/// The tag's caret as a byte offset into the tag as it is shown, prefix
/// included.
fn tagCaret(p: *Pardes, pane: *Pane) !usize {
- return (try p.tagPrefix(pane)).len + @as(usize, @intCast(pane.tag.cur_col));
+ return (try pardes.tagline.tagPrefix(p, pane)).len + @as(usize, @intCast(pane.tag.cur_col));
}
fn setTag(pane: *Pane, text: []const u8) !void {
@@ -52,7 +52,7 @@ const TagLayerTests = struct {
defer frame.deinit();
_ = try p.render(frame.allocator());
const layer = try findLayer(p, .pane, 0);
- const text = try p.tagText(frame.allocator(), pane);
+ const text = try pardes.tagline.tagText(p, frame.allocator(), pane);
const at = std.mem.indexOf(u8, text, "END").?;
const col = panes.File.displayWidth(text[0..at]);
try std.testing.expect(col > p.rects[0].w);
@@ -70,7 +70,7 @@ const TagLayerTests = struct {
try std.testing.expectEqual(at, try tagCaret(p, pane));
p.update(.{ .key = .{ .cp = 'X', .text = "X" } });
_ = try p.render(frame.allocator());
- const edited = try p.tagText(frame.allocator(), pane);
+ const edited = try pardes.tagline.tagText(p, frame.allocator(), pane);
try std.testing.expect(std.mem.endsWith(u8, edited, "界 XEND"));
try std.testing.expectEqual(@as(u16, 0), pane.tag_scroll);
try std.testing.expectEqualStrings("body\n", pane.file.?.content);
@@ -140,7 +140,7 @@ const TagLayerTests = struct {
try setTag(left, " " ++ "a" ** 110);
_ = try p.render(frame.allocator());
const left_layer = try findLayer(p, .pane, 0);
- const left_text = try p.tagText(frame.allocator(), left);
+ const left_text = try pardes.tagline.tagText(p, frame.allocator(), left);
const start_x = @as(f32, @floatFromInt(left_layer.viewport.x)) * 10 + 12.5;
const beyond_x = edge + 12.5;
p.update(.{ .mouse = mouse(left_layer, start_x, .press) });
@@ -161,7 +161,7 @@ const TagLayerTests = struct {
const x = @as(f32, @floatFromInt(header.viewport.x)) * 10 + 62.5 * 5;
p.update(.{ .mouse = mouse(header, x, .press) });
p.update(.{ .mouse = mouse(header, x, .release) });
- try std.testing.expectEqual(@as(i32, 63), p.focusedHeader().?.cur_col);
+ try std.testing.expectEqual(@as(i32, 63), pardes.tagline.focusedHeader(p).?.cur_col);
if (kind == .column) try std.testing.expectEqual(@as(?usize, 1), p.header_column) else try std.testing.expect(p.header_column == null);
p.update(.{ .key = .{ .cp = Key.escape } });
}
@@ -184,7 +184,7 @@ test "a tag with a newline in it is as tall as its lines, and each line is typed
p.update(.{ .key = .{ .cp = 'A' } });
p.update(.{ .key = .{ .cp = Key.enter } });
p.update(.{ .key = .{ .cp = 'S', .text = "Second" } });
- try std.testing.expect(std.mem.endsWith(u8, Pardes.curTail(pane), "\nSecond"));
+ try std.testing.expect(std.mem.endsWith(u8, pardes.tagline.curTail(pane), "\nSecond"));
try std.testing.expectEqual(@as(u16, 2), pane.tag_rows);
// The pane keeps its height; the body gives the tag its row.
try std.testing.expectEqual(height, p.rects[0].h);
@@ -252,7 +252,7 @@ const TagNavigationTests = struct {
// Nothing to remember yet: `:` lands on Save, in normal mode.
key(p, ':');
try std.testing.expect(first.focus == .tag and first.tag.mode == .normal);
- const tail = Pardes.curTail(first);
+ const tail = pardes.tagline.curTail(first);
try std.testing.expectEqualStrings("Save", tail[@intCast(first.tag.cur_col)..][0..4]);
key(p, Key.home);
for (0..3) |_| key(p, Key.right);
@@ -278,7 +278,7 @@ const TagNavigationTests = struct {
_ = try p.render(frame.allocator());
const rect = p.rects[0];
const y = if (p.settings.tag_bottom) rect.y + rect.h - pardes.BOX_H else rect.y;
- const prefix: u16 = @intCast(panes.File.displayWidth(try p.tagPrefix(first)));
+ const prefix: u16 = @intCast(panes.File.displayWidth(try pardes.tagline.tagPrefix(p, first)));
ClickCursorTests.click(p, .left, rect.x + pardes.TAG_TEXT_INSET + prefix + 6, y);
try std.testing.expectEqual(@as(usize, 0), p.active);
try std.testing.expect(first.focus == .tag and first.tag.mode == .insert);
@@ -316,7 +316,7 @@ const TagNavigationTests = struct {
try std.testing.expectEqual(chord == Key.tab, saved);
// ...and the tag still knows where it was.
key(p, ':');
- try std.testing.expectEqualStrings("Save", Pardes.curTail(pane)[@intCast(pane.tag.cur_col)..][0..4]);
+ try std.testing.expectEqualStrings("Save", pardes.tagline.curTail(pane)[@intCast(pane.tag.cur_col)..][0..4]);
}
}
@@ -403,14 +403,14 @@ const TagNavigationTests = struct {
key(p, ':');
key(p, 'i');
key(p, Key.end);
- const before = Pardes.curTail(pane).len;
+ const before = pardes.tagline.curTail(pane).len;
try std.testing.expect(pane.focus == .tag and pane.tag.mode == .insert and pane.body.mode == .normal);
for ("hjklHJKL:") |letter| {
const text = [_]u8{letter};
p.update(.{ .key = .{ .cp = letter, .text = &text } });
try std.testing.expect(pane.focus == .tag and pane.tag.mode == .insert);
}
- try std.testing.expectEqualStrings("hjklHJKL:", Pardes.curTail(pane)[before..]);
+ try std.testing.expectEqualStrings("hjklHJKL:", pardes.tagline.curTail(pane)[before..]);
try std.testing.expectEqualStrings("body\n", pane.file.?.content);
try std.testing.expectEqual(@as(usize, 0), p.active);
}
@@ -1187,7 +1187,7 @@ const TagNameTintTests = struct {
var arena = std.heap.ArenaAllocator.init(p.gpa);
defer arena.deinit();
const surface = try p.render(arena.allocator());
- const text = try p.tagText(arena.allocator(), pane);
+ const text = try pardes.tagline.tagText(p, arena.allocator(), pane);
const base = std.mem.lastIndexOfScalar(u8, name, '/') orelse return error.MissingDirectory;
const rect = p.rects[id];
const y = if (p.settings.tag_bottom) rect.y + rect.h - pardes.BOX_H else rect.y;
@@ -1235,7 +1235,7 @@ const TagNameTintTests = struct {
configure(p);
defer p.custom_theme = null;
const name = "/a/very/long/directory/that/extends/past/the/tag/界e\u{301}name-with-a-long-tail.zig";
- p.draftName(pane, 0);
+ pardes.tagline.draftName(p, pane, 0);
redraft(pane, name);
pane.input.cur_col = @intCast(std.mem.indexOf(u8, name, "界").?);
try std.testing.expect((try check(p, 0, name)) > 0);
@@ -1304,7 +1304,7 @@ test "pane filename drafts commit and cancel without changing body or command ta
const original = try p.gpa.dupe(u8, pane.file.?.path);
defer p.gpa.free(original);
try pane.appendTag(" SyntaxBold");
- const tail = try p.gpa.dupe(u8, Pardes.curTail(pane));
+ const tail = try p.gpa.dupe(u8, pardes.tagline.curTail(pane));
defer p.gpa.free(tail);
for ([_]bool{ false, true }) |commit| {
clickPathEnd(p, pane);
@@ -1312,13 +1312,13 @@ test "pane filename drafts commit and cancel without changing body or command ta
p.update(.{ .paste = "/new name.zig" });
try std.testing.expectEqualStrings(original, pane.file.?.path);
try std.testing.expectEqualStrings("/new name.zig", pane.input.own.?);
- try std.testing.expectEqualStrings(tail, Pardes.curTail(pane));
+ try std.testing.expectEqualStrings(tail, pardes.tagline.curTail(pane));
try std.testing.expectEqualStrings("original body\n", pane.file.?.content);
p.update(.{ .key = .{ .cp = if (commit) Key.enter else Key.escape } });
try std.testing.expect(pane.focus == .body);
try std.testing.expect(pane.prompt == .none);
try std.testing.expectEqualStrings(if (commit) "/new name.zig" else original, pane.file.?.path);
- try std.testing.expectEqualStrings(tail, Pardes.curTail(pane));
+ try std.testing.expectEqualStrings(tail, pardes.tagline.curTail(pane));
while (p.nextEffect()) |effect| try std.testing.expect(std.meta.activeTag(effect) != .save_file);
}
try std.testing.expect(pane.file.?.revision != pane.file.?.saved_revision);
@@ -1351,13 +1351,13 @@ test "leaving a pane or entering a header cancels an uncommitted filename" {
const pane = try p.setTestFile("untouched\n");
for ([_]bool{ false, true }) |header| {
p.active = 0;
- p.exitHeader();
+ pardes.tagline.exitHeader(p);
p.update(.tick);
clickPathEnd(p, pane);
p.update(.{ .paste = "/draft" });
try std.testing.expect(pane.prompt == .name);
if (header) {
- p.enterHeader(null);
+ pardes.tagline.enterHeader(p, null);
p.update(.tick);
} else {
try std.testing.expect(p.executeBuiltinLine(0, "New"));
@@ -1379,7 +1379,7 @@ test "middle clicking Save commits the drafted filename before issuing a save" {
var arena = std.heap.ArenaAllocator.init(p.gpa);
defer arena.deinit();
_ = try p.render(arena.allocator());
- const text = try p.tagText(arena.allocator(), pane);
+ const text = try pardes.tagline.tagText(p, arena.allocator(), pane);
const save_at = std.mem.indexOf(u8, text, "Save").?;
const x: u16 = @intCast(p.rects[0].x + pardes.TAG_TEXT_INSET + save_at - pane.tag_scroll);
const y = p.rects[0].y;
@@ -1421,15 +1421,15 @@ test "paste into pane commands and prompts never inserts into the body" {
p.update(.{ .key = .{ .cp = 'A' } });
// A tag takes a paste as a body does, newline and all.
p.update(.{ .paste = " Custom\nCommand" });
- try std.testing.expect(std.mem.indexOf(u8, Pardes.curTail(pane), " Custom\nCommand") != null);
+ try std.testing.expect(std.mem.indexOf(u8, pardes.tagline.curTail(pane), " Custom\nCommand") != null);
p.update(.{ .key = .{ .cp = Key.escape } });
p.startPrompt(pane, .{ .search = config.search_marker });
p.update(.{ .paste = "t\r\nwo" });
try std.testing.expectEqualStrings(config.search_marker ++ "two", pane.promptText().?);
- try std.testing.expect(std.mem.indexOf(u8, Pardes.curTail(pane), " Custom\nCommand") != null);
+ try std.testing.expect(std.mem.indexOf(u8, pardes.tagline.curTail(pane), " Custom\nCommand") != null);
try std.testing.expectEqualStrings("one two one\n", pane.file.?.content);
p.update(.{ .key = .{ .cp = Key.escape } });
- try std.testing.expect(std.mem.indexOf(u8, Pardes.curTail(pane), " Custom\nCommand") != null);
+ try std.testing.expect(std.mem.indexOf(u8, pardes.tagline.curTail(pane), " Custom\nCommand") != null);
}
test "long pane tags reveal commands and map visible clicks to whole tag addresses" {
@@ -1446,7 +1446,7 @@ test "long pane tags reveal commands and map visible clicks to whole tag address
const surface = try p.render(arena.allocator());
try std.testing.expect(pane.tag_scroll > 0);
try std.testing.expect(surface.cursor.?.x < p.rects[0].x + p.rects[0].w);
- const text = try p.tagText(p.gpa, pane);
+ const text = try pardes.tagline.tagText(p, p.gpa, pane);
defer p.gpa.free(text);
const offset = std.mem.indexOf(u8, text, "SyntaxBold").?;
const x: u16 = @intCast(p.rects[0].x + pardes.TAG_TEXT_INSET + panes.File.rawDisplayCol(text, offset) - pane.tag_scroll);
@@ -1455,7 +1455,7 @@ test "long pane tags reveal commands and map visible clicks to whole tag address
p.update(.{ .mouse = .{ .col = x, .row = y, .button = config.exec_button, .kind = .press } });
p.update(.{ .mouse = .{ .col = x, .row = y, .button = config.exec_button, .kind = .release } });
try std.testing.expectEqual(!before, p.settings.syntax_bold);
- try std.testing.expectEqualStrings(text, try p.tagText(p.scratch.allocator(), pane));
+ try std.testing.expectEqualStrings(text, try pardes.tagline.tagText(p, p.scratch.allocator(), pane));
}
test "terminal overlay recoloring never materializes unrelated history" {
@@ -4155,7 +4155,7 @@ test "cancelled normal gestures leave no count or subprefix after mouse and focu
const tag_y = if (p.settings.tag_bottom) rect.y + rect.h - pardes.BOX_H else rect.y;
const body_y = p.bodyTop(pane, rect);
const x = if (gesture == .tag)
- rect.x + pardes.TAG_TEXT_INSET + @as(u16, @intCast(panes.File.displayWidth(try p.tagPrefix(pane)))) + 3
+ rect.x + pardes.TAG_TEXT_INSET + @as(u16, @intCast(panes.File.displayWidth(try pardes.tagline.tagPrefix(p, pane)))) + 3
else
rect.x + config.GUTTER + @as(u16, @intCast(panes.File.gutterWidth(pane))) + 3;
const y = if (gesture == .tag) tag_y else body_y;
diff --git a/test/pdf.zig b/test/pdf.zig
index 745ecb1a..3a592451 100644
--- a/test/pdf.zig
+++ b/test/pdf.zig
@@ -612,7 +612,7 @@ test "MuPDF pane renders, navigates, searches, and round-trips its page" {
try std.testing.expectEqual(@as(u16, 0), pane.pdf.?.pan_y);
try std.testing.expectEqual(@as(u16, 8), p.cell_pixels.w);
try std.testing.expectEqual(@as(u16, 16), p.cell_pixels.h);
- const initial_tag = try pardes.test_api.tagText(p, p.scratch.allocator(), pane);
+ const initial_tag = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
const expected_tag = try std.fmt.allocPrint(p.scratch.allocator(), "{s} [1/{d}]{s}", .{ pane.pdf.?.path, pane.pdf.?.page_count, pane_tail });
try std.testing.expectEqualStrings(expected_tag, initial_tag);
try std.testing.expect(std.mem.endsWith(u8, initial_tag, pane_tail));
@@ -833,7 +833,7 @@ test "MuPDF pane renders, navigates, searches, and round-trips its page" {
revision_before_toggle,
panes.Pdf.rasterForPage(&pane.pdf.?, pane.pdf.?.page).?.revision,
);
- const height_tag = try pardes.test_api.tagText(p, p.scratch.allocator(), pane);
+ const height_tag = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
const expected_height_tag = try std.fmt.allocPrint(p.scratch.allocator(), "{s} [{d}/{d}]{s}", .{ pane.pdf.?.path, pane.pdf.?.page + 1, pane.pdf.?.page_count, pane_tail });
try std.testing.expectEqualStrings(expected_height_tag, height_tag);
for (p.panes) |slot| {
@@ -1250,7 +1250,7 @@ test "PdfTint cycles pane-local state without adding tag clutter" {
return error.MissingPdfTintBuiltin;
try std.testing.expectEqual(PdfTintMode.filtered, pv.tint);
- const initial_tag = try pardes.test_api.tagText(p, p.scratch.allocator(), pane);
+ const initial_tag = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
try std.testing.expect(std.mem.startsWith(u8, initial_tag, pv.path));
try std.testing.expect(std.mem.endsWith(u8, initial_tag, " PdfSections PdfTint Collapse Del"));
try std.testing.expect(std.mem.indexOf(u8, initial_tag, "filtered") == null);
@@ -1263,7 +1263,7 @@ test "PdfTint cycles pane-local state without adding tag clutter" {
null,
));
try std.testing.expectEqual(PdfTintMode.full, pv.tint);
- const full_tag = try pardes.test_api.tagText(p, p.scratch.allocator(), pane);
+ const full_tag = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
try std.testing.expectEqualStrings(initial_tag, full_tag);
try std.testing.expect(std.mem.indexOf(u8, full_tag, "full") == null);
@@ -1291,7 +1291,7 @@ test "PdfTint cycles pane-local state without adding tag clutter" {
null,
));
try std.testing.expectEqual(PdfTintMode.disabled, pv.tint);
- const disabled_tag = try pardes.test_api.tagText(p, p.scratch.allocator(), pane);
+ const disabled_tag = try pardes.tagline.tagText(p, p.scratch.allocator(), pane);
try std.testing.expectEqualStrings(initial_tag, disabled_tag);
try std.testing.expect(std.mem.indexOf(u8, disabled_tag, "disabled") == null);
try std.testing.expect(pardes.test_api.runBuiltin(