using ClaudeDo.Ui.Views.Islands; using Xunit; namespace ClaudeDo.Ui.Tests; public class ListsAutoScrollTests { [Fact] public void Middle_of_viewport_does_not_scroll() => Assert.Equal(0, ListsAutoScroll.Delta(300, 600)); [Fact] public void Top_band_scrolls_up_and_speeds_up_towards_the_edge() { var near = ListsAutoScroll.Delta(30, 600); var edge = ListsAutoScroll.Delta(0, 600); Assert.True(near < 0); Assert.True(edge < near); } [Fact] public void Bottom_band_scrolls_down_and_speeds_up_towards_the_edge() { var near = ListsAutoScroll.Delta(570, 600); var edge = ListsAutoScroll.Delta(600, 600); Assert.True(near > 0); Assert.True(edge > near); } [Fact] public void Pointer_outside_the_viewport_is_clamped_to_max_step() => Assert.Equal(ListsAutoScroll.Delta(0, 600), ListsAutoScroll.Delta(-50, 600)); [Fact] public void Tiny_or_empty_viewport_is_safe() { Assert.Equal(0, ListsAutoScroll.Delta(0, 0)); Assert.True(ListsAutoScroll.Delta(5, 20) < 0); } }