Test for TabClicked event

This commit is contained in:
Thomas
2023-01-20 20:05:53 +00:00
parent 553cd6f66f
commit 8b8bb2ab60

View File

@@ -760,6 +760,87 @@ namespace Terminal.Gui.ViewTests {
└──────────────┘ ", output);
}
[Fact, AutoInitShutdown]
public void MouseClick_ChangesTab ()
{
var tv = GetTabView (out var tab1, out var tab2, false);
tv.Width = 20;
tv.Height = 5;
tv.LayoutSubviews ();
tv.Redraw (tv.Bounds);
var tabRow = tv.Subviews[0];
Assert.Equal("TabRowView",tabRow.GetType().Name);
TestHelpers.AssertDriverContentsAre (@"
┌────┐
│Tab1│Tab2
│ └─────────────┐
│hi │
└──────────────────┘
", output);
TabView.Tab clicked = null;
tv.TabClicked += (s,e)=>{
clicked = e.Tab;
};
// Waving mouse around does not trigger click
for(int i=0;i<100;i++)
{
tabRow.MouseEvent(new MouseEvent{
X = i,
Y = 1,
Flags = MouseFlags.ReportMousePosition
});
Assert.Null(clicked);
Assert.Equal(tab1, tv.SelectedTab);
}
tabRow.MouseEvent(new MouseEvent{
X = 3,
Y = 1,
Flags = MouseFlags.Button1Clicked
});
Assert.Equal(tab1, clicked);
Assert.Equal(tab1, tv.SelectedTab);
// Click to tab2
tabRow.MouseEvent(new MouseEvent{
X = 7,
Y = 1,
Flags = MouseFlags.Button1Clicked
});
Assert.Equal(tab2, clicked);
Assert.Equal(tab2, tv.SelectedTab);
// cancel navigation
tv.TabClicked += (s,e)=>{
clicked = e.Tab;
e.MouseEvent.Handled = true;
};
tabRow.MouseEvent(new MouseEvent{
X = 3,
Y = 1,
Flags = MouseFlags.Button1Clicked
});
// Tab 1 was clicked but event handler blocked navigation
Assert.Equal(tab1, clicked);
Assert.Equal(tab2, tv.SelectedTab);
}
private void InitFakeDriver ()
{
var driver = new FakeDriver ();