summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/column_drag.zig40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/column_drag.zig b/test/column_drag.zig
index be4e33a3..85dca66b 100644
--- a/test/column_drag.zig
+++ b/test/column_drag.zig
@@ -212,3 +212,43 @@ test "column grips stay blank and muted across focus hover and drag" {
}
}
}
+
+test "column grip dropped in its own place moves the column's left edge" {
+ const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true, .cols = 120, .rows = 24 });
+ defer p.deinit();
+ _ = try p.setTestFile("body\n");
+ p.presentation.enabled = false;
+ p.settings.column_tags = true;
+ try std.testing.expect(p.executeBuiltinLine(0, "New"));
+ try std.testing.expect(layout.splitColumn(p, p.active, p.active, false));
+ p.update(.tick);
+ var frame = std.heap.ArenaAllocator.init(p.gpa);
+ defer frame.deinit();
+ _ = try p.render(frame.allocator());
+ const serials = .{ p.col_serial[0], p.col_serial[1] };
+ const edge = p.col_x[1];
+ const total = p.col_w[0] + p.col_w[1];
+ // A click in place, from either grip cell, changes nothing.
+ for (0..config.GUTTER) |offset| {
+ const x = edge + @as(u16, @intCast(offset));
+ mouse(p, .press, x);
+ mouse(p, .release, x);
+ _ = try p.render(frame.allocator());
+ try std.testing.expectEqual(edge, p.col_x[1]);
+ }
+ // Grabbed by its second cell and dropped 7 cells left: the edge follows.
+ mouse(p, .press, edge + 1);
+ mouse(p, .drag, edge + 1 - 7);
+ _ = try p.render(frame.allocator());
+ mouse(p, .release, edge + 1 - 7);
+ _ = try p.render(frame.allocator());
+ try std.testing.expectEqual(edge - 7, p.col_x[1]);
+ try std.testing.expectEqual(total, p.col_w[0] + p.col_w[1]);
+ try std.testing.expectEqual(serials[0], p.col_serial[0]);
+ try std.testing.expectEqual(serials[1], p.col_serial[1]);
+ // Past the neighbour's middle it is still a reorder, not a resize.
+ mouse(p, .press, p.col_x[1]);
+ mouse(p, .release, p.col_x[0] + 1);
+ try std.testing.expectEqual(serials[1], p.col_serial[0]);
+ try std.testing.expectEqual(serials[0], p.col_serial[1]);
+}