mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
documenting behavior
This commit is contained in:
@@ -1097,14 +1097,24 @@ Edit
|
||||
Assert.True (copyAction);
|
||||
}
|
||||
|
||||
// Defines the expected strings for a Menu
|
||||
// Defines the expected strings for a Menu. Currently supports
|
||||
// - MenuBar with any number of MenuItems
|
||||
// - Each top-level MenuItem can have a SINGLE sub-menu
|
||||
//
|
||||
// TODO: Enable multiple sub-menus
|
||||
// TODO: Enable checked sub-menus
|
||||
// TODO: Enable sub-menus with sub-menus (perhaps better to put this in a separate class with focused unit tests?)
|
||||
//
|
||||
// E.g:
|
||||
//
|
||||
// File Edit
|
||||
// New Copy
|
||||
public class ExpectedMenu : MenuBar {
|
||||
public class ExpectedMenuBar : MenuBar {
|
||||
FakeDriver d = ((FakeDriver)Application.Driver);
|
||||
|
||||
public string expectedMenuBarText {
|
||||
// Each MenuBar title has a 1 space pad on each side
|
||||
// See `static int leftPadding` and `static int rightPadding` on line 1037 of Menu.cs
|
||||
public string MenuBarText {
|
||||
get {
|
||||
string txt = string.Empty;
|
||||
foreach (var m in Menus) {
|
||||
@@ -1116,10 +1126,11 @@ Edit
|
||||
}
|
||||
|
||||
// The expected strings when the menu is closed
|
||||
public string expectedClosed => expectedMenuBarText + "\n";
|
||||
public string ClosedMenuText => MenuBarText + "\n";
|
||||
|
||||
// left padding for the sub menu
|
||||
public string padding (int i)
|
||||
// Padding for the X of the sub menu Frane
|
||||
// Menu.cs - Line 1239 in `internal void OpenMenu` is where the Menu is created
|
||||
string padding (int i)
|
||||
{
|
||||
int n = 0;
|
||||
while (i > 0){
|
||||
@@ -1133,13 +1144,16 @@ Edit
|
||||
// "┌──────┐"
|
||||
// "│ New │"
|
||||
// "└──────┘"
|
||||
// BUGBUG: The extra 4 spaces on these should not be there
|
||||
//
|
||||
// The width of the Frame is determined in Menu.cs line 144, where `Width` is calculated
|
||||
// 1 space before the Title and 2 spaces after the Title/Check/Help
|
||||
public string expectedTopRow (int i) => $"{d.ULCorner}{new String (d.HLine.ToString () [0], Menus [i].Children [0].TitleLength + 3)}{d.URCorner} \n";
|
||||
public string expectedMenuItemRow (int i) => $"{d.VLine} {Menus [i].Children [0].Title} {d.VLine}" + " \n";
|
||||
// The 3 spaces at end are a result of Menu.cs line 1062 where `pos` is calculated (` + spacesAfterTitle`)
|
||||
public string expectedMenuItemRow (int i) => $"{d.VLine} {Menus [i].Children [0].Title} {d.VLine} \n";
|
||||
public string expectedBottomRow (int i) => $"{d.LLCorner}{new String (d.HLine.ToString () [0], Menus [i].Children [0].TitleLength + 3)}{d.LRCorner} \n";
|
||||
|
||||
// The fulll expected string for an open sub menu
|
||||
public string expectedSubMenuOpen (int i) => expectedClosed +
|
||||
public string expectedSubMenuOpen (int i) => ClosedMenuText +
|
||||
(Menus [i].Children.Length > 0 ?
|
||||
padding (i) + expectedTopRow (i) +
|
||||
padding (i) + expectedMenuItemRow (i) +
|
||||
@@ -1147,7 +1161,7 @@ Edit
|
||||
:
|
||||
"");
|
||||
|
||||
public ExpectedMenu (MenuBarItem [] menus) : base (menus)
|
||||
public ExpectedMenuBar (MenuBarItem [] menus) : base (menus)
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1156,7 +1170,7 @@ Edit
|
||||
public void MenuBar_Submenus_Alignment_Correct ()
|
||||
{
|
||||
// Define the expected menu
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("Really Long Sub Menu", "", null)
|
||||
}),
|
||||
@@ -1191,7 +1205,7 @@ Edit
|
||||
Application.Top.Add (menu);
|
||||
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
|
||||
for (var i = 0; i < expectedMenu.Menus.Length; i++) {
|
||||
menu.OpenMenu (i);
|
||||
@@ -1208,7 +1222,7 @@ Edit
|
||||
var copyAction = false;
|
||||
|
||||
// Define the expected menu
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("New", "", null)
|
||||
}),
|
||||
@@ -1255,7 +1269,7 @@ Edit
|
||||
public void MenuBar_Position_And_Size_With_HotKeys_Is_The_Same_As_Without_HotKeys ()
|
||||
{
|
||||
// Define the expected menu
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("12", "", null)
|
||||
}),
|
||||
@@ -1292,7 +1306,7 @@ Edit
|
||||
Assert.True (menu.ProcessHotKey (new (Key.F9, new KeyModifiers ())));
|
||||
Assert.False (menu.IsMenuOpen);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
|
||||
Application.Top.Remove (menu);
|
||||
|
||||
@@ -1324,14 +1338,14 @@ Edit
|
||||
Assert.True (menu.ProcessHotKey (new (Key.F9, new KeyModifiers ())));
|
||||
Assert.False (menu.IsMenuOpen);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void MenuBar_ButtonPressed_Open_The_Menu_ButtonPressed_Again_Close_The_Menu ()
|
||||
{
|
||||
// Define the expected menu
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("Open", "", null)
|
||||
}),
|
||||
@@ -1361,7 +1375,7 @@ Edit
|
||||
Assert.True (menu.MouseEvent (new MouseEvent () { X = 1, Y = 0, Flags = MouseFlags.Button1Pressed, View = menu }));
|
||||
Assert.False (menu.IsMenuOpen);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -1389,7 +1403,7 @@ Edit
|
||||
//└──────┘ └───────┘
|
||||
|
||||
// Define the expected menu
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("New", "", null)
|
||||
}),
|
||||
@@ -1436,7 +1450,7 @@ Edit
|
||||
Assert.True (menu.IsMenuOpen);
|
||||
Assert.False (tf.HasFocus);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
|
||||
Assert.True (menu.MouseEvent (new MouseEvent () { X = 1, Y = 0, Flags = MouseFlags.ReportMousePosition, View = menu }));
|
||||
Assert.True (menu.IsMenuOpen);
|
||||
@@ -1449,13 +1463,13 @@ Edit
|
||||
Assert.False (menu.IsMenuOpen);
|
||||
Assert.True (tf.HasFocus);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void Parent_MenuItem_Stay_Focused_If_Child_MenuItem_Is_Empty_By_Keyboard ()
|
||||
{
|
||||
var expectedMenu = new ExpectedMenu (new MenuBarItem [] {
|
||||
var expectedMenu = new ExpectedMenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("File", new MenuItem [] {
|
||||
new MenuItem ("New", "", null)
|
||||
}),
|
||||
@@ -1517,7 +1531,7 @@ Edit
|
||||
Assert.False (menu.IsMenuOpen);
|
||||
Assert.True (tf.HasFocus);
|
||||
Application.Top.Redraw (Application.Top.Bounds);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.expectedClosed, output);
|
||||
GraphViewTests.AssertDriverContentsAre (expectedMenu.ClosedMenuText, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user