Browse Source

Fixed ContextMenuTests

Tig 1 year ago
parent
commit
6c310c72c0
1 changed files with 86 additions and 63 deletions
  1. 86 63
      UnitTests/Views/ContextMenuTests.cs

+ 86 - 63
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)