Fixed TabViewTests

This commit is contained in:
Tig
2024-05-30 09:08:45 -06:00
parent 07ba55c9d1
commit 6b2585bda6

View File

@@ -3,11 +3,8 @@ using Xunit.Abstractions;
namespace Terminal.Gui.ViewsTests;
public class TabViewTests
public class TabViewTests (ITestOutputHelper output)
{
private readonly ITestOutputHelper _output;
public TabViewTests (ITestOutputHelper output) { _output = output; }
[Fact]
public void AddTab_SameTabMoreThanOnce ()
{
@@ -35,8 +32,8 @@ public class TabViewTests
var tv = new TabView ();
Tab tab1;
Tab tab2;
tv.AddTab (tab1 = new Tab { DisplayText = "Tab1", View = new TextField { Text = "hi" } }, false);
tv.AddTab (tab2 = new Tab { DisplayText = "Tab1", View = new Label { Text = "hi2" } }, true);
tv.AddTab (tab1 = new() { DisplayText = "Tab1", View = new TextField { Text = "hi" } }, false);
tv.AddTab (tab2 = new() { DisplayText = "Tab1", View = new Label { Text = "hi2" } }, true);
Assert.Equal (2, tv.Tabs.Count);
Assert.Equal (tab2, tv.SelectedTab);
@@ -130,7 +127,7 @@ public class TabViewTests
│hi │
└──────────────────┘
",
_output
output
);
Tab clicked = null;
@@ -146,21 +143,21 @@ public class TabViewTests
// Waving mouse around does not trigger click
for (var i = 0; i < 100; i++)
{
args = new MouseEvent { Position = new (i, 1), Flags = MouseFlags.ReportMousePosition };
args = new() { Position = new (i, 1), Flags = MouseFlags.ReportMousePosition };
Application.OnMouseEvent (args);
Application.Refresh ();
Assert.Null (clicked);
Assert.Equal (tab1, tv.SelectedTab);
}
args = new MouseEvent { Position = new (3, 1), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (3, 1), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
Assert.Equal (tab1, clicked);
Assert.Equal (tab1, tv.SelectedTab);
// Click to tab2
args = new MouseEvent { Position = new (6, 1), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (6, 1), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
Assert.Equal (tab2, clicked);
@@ -173,7 +170,7 @@ public class TabViewTests
e.MouseEvent.Handled = true;
};
args = new MouseEvent { Position = new (3, 1), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (3, 1), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
@@ -181,13 +178,14 @@ public class TabViewTests
Assert.Equal (tab1, clicked);
Assert.Equal (tab2, tv.SelectedTab);
args = new MouseEvent { Position = new (12, 1), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (12, 1), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
// Clicking beyond last tab should raise event with null Tab
Assert.Null (clicked);
Assert.Equal (tab2, tv.SelectedTab);
top.Dispose ();
}
[Fact]
@@ -214,7 +212,7 @@ public class TabViewTests
│hi │
└─────┘
",
_output
output
);
Tab clicked = null;
@@ -251,11 +249,11 @@ public class TabViewTests
│hi2 │
└─────┘
",
_output
output
);
// Click the left arrow
args = new MouseEvent { Position = new (0, 2), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (0, 2), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
Assert.Null (clicked);
@@ -271,8 +269,9 @@ public class TabViewTests
│hi │
└─────┘
",
_output
output
);
top.Dispose ();
}
[Fact]
@@ -304,7 +303,7 @@ public class TabViewTests
│└─────┘│
└───────┘
",
_output
output
);
Tab clicked = null;
@@ -343,11 +342,11 @@ public class TabViewTests
│└─────┘│
└───────┘
",
_output
output
);
// Click the left arrow
args = new MouseEvent { Position = new (1, 3), Flags = MouseFlags.Button1Clicked };
args = new() { Position = new (1, 3), Flags = MouseFlags.Button1Clicked };
Application.OnMouseEvent (args);
Application.Refresh ();
Assert.Null (clicked);
@@ -365,8 +364,9 @@ public class TabViewTests
│└─────┘│
└───────┘
",
_output
output
);
top.Dispose ();
}
[Fact]
@@ -416,7 +416,7 @@ public class TabViewTests
};
// Press the cursor right key to select the next tab
args = new Key (Key.CursorRight);
args = new (Key.CursorRight);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab1, oldChanged);
@@ -426,7 +426,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the cursor down key to focus the selected tab view hosting
args = new Key (Key.CursorDown);
args = new (Key.CursorDown);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab2, tv.SelectedTab);
@@ -446,7 +446,7 @@ public class TabViewTests
Assert.Null (top.Focused.MostFocused);
// Press the cursor up key to focus the selected tab view hosting again
args = new Key (Key.CursorUp);
args = new (Key.CursorUp);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab2, tv.SelectedTab);
@@ -454,7 +454,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the cursor up key to focus the selected tab
args = new Key (Key.CursorUp);
args = new (Key.CursorUp);
Application.OnKeyDown (args);
Application.Refresh ();
@@ -464,7 +464,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the cursor left key to select the previous tab
args = new Key (Key.CursorLeft);
args = new (Key.CursorLeft);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab2, oldChanged);
@@ -474,7 +474,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the end key to select the last tab
args = new Key (Key.End);
args = new (Key.End);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab1, oldChanged);
@@ -484,7 +484,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the home key to select the first tab
args = new Key (Key.Home);
args = new (Key.Home);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab2, oldChanged);
@@ -494,7 +494,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the page down key to select the next set of tabs
args = new Key (Key.PageDown);
args = new (Key.PageDown);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab1, oldChanged);
@@ -504,7 +504,7 @@ public class TabViewTests
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
// Press the page up key to select the previous set of tabs
args = new Key (Key.PageUp);
args = new (Key.PageUp);
Application.OnKeyDown (args);
Application.Refresh ();
Assert.Equal (tab2, oldChanged);
@@ -512,6 +512,7 @@ public class TabViewTests
Assert.Equal (tab1, tv.SelectedTab);
Assert.Equal (tv, top.Focused);
Assert.Equal (tv.MostFocused, top.Focused.MostFocused);
top.Dispose ();
}
[Fact]
@@ -592,13 +593,13 @@ public class TabViewTests
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_False_TestTabView_Width3 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 3;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false };
tv.Style = new() { ShowTopLine = false };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -611,18 +612,18 @@ public class TabViewTests
│h│
│ │
└─┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_False_TestTabView_Width4 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 4;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false };
tv.Style = new() { ShowTopLine = false };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -635,18 +636,18 @@ public class TabViewTests
│hi│
│ │
└──┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_False_TestThinTabView_WithLongNames ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
tv.Width = 10;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false };
tv.Style = new() { ShowTopLine = false };
tv.ApplyStyleChanges ();
// Ensures that the tab bar subview gets the bounds of the parent TabView
@@ -665,7 +666,7 @@ public class TabViewTests
│hi │
│ │
└────────┘",
_output
output
);
tv.SelectedTab = tab2;
@@ -679,7 +680,7 @@ public class TabViewTests
│hi2 │
│ │
└────────┘",
_output
output
);
tv.SelectedTab = tab1;
@@ -697,7 +698,7 @@ public class TabViewTests
│hi │
│ │
└────────┘",
_output
output
);
//switch to tab2
@@ -711,7 +712,7 @@ public class TabViewTests
│hi2 │
│ │
└────────┘",
_output
output
);
// now make both tabs too long
@@ -727,18 +728,18 @@ public class TabViewTests
│hi2 │
│ │
└────────┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_True_TestTabView_Width3 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 3;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false, TabsOnBottom = true };
tv.Style = new() { ShowTopLine = false, TabsOnBottom = true };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -751,18 +752,18 @@ public class TabViewTests
│ │
│╭►
││ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_True_TestTabView_Width4 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 4;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false, TabsOnBottom = true };
tv.Style = new() { ShowTopLine = false, TabsOnBottom = true };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -775,18 +776,18 @@ public class TabViewTests
│ │
│ ╭►
│T│ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_False_TabsOnBottom_True_TestThinTabView_WithLongNames ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
tv.Width = 10;
tv.Height = 5;
tv.Style = new TabStyle { ShowTopLine = false, TabsOnBottom = true };
tv.Style = new() { ShowTopLine = false, TabsOnBottom = true };
tv.ApplyStyleChanges ();
// Ensures that the tab bar subview gets the bounds of the parent TabView
@@ -805,7 +806,7 @@ public class TabViewTests
│ │
│ ╭──┬──╯
│12│13│ ",
_output
output
);
tv.SelectedTab = tab2;
@@ -819,7 +820,7 @@ public class TabViewTests
│ │
├──╮ ╭──╯
│12│13│ ",
_output
output
);
tv.SelectedTab = tab1;
@@ -837,7 +838,7 @@ public class TabViewTests
│ │
│ ╭►
│1234567│ ",
_output
output
);
//switch to tab2
@@ -851,7 +852,7 @@ public class TabViewTests
│ │
◄ ╭─────╯
│13│ ",
_output
output
);
// now make both tabs too long
@@ -867,12 +868,12 @@ public class TabViewTests
│ │
◄ ╭╯
│abcdefg│ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_False_TestTabView_Width3 ()
{
TabView tv = GetTabView (out _, out _, false);
@@ -889,12 +890,12 @@ public class TabViewTests
│╰►
│h│
└─┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_False_TestTabView_Width4 ()
{
TabView tv = GetTabView (out _, out _, false);
@@ -911,12 +912,12 @@ public class TabViewTests
│ ╰►
│hi│
└──┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_False_TestThinTabView_WithLongNames ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
@@ -939,7 +940,7 @@ public class TabViewTests
│ ╰──┴──╮
│hi │
└────────┘",
_output
output
);
tv.SelectedTab = tab2;
@@ -953,7 +954,7 @@ public class TabViewTests
├──╯ ╰──╮
│hi2 │
└────────┘",
_output
output
);
tv.SelectedTab = tab1;
@@ -971,7 +972,7 @@ public class TabViewTests
│ ╰►
│hi │
└────────┘",
_output
output
);
//switch to tab2
@@ -985,7 +986,7 @@ public class TabViewTests
◄ ╰─────╮
│hi2 │
└────────┘",
_output
output
);
// now make both tabs too long
@@ -1001,12 +1002,12 @@ public class TabViewTests
◄ ╰╮
│hi2 │
└────────┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_False_With_Unicode ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
@@ -1028,7 +1029,7 @@ public class TabViewTests
│ ╰─────────────►
│hi │
└──────────────────┘",
_output
output
);
tv.SelectedTab = tab2;
@@ -1042,18 +1043,18 @@ public class TabViewTests
◄ ╰───╮
│hi2 │
└──────────────────┘",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_True_TestTabView_Width3 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 3;
tv.Height = 5;
tv.Style = new TabStyle { TabsOnBottom = true };
tv.Style = new() { TabsOnBottom = true };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -1066,18 +1067,18 @@ public class TabViewTests
│╭►
││
╰╯ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_True_TestTabView_Width4 ()
{
TabView tv = GetTabView (out _, out _, false);
tv.Width = 4;
tv.Height = 5;
tv.Style = new TabStyle { TabsOnBottom = true };
tv.Style = new() { TabsOnBottom = true };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -1090,18 +1091,18 @@ public class TabViewTests
│ ╭►
│T│
╰─╯ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_True_TestThinTabView_WithLongNames ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
tv.Width = 10;
tv.Height = 5;
tv.Style = new TabStyle { TabsOnBottom = true };
tv.Style = new() { TabsOnBottom = true };
tv.ApplyStyleChanges ();
// Ensures that the tab bar subview gets the bounds of the parent TabView
@@ -1120,7 +1121,7 @@ public class TabViewTests
│ ╭──┬──╯
│12│13│
╰──┴──╯ ",
_output
output
);
// Test first tab name too long
@@ -1136,7 +1137,7 @@ public class TabViewTests
│ ╭►
│1234567│
╰───────╯ ",
_output
output
);
//switch to tab2
@@ -1150,7 +1151,7 @@ public class TabViewTests
◄ ╭─────╯
│13│
╰──╯ ",
_output
output
);
// now make both tabs too long
@@ -1166,18 +1167,18 @@ public class TabViewTests
◄ ╭╯
│abcdefg│
╰───────╯ ",
_output
output
);
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void ShowTopLine_True_TabsOnBottom_True_With_Unicode ()
{
TabView tv = GetTabView (out Tab tab1, out Tab tab2, false);
tv.Width = 20;
tv.Height = 5;
tv.Style = new TabStyle { TabsOnBottom = true };
tv.Style = new() { TabsOnBottom = true };
tv.ApplyStyleChanges ();
tv.LayoutSubviews ();
@@ -1195,7 +1196,7 @@ public class TabViewTests
│ ╭─────────────►
│Tab0│
╰────╯ ",
_output
output
);
tv.SelectedTab = tab2;
@@ -1209,7 +1210,7 @@ public class TabViewTests
◄ ╭───╯
│Les Misérables│
╰──────────────╯ ",
_output
output
);
}
@@ -1222,9 +1223,9 @@ public class TabViewTests
Tab tab4;
Tab tab5;
tv.AddTab (tab3 = new Tab (), false);
tv.AddTab (tab4 = new Tab (), false);
tv.AddTab (tab5 = new Tab (), false);
tv.AddTab (tab3 = new (), false);
tv.AddTab (tab4 = new (), false);
tv.AddTab (tab5 = new (), false);
tv.SelectedTab = tab1;
@@ -1277,7 +1278,8 @@ public class TabViewTests
tab2.HasFocus = true;
Assert.Equal (2, tv.Tabs.Count);
foreach (var t in tv.Tabs.ToArray ())
foreach (Tab t in tv.Tabs.ToArray ())
{
tv.RemoveTab (t);
}
@@ -1300,13 +1302,13 @@ public class TabViewTests
var tv = new TabView ();
tv.BeginInit ();
tv.EndInit ();
tv.ColorScheme = new ColorScheme ();
tv.ColorScheme = new ();
tv.AddTab (
tab1 = new Tab { DisplayText = "Tab1", View = new TextField { Width = 2, Text = "hi" } },
tab1 = new() { DisplayText = "Tab1", View = new TextField { Width = 2, Text = "hi" } },
false
);
tv.AddTab (tab2 = new Tab { DisplayText = "Tab2", View = new Label { Text = "hi2" } }, false);
tv.AddTab (tab2 = new() { DisplayText = "Tab2", View = new Label { Text = "hi2" } }, false);
return tv;
}