From 6c310c72c058e2524b89d9451ce0ba877878d73d Mon Sep 17 00:00:00 2001 From: Tig Date: Thu, 30 May 2024 07:31:24 -0600 Subject: [PATCH] Fixed ContextMenuTests --- UnitTests/Views/ContextMenuTests.cs | 149 ++++++++++++++++------------ 1 file changed, 86 insertions(+), 63 deletions(-) diff --git a/UnitTests/Views/ContextMenuTests.cs b/UnitTests/Views/ContextMenuTests.cs index f692a2ea4..ae697c7f7 100644 --- a/UnitTests/Views/ContextMenuTests.cs +++ b/UnitTests/Views/ContextMenuTests.cs @@ -1,15 +1,10 @@ using System.Globalization; using Xunit.Abstractions; -//using GraphViewTests = Terminal.Gui.Views.GraphViewTests; - namespace Terminal.Gui.ViewsTests; -public class ContextMenuTests +public class ContextMenuTests (ITestOutputHelper output) { - private readonly ITestOutputHelper _output; - public ContextMenuTests (ITestOutputHelper output) { _output = output; } - [Fact] [AutoInitShutdown] public void ContextMenu_Constructors () @@ -107,14 +102,15 @@ public class ContextMenuTests Assert.True (ContextMenu.IsShow); Assert.Equal (cm.MenuBar, Application.MouseGrabView); Assert.False (menu.IsMenuOpen); - Assert.False (menu.NewMouseEvent(new MouseEvent { Position = new (1, 0), Flags = MouseFlags.ReportMousePosition, View = menu })); + Assert.False (menu.NewMouseEvent (new MouseEvent { Position = new (1, 0), Flags = MouseFlags.ReportMousePosition, View = menu })); Assert.True (ContextMenu.IsShow); Assert.Equal (cm.MenuBar, Application.MouseGrabView); Assert.False (menu.IsMenuOpen); - Assert.True (menu.NewMouseEvent(new MouseEvent { Position = new (1, 0), Flags = MouseFlags.Button1Clicked, View = menu })); + Assert.True (menu.NewMouseEvent (new MouseEvent { Position = new (1, 0), Flags = MouseFlags.Button1Clicked, View = menu })); Assert.False (ContextMenu.IsShow); Assert.Equal (menu, Application.MouseGrabView); Assert.True (menu.IsMenuOpen); + top.Dispose (); } [Fact] @@ -176,8 +172,9 @@ public class ContextMenuTests F1 Help │ ^Q Quit "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (1, 0, 32, 17), pos); + top.Dispose (); } [Fact] @@ -243,8 +240,9 @@ public class ContextMenuTests F1 Help │ ^Q Quit "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (1, 0, 44, 17), pos); + top.Dispose (); } [Fact] @@ -254,7 +252,7 @@ public class ContextMenuTests ((FakeDriver)Application.Driver).SetBufferSize (20, 15); Assert.Equal (new Rectangle (0, 0, 20, 15), Application.Driver.Clip); - TestHelpers.AssertDriverContentsWithFrameAre ("", _output); + TestHelpers.AssertDriverContentsWithFrameAre ("", output); var top = new Toplevel { X = 2, Y = 2, Width = 15, Height = 4 }; top.Add (new TextField { X = Pos.Center (), Width = 10, Text = "Test" }); @@ -266,7 +264,7 @@ public class ContextMenuTests TestHelpers.AssertDriverContentsWithFrameAre ( @" Test", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (8, 2), Flags = MouseFlags.Button3Clicked }); @@ -286,10 +284,11 @@ public class ContextMenuTests │ Undo Ctrl+ │ Redo Ctrl+ └───────────────────", - _output + output ); Application.End (rs); + top.Dispose (); } [Fact] @@ -321,7 +320,7 @@ public class ContextMenuTests │ │ │ │ └──────────────────┘", - _output + output ); // Don't use Dialog here as it has more layout logic. Use Window instead. @@ -348,7 +347,7 @@ public class ContextMenuTests │ │ │ │ └──────────────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (9, 3), Flags = MouseFlags.Button3Clicked }); @@ -373,11 +372,12 @@ public class ContextMenuTests └─────────────────── │ │ └──────────────────┘", - _output + output ); Application.End (rsDialog); Application.End (rsTop); + top.Dispose (); } [Fact] @@ -387,7 +387,7 @@ public class ContextMenuTests ((FakeDriver)Application.Driver).SetBufferSize (20, 15); Assert.Equal (new Rectangle (0, 0, 20, 15), Application.Driver.Clip); - TestHelpers.AssertDriverContentsWithFrameAre ("", _output); + TestHelpers.AssertDriverContentsWithFrameAre ("", output); // Don't use Dialog here as it has more layout logic. Use Window instead. var dialog = new Window { X = 2, Y = 2, Width = 15, Height = 4 }; @@ -403,7 +403,7 @@ public class ContextMenuTests │ Test │ │ │ └─────────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (9, 3), Flags = MouseFlags.Button3Clicked }); @@ -424,10 +424,11 @@ public class ContextMenuTests │ Undo Ctrl+ │ Redo Ctrl+ └───────────────────", - _output + output ); Application.End (rs); + dialog.Dispose (); } [Fact] @@ -446,8 +447,9 @@ public class ContextMenuTests }; Assert.Equal (new Point (-1, -2), cm.Position); - - Application.Begin (new ()); + + Toplevel top = new (); + Application.Begin (top); cm.Show (); Assert.Equal (new Point (-1, -2), cm.Position); @@ -460,7 +462,7 @@ public class ContextMenuTests └──────┘ "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (0, 1, 8, 4), pos); cm.ForceMinimumPosToZero = false; @@ -474,8 +476,9 @@ public class ContextMenuTests ──────┘ "; - pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (1, 0, 7, 3), pos); + top.Dispose (); } [Fact] @@ -504,6 +507,7 @@ public class ContextMenuTests top.RequestStop (); Assert.False (ContextMenu.IsShow); + top.Dispose (); } [Fact] @@ -519,6 +523,7 @@ public class ContextMenuTests Assert.True (tf.ContextMenu.MenuBar.IsMenuOpen); Assert.True (Application.OnKeyDown (ContextMenu.DefaultKey)); Assert.Null (tf.ContextMenu.MenuBar); + top.Dispose (); } [Fact] @@ -550,7 +555,8 @@ public class ContextMenuTests ) }; - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Application.Refresh (); @@ -561,7 +567,7 @@ public class ContextMenuTests └──────┘ "; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); cm.MenuItems = new MenuBarItem ( [ @@ -582,7 +588,8 @@ public class ContextMenuTests └─────────┘ "; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); + top.Dispose (); } [Fact] @@ -636,7 +643,7 @@ public class ContextMenuTests │ Six │ └────────┘ ", - _output + output ); Assert.True ( @@ -664,7 +671,7 @@ public class ContextMenuTests │ SubMenu7 │ └───────────┘ ", - _output + output ); ((FakeDriver)Application.Driver).SetBufferSize (40, 20); @@ -684,7 +691,7 @@ public class ContextMenuTests │ Six │ └────────┘ ", - _output + output ); Assert.True ( @@ -712,7 +719,7 @@ public class ContextMenuTests │ SubMenu7 │ └───────────┘ ", - _output + output ); cm.Position = new Point (41, 9); @@ -731,7 +738,7 @@ public class ContextMenuTests │ Six │ └────────┘ ", - _output + output ); Assert.True ( @@ -756,7 +763,7 @@ public class ContextMenuTests │ SubMenu7 │ └───────────┘ ", - _output + output ); cm.Position = new Point (41, 22); @@ -775,7 +782,7 @@ public class ContextMenuTests │ Six │ └────────┘ ", - _output + output ); Assert.True ( @@ -799,7 +806,7 @@ public class ContextMenuTests │ SubMenu7 ││ Six │ └───────────┘└────────┘ ", - _output + output ); ((FakeDriver)Application.Driver).SetBufferSize (18, 8); @@ -819,7 +826,7 @@ public class ContextMenuTests │ Six │ └────────┘ ", - _output + output ); Assert.True ( @@ -842,8 +849,9 @@ public class ContextMenuTests │ SubMenu6 │ │ │ SubMenu7 │────┘ ", - _output + output ); + top.Dispose (); } [Fact] @@ -874,10 +882,10 @@ public class ContextMenuTests cm.MouseFlags = MouseFlags.Button2Clicked; Assert.True (lbl.NewMouseEvent (new MouseEvent { Flags = cm.MouseFlags })); Assert.Equal ("Replaced", lbl.Text); + top.Dispose (); } [Fact] - [AutoInitShutdown] public void MouseFlagsChanged_Event () { var oldMouseFlags = new MouseFlags (); @@ -905,7 +913,8 @@ public class ContextMenuTests ) }; - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Application.Refresh (); @@ -916,7 +925,7 @@ public class ContextMenuTests └──────┘ "; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); cm.Position = new Point (5, 10); @@ -930,7 +939,8 @@ public class ContextMenuTests └──────┘ "; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); + top.Dispose (); } [Fact] @@ -1006,6 +1016,7 @@ public class ContextMenuTests Assert.True (isTopClosed); Assert.False (ContextMenu.IsShow); Assert.True (isMenuAllClosed); + top.Dispose (); } [Fact] @@ -1027,7 +1038,8 @@ public class ContextMenuTests Assert.Equal (Point.Empty, cm.Position); - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Assert.Equal (Point.Empty, cm.Position); Application.Refresh (); @@ -1037,11 +1049,12 @@ public class ContextMenuTests │ One │ │ Two │"; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (0, 0, 8, 3), pos); cm.Hide (); Assert.Equal (Point.Empty, cm.Position); + top.Dispose (); } [Fact] @@ -1063,7 +1076,8 @@ public class ContextMenuTests Assert.Equal (Point.Empty, cm.Position); - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Assert.Equal (Point.Empty, cm.Position); Application.Refresh (); @@ -1074,11 +1088,12 @@ public class ContextMenuTests │ Two └────"; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (0, 1, 5, 4), pos); cm.Hide (); Assert.Equal (Point.Empty, cm.Position); + top.Dispose (); } [Fact] @@ -1124,7 +1139,7 @@ public class ContextMenuTests └──────┘ "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (10, 5, 18, 5), pos); cm.Hide (); @@ -1147,11 +1162,12 @@ public class ContextMenuTests └──────┘ "; - pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (5, 10, 13, 7), pos); cm.Hide (); Assert.Equal (new Point (5, 12), cm.Position); + top.Dispose (); } [Fact] @@ -1171,7 +1187,8 @@ public class ContextMenuTests Assert.Equal (new Point (80, 25), cm.Position); - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Assert.Equal (new Point (80, 25), cm.Position); Application.Refresh (); @@ -1183,11 +1200,12 @@ public class ContextMenuTests └──────┘ "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (72, 21, 80, 4), pos); cm.Hide (); Assert.Equal (new Point (80, 25), cm.Position); + top.Dispose (); } [Fact] @@ -1233,11 +1251,12 @@ public class ContextMenuTests View "; - Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output); + Rectangle pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output); Assert.Equal (new Rectangle (70, 20, 78, 5), pos); cm.Hide (); Assert.Equal (new Point (70, 24), cm.Position); + top.Dispose (); } [Fact] @@ -1246,7 +1265,8 @@ public class ContextMenuTests { ContextMenu cm = Create_ContextMenu_With_Two_MenuItem (10, 5); - Application.Begin (new ()); + Toplevel top = new (); + Application.Begin (top); cm.Show (); Assert.True (ContextMenu.IsShow); Application.Refresh (); @@ -1258,7 +1278,7 @@ public class ContextMenuTests └──────┘ "; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); cm.Hide (); Assert.False (ContextMenu.IsShow); @@ -1267,7 +1287,8 @@ public class ContextMenuTests expected = ""; - TestHelpers.AssertDriverContentsAre (expected, _output); + TestHelpers.AssertDriverContentsAre (expected, output); + top.Dispose (); } [Fact] @@ -1297,8 +1318,8 @@ public class ContextMenuTests ), UseSubMenusSingleFrame = true }; - - RunState rs = Application.Begin (new ()); + Toplevel top = new (); + RunState rs = Application.Begin (top); cm.Show (); Assert.Equal (new Rectangle (5, 11, 10, 5), Application.Top.Subviews [0].Frame); Application.Refresh (); @@ -1310,7 +1331,7 @@ public class ContextMenuTests │ Two ►│ │ Three │ └────────┘", - _output + output ); // X=5 is the border and so need to use at least one more @@ -1329,7 +1350,7 @@ public class ContextMenuTests │ Sub-Menu 1 │ │ Sub-Menu 2 │ └─────────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (6, 12), Flags = MouseFlags.Button1Clicked }); @@ -1345,10 +1366,11 @@ public class ContextMenuTests │ Two ►│ │ Three │ └────────┘", - _output + output ); Application.End (rs); + top.Dispose (); } [Fact] @@ -1386,8 +1408,8 @@ public class ContextMenuTests ] ) }; - - RunState rs = Application.Begin (new ()); + Toplevel top = new (); + RunState rs = Application.Begin (top); cm.Show (); Assert.Equal (new Rectangle (5, 11, 10, 5), Application.Top.Subviews [0].Frame); @@ -1400,7 +1422,7 @@ public class ContextMenuTests │ Two ►│ │ Three ►│ └────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (6, 13), Flags = MouseFlags.ReportMousePosition }); @@ -1417,7 +1439,7 @@ public class ContextMenuTests │ Three ►││ Two-Menu 1 │ └────────┘│ Two-Menu 2 │ └─────────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (6, 14), Flags = MouseFlags.ReportMousePosition }); @@ -1435,7 +1457,7 @@ public class ContextMenuTests └────────┘│ Three-Menu 1 │ │ Three-Menu 2 │ └───────────────┘", - _output + output ); Application.OnMouseEvent (new MouseEvent { Position = new (6, 13), Flags = MouseFlags.ReportMousePosition }); @@ -1452,10 +1474,11 @@ public class ContextMenuTests │ Three ►││ Two-Menu 1 │ └────────┘│ Two-Menu 2 │ └─────────────┘", - _output + output ); Application.End (rs); + top.Dispose (); } private ContextMenu Create_ContextMenu_With_Two_MenuItem (int x, int y)