Fixed ToplevelTests

This commit is contained in:
Tig
2024-05-30 09:59:10 -06:00
parent db0f066e89
commit 82a1397978

View File

@@ -1,15 +1,10 @@
using Xunit.Abstractions;
using static System.Net.Mime.MediaTypeNames;
namespace Terminal.Gui.ViewsTests;
public class ToplevelTests
public class ToplevelTests (ITestOutputHelper output)
{
private readonly ITestOutputHelper _output;
public ToplevelTests (ITestOutputHelper output) { _output = output; }
[Fact]
[AutoInitShutdown]
public void Constructor_Default ()
{
var top = new Toplevel ();
@@ -227,7 +222,7 @@ public class ToplevelTests
top.OnClosed (top);
Assert.Equal ("Closed", eventInvoked);
top.Closing += (s, e) => eventInvoked = "Closing";
top.OnClosing (new ToplevelClosingEventArgs (top));
top.OnClosing (new (top));
Assert.Equal ("Closing", eventInvoked);
top.AllChildClosed += (s, e) => eventInvoked = "AllChildClosed";
top.OnAllChildClosed ();
@@ -351,7 +346,7 @@ public class ToplevelTests
top.Remove (win);
win = new Window { Width = 60, Height = 15 };
win = new () { Width = 60, Height = 15 };
top.Add (win);
// Application.Top without menu and status bar.
@@ -379,16 +374,20 @@ public class ToplevelTests
Assert.NotNull (sb);
top.PositionToplevels ();
Assert.Equal (new Rectangle (0, 1, 60, 15), win.Frame);
Assert.Equal (new (0, 1, 60, 15), win.Frame);
//Assert.Null (Toplevel._dragPosition);
win.NewMouseEvent (new MouseEvent { Position = new (6, 0), Flags = MouseFlags.Button1Pressed });
win.NewMouseEvent (new () { Position = new (6, 0), Flags = MouseFlags.Button1Pressed });
// Assert.Equal (new Point (6, 0), Toplevel._dragPosition);
win.NewMouseEvent (new MouseEvent { Position = new (6, 0), Flags = MouseFlags.Button1Released });
win.NewMouseEvent (new () { Position = new (6, 0), Flags = MouseFlags.Button1Released });
//Assert.Null (Toplevel._dragPosition);
win.CanFocus = false;
win.NewMouseEvent (new MouseEvent { Position = new (6, 0), Flags = MouseFlags.Button1Pressed });
win.NewMouseEvent (new () { Position = new (6, 0), Flags = MouseFlags.Button1Pressed });
//Assert.Null (Toplevel._dragPosition);
top.Dispose ();
}
[Fact]
@@ -465,8 +464,8 @@ public class ToplevelTests
Application.Begin (top);
top.Running = true;
Assert.Equal (new Rectangle (0, 0, 40, 25), win1.Frame);
Assert.Equal (new Rectangle (41, 0, 40, 25), win2.Frame);
Assert.Equal (new (0, 0, 40, 25), win1.Frame);
Assert.Equal (new (41, 0, 40, 25), win2.Frame);
Assert.Equal (win1, top.Focused);
Assert.Equal (tf1W1, top.MostFocused);
@@ -540,7 +539,7 @@ public class ToplevelTests
Assert.True (Application.OnKeyDown (Key.End.WithCtrl));
Assert.Equal (win1, top.Focused);
Assert.Equal (tvW1, top.MostFocused);
Assert.Equal (new Point (16, 1), tvW1.CursorPosition);
Assert.Equal (new (16, 1), tvW1.CursorPosition);
#if UNIX_KEY_BINDINGS
Assert.True (Application.OnKeyDown (new (Key.F.WithCtrl)));
#else
@@ -554,6 +553,7 @@ public class ToplevelTests
#else
Assert.True (Application.OnKeyDown (Key.F5));
#endif
top.Dispose ();
}
[Fact]
@@ -600,7 +600,7 @@ public class ToplevelTests
Assert.True (top.IsCurrentTop);
Assert.Equal (top, Application.OverlappedTop);
Application.Begin (win1);
Assert.Equal (new Rectangle (0, 0, 40, 25), win1.Frame);
Assert.Equal (new (0, 0, 40, 25), win1.Frame);
Assert.NotEqual (top, Application.Current);
Assert.False (top.IsCurrentTop);
Assert.Equal (win1, Application.Current);
@@ -612,7 +612,7 @@ public class ToplevelTests
Assert.True (win1.IsOverlapped);
Assert.Single (Application.OverlappedChildren);
Application.Begin (win2);
Assert.Equal (new Rectangle (0, 0, 40, 25), win2.Frame);
Assert.Equal (new (0, 0, 40, 25), win2.Frame);
Assert.NotEqual (top, Application.Current);
Assert.False (top.IsCurrentTop);
Assert.Equal (win2, Application.Current);
@@ -728,7 +728,7 @@ public class ToplevelTests
);
Assert.Equal (win1, Application.OverlappedChildren [0]);
Assert.Equal (tvW1, win1.MostFocused);
Assert.Equal (new Point (16, 1), tvW1.CursorPosition);
Assert.Equal (new (16, 1), tvW1.CursorPosition);
#if UNIX_KEY_BINDINGS
Assert.True (Application.OverlappedChildren [0].ProcessKeyDown (new (Key.F.WithCtrl)));
#else
@@ -742,6 +742,7 @@ public class ToplevelTests
#endif
win2.Dispose ();
win1.Dispose ();
top.Dispose ();
}
[Fact]
@@ -842,6 +843,7 @@ public class ToplevelTests
Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, Application.AlternateForwardKey);
Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, Application.AlternateBackwardKey);
Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey);
top.Dispose ();
}
[Fact]
@@ -863,7 +865,7 @@ public class ToplevelTests
((FakeDriver)Application.Driver).SetBufferSize (15, 7);
// Don't use MessageBox here; it's too complicated for this unit test; just use Window
testWindow = new Window
testWindow = new ()
{
Text = "Hello",
X = 2,
@@ -876,7 +878,7 @@ public class ToplevelTests
}
else if (iterations == 1)
{
Assert.Equal(new Point(2,2), Application.Current.Frame.Location);
Assert.Equal (new (2, 2), Application.Current.Frame.Location);
}
else if (iterations == 2)
{
@@ -886,27 +888,28 @@ public class ToplevelTests
Application.OnMouseEvent (new () { Position = new (3, 2), Flags = MouseFlags.Button1Pressed });
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (2, 2, 10, 3), Application.Current.Frame);
Assert.Equal (new (2, 2, 10, 3), Application.Current.Frame);
}
else if (iterations == 3)
{
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
// Drag to left
Application.OnMouseEvent (new ()
{
Position = new (2, 2), Flags = MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (2, 2), Flags = MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (1, 2, 10, 3), Application.Current.Frame);
Assert.Equal (new (1, 2, 10, 3), Application.Current.Frame);
}
else if (iterations == 4)
{
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Point (1, 2), Application.Current.Frame.Location);
Assert.Equal (new (1, 2), Application.Current.Frame.Location);
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
}
@@ -915,23 +918,23 @@ public class ToplevelTests
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
// Drag up
Application.OnMouseEvent (new ()
{
Position = new (2, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (2, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (1, 1, 10, 3), Application.Current.Frame);
Assert.Equal (new (1, 1, 10, 3), Application.Current.Frame);
}
else if (iterations == 6)
{
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Point (1, 1), Application.Current.Frame.Location);
Assert.Equal (new (1, 1), Application.Current.Frame.Location);
Assert.Equal (Application.Current.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (1, 1, 10, 3), Application.Current.Frame);
Assert.Equal (new (1, 1, 10, 3), Application.Current.Frame);
}
else if (iterations == 7)
{
@@ -954,6 +957,7 @@ public class ToplevelTests
};
Application.Run (top);
top.Dispose ();
}
[Fact]
@@ -986,10 +990,11 @@ public class ToplevelTests
Assert.Null (Application.MouseGrabView);
// Grab the mouse
Application.OnMouseEvent (new MouseEvent
{
Position = new (win.Frame.X, win.Frame.Y), Flags = MouseFlags.Button1Pressed
});
Application.OnMouseEvent (
new ()
{
Position = new (win.Frame.X, win.Frame.Y), Flags = MouseFlags.Button1Pressed
});
Assert.Equal (win.Border, Application.MouseGrabView);
}
@@ -1001,11 +1006,13 @@ public class ToplevelTests
movex = 1;
movey = 0;
Application.OnMouseEvent (new MouseEvent
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey), Flags = MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey), Flags =
MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Assert.Equal (win.Border, Application.MouseGrabView);
}
@@ -1024,11 +1031,13 @@ public class ToplevelTests
movex = 0;
movey = -1;
Application.OnMouseEvent (new MouseEvent
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey), Flags = MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey), Flags =
MouseFlags.Button1Pressed
| MouseFlags.ReportMousePosition
});
Assert.Equal (win.Border, Application.MouseGrabView);
}
@@ -1047,10 +1056,12 @@ public class ToplevelTests
movex = 0;
movey = 0;
Application.OnMouseEvent (new MouseEvent
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey), Flags = MouseFlags.Button1Released
});
Application.OnMouseEvent (
new ()
{
Position = new (win.Frame.X + movex, win.Frame.Y + movey),
Flags = MouseFlags.Button1Released
});
Assert.Null (Application.MouseGrabView);
}
@@ -1061,14 +1072,16 @@ public class ToplevelTests
};
Application.Run (top);
top.Dispose ();
}
[Fact]
[AutoInitShutdown]
[SetupFakeDriver]
public void GetLocationThatFits_With_Border_Null_Not_Throws ()
{
var top = new Toplevel ();
Application.Begin (top);
top.BeginInit ();
top.EndInit ();
Exception exception = Record.Exception (() => ((FakeDriver)Application.Driver).SetBufferSize (0, 10));
Assert.Null (exception);
@@ -1100,6 +1113,7 @@ public class ToplevelTests
// From the v view
Assert.True (isEnter);
// The Leave event is only raised on the End method
// and the top is still running
Assert.False (isLeave);
@@ -1120,14 +1134,17 @@ public class ToplevelTests
isEnter = false;
Application.End (rsDialog);
d.Dispose ();
// From the v view
Assert.True (isEnter);
// From the dv view
Assert.True (isLeave);
Assert.True (v.HasFocus);
Application.End (rsTop);
top.Dispose ();
}
[Fact]
@@ -1214,6 +1231,7 @@ public class ToplevelTests
Assert.True (isEnterDiag);
Assert.False (isLeaveDiag);
Assert.False (isEnterTop);
// The Leave event is only raised on the End method
// and the top is still running
Assert.False (isLeaveTop);
@@ -1221,10 +1239,12 @@ public class ToplevelTests
isEnterDiag = false;
isLeaveTop = false;
Application.End (rsDiag);
diag.Dispose ();
Assert.False (isEnterDiag);
Assert.True (isLeaveDiag);
Assert.True (isEnterTop);
// Leave event on top cannot be raised
// because Current is null on the End method
Assert.False (isLeaveTop);
@@ -1236,6 +1256,7 @@ public class ToplevelTests
Assert.Equal (2, steps [1]);
Assert.Equal (3, steps [2]);
Assert.Equal (4, steps [^1]);
top.Dispose ();
}
[Fact]
@@ -1259,6 +1280,7 @@ public class ToplevelTests
Application.PositionCursor (top);
Application.Driver.GetCursorVisibility (out cursor);
Assert.Equal (CursorVisibility.Invisible, cursor);
top.Dispose ();
}
[Fact]
@@ -1270,6 +1292,7 @@ public class ToplevelTests
Application.Begin (top);
Assert.True (top.IsLoaded);
top.Dispose ();
}
[Fact]
@@ -1278,19 +1301,19 @@ public class ToplevelTests
{
Toplevel top = new ();
var subTop = new Toplevel ();
var view = new View { Frame = new Rectangle (0, 0, 20, 10) };
var view = new View { Frame = new (0, 0, 20, 10) };
subTop.Add (view);
top.Add (subTop);
Assert.False (top.IsLoaded);
Assert.False (subTop.IsLoaded);
Assert.Equal (new Rectangle (0, 0, 20, 10), view.Frame);
Assert.Equal (new (0, 0, 20, 10), view.Frame);
view.LayoutStarted += view_LayoutStarted;
void view_LayoutStarted (object sender, LayoutEventArgs e)
{
Assert.Equal (new Rectangle (0, 0, 20, 10), view._needsDisplayRect);
Assert.Equal (new (0, 0, 20, 10), view._needsDisplayRect);
view.LayoutStarted -= view_LayoutStarted;
}
@@ -1298,7 +1321,7 @@ public class ToplevelTests
Assert.True (top.IsLoaded);
Assert.True (subTop.IsLoaded);
Assert.Equal (new Rectangle (0, 0, 20, 10), view.Frame);
Assert.Equal (new (0, 0, 20, 10), view.Frame);
view.Frame = new (1, 3, 10, 5);
Assert.Equal (new (1, 3, 10, 5), view.Frame);
@@ -1308,6 +1331,7 @@ public class ToplevelTests
view.Frame = new (1, 3, 10, 5);
Assert.Equal (new (1, 3, 10, 5), view.Frame);
Assert.Equal (new (0, 0, 10, 5), view._needsDisplayRect);
top.Dispose ();
}
[Fact]
@@ -1319,7 +1343,7 @@ public class ToplevelTests
X = 3,
Y = 3,
Width = 40,
Height = 16,
Height = 16
};
scrollView.SetContentSize (new (200, 100));
var win = new Window { X = 3, Y = 3, Width = Dim.Fill (3), Height = Dim.Fill (3), Arrangement = ViewArrangement.Movable };
@@ -1333,34 +1357,36 @@ public class ToplevelTests
Assert.Equal (new (0, 0, 200, 100), scrollView.Subviews [0].Frame);
Assert.Equal (new (3, 3, 194, 94), win.Frame);
Application.OnMouseEvent (new MouseEvent { Position = new (6, 6), Flags = MouseFlags.Button1Pressed });
Application.OnMouseEvent (new () { Position = new (6, 6), Flags = MouseFlags.Button1Pressed });
Assert.Equal (win.Border, Application.MouseGrabView);
Assert.Equal (new (3, 3, 194, 94), win.Frame);
Application.OnMouseEvent (new MouseEvent { Position = new (9, 9), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition });
Application.OnMouseEvent (new () { Position = new (9, 9), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition });
Assert.Equal (win.Border, Application.MouseGrabView);
top.SetNeedsLayout ();
top.LayoutSubviews ();
Assert.Equal (new Rectangle (6, 6, 191, 91), win.Frame);
Assert.Equal (new (6, 6, 191, 91), win.Frame);
Application.Refresh ();
Application.OnMouseEvent (new MouseEvent
{
Position = new (5, 5), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (5, 5), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Assert.Equal (win.Border, Application.MouseGrabView);
top.SetNeedsLayout ();
top.LayoutSubviews ();
Assert.Equal (new Rectangle (2, 2, 195, 95), win.Frame);
Assert.Equal (new (2, 2, 195, 95), win.Frame);
Application.Refresh ();
Application.OnMouseEvent (new MouseEvent { Position = new (5, 5), Flags = MouseFlags.Button1Released });
Application.OnMouseEvent (new () { Position = new (5, 5), Flags = MouseFlags.Button1Released });
// ScrollView always grab the mouse when the container's subview OnMouseEnter don't want grab the mouse
Assert.Equal (scrollView, Application.MouseGrabView);
Application.OnMouseEvent (new MouseEvent { Position = new (4, 4), Flags = MouseFlags.ReportMousePosition });
Application.OnMouseEvent (new () { Position = new (4, 4), Flags = MouseFlags.ReportMousePosition });
Assert.Equal (scrollView, Application.MouseGrabView);
top.Dispose ();
}
[Fact]
@@ -1368,75 +1394,81 @@ public class ToplevelTests
public void Window_Viewport_Bigger_Than_Driver_Cols_And_Rows_Allow_Drag_Beyond_Left_Right_And_Bottom ()
{
Toplevel top = new ();
var window = new Window { Width = 20, Height = 3, Arrangement = ViewArrangement.Movable};
var window = new Window { Width = 20, Height = 3, Arrangement = ViewArrangement.Movable };
RunState rsTop = Application.Begin (top);
((FakeDriver)Application.Driver).SetBufferSize (40, 10);
RunState rsWindow = Application.Begin (window);
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 40, 10), top.Frame);
Assert.Equal (new Rectangle (0, 0, 20, 3), window.Frame);
Assert.Equal (new (0, 0, 40, 10), top.Frame);
Assert.Equal (new (0, 0, 20, 3), window.Frame);
Assert.Null (Application.MouseGrabView);
Application.OnMouseEvent (new MouseEvent { Position = new (0, 0), Flags = MouseFlags.Button1Pressed });
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Pressed });
Assert.Equal (window.Border, Application.MouseGrabView);
Application.OnMouseEvent (new MouseEvent
{
Position = new (-11, -4), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (-11, -4), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 40, 10), top.Frame);
Assert.Equal (new Rectangle (0, 0, 20, 3), window.Frame);
Assert.Equal (new (0, 0, 40, 10), top.Frame);
Assert.Equal (new (0, 0, 20, 3), window.Frame);
// Changes Top size to same size as Dialog more menu and scroll bar
((FakeDriver)Application.Driver).SetBufferSize (20, 3);
Application.OnMouseEvent (new MouseEvent
{
Position = new (-1, -1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (-1, -1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 20, 3), top.Frame);
Assert.Equal (new Rectangle (0, 0, 20, 3), window.Frame);
Assert.Equal (new (0, 0, 20, 3), top.Frame);
Assert.Equal (new (0, 0, 20, 3), window.Frame);
// Changes Top size smaller than Dialog size
((FakeDriver)Application.Driver).SetBufferSize (19, 2);
Application.OnMouseEvent (new MouseEvent
{
Position = new (-1, -1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (-1, -1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 19, 2), top.Frame);
Assert.Equal (new Rectangle (-1, 0, 20, 3), window.Frame);
Assert.Equal (new (0, 0, 19, 2), top.Frame);
Assert.Equal (new (-1, 0, 20, 3), window.Frame);
Application.OnMouseEvent (new MouseEvent
{
Position = new (18, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (18, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 19, 2), top.Frame);
Assert.Equal (new Rectangle (18, 1, 20, 3), window.Frame);
Assert.Equal (new (0, 0, 19, 2), top.Frame);
Assert.Equal (new (18, 1, 20, 3), window.Frame);
// On a real app we can't go beyond the SuperView bounds
Application.OnMouseEvent (new MouseEvent
{
Position = new (19, 2), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (19, 2), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.Refresh ();
Assert.Equal (new Rectangle (0, 0, 19, 2), top.Frame);
Assert.Equal (new Rectangle (19, 2, 20, 3), window.Frame);
TestHelpers.AssertDriverContentsWithFrameAre (@"", _output);
Assert.Equal (new (0, 0, 19, 2), top.Frame);
Assert.Equal (new (19, 2, 20, 3), window.Frame);
TestHelpers.AssertDriverContentsWithFrameAre (@"", output);
Application.End (rsWindow);
Application.End (rsTop);
top.Dispose ();
}
[Fact]
@@ -1462,27 +1494,29 @@ public class ToplevelTests
RunState rs = Application.Begin (window);
Assert.Null (Application.MouseGrabView);
Assert.Equal (new Rectangle (0, 0, 10, 3), window.Frame);
Assert.Equal (new (0, 0, 10, 3), window.Frame);
Application.OnMouseEvent (new MouseEvent { Position = new (0, 0), Flags = MouseFlags.Button1Pressed });
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Pressed });
var firstIteration = false;
Application.RunIteration (ref rs, ref firstIteration);
Assert.Equal (window.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (0, 0, 10, 3), window.Frame);
Assert.Equal (new (0, 0, 10, 3), window.Frame);
Application.OnMouseEvent (new MouseEvent
{
Position = new (1, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
Application.OnMouseEvent (
new ()
{
Position = new (1, 1), Flags = MouseFlags.Button1Pressed | MouseFlags.ReportMousePosition
});
firstIteration = false;
Application.RunIteration (ref rs, ref firstIteration);
Assert.Equal (window.Border, Application.MouseGrabView);
Assert.Equal (new Rectangle (1, 1, 10, 3), window.Frame);
Assert.Equal (new (1, 1, 10, 3), window.Frame);
Application.End (rs);
window.Dispose ();
}
[Fact]
@@ -1494,13 +1528,14 @@ public class ToplevelTests
((FakeDriver)Application.Driver).SetBufferSize (20, 20);
var testWindow = new Window { X = 2, Y = 1, Width = 15, Height = 10 };
Assert.Equal (new Rectangle (2, 1, 15, 10), testWindow.Frame);
Assert.Equal (new (2, 1, 15, 10), testWindow.Frame);
RunState rsTestWindow = Application.Begin (testWindow);
Assert.Equal (new Rectangle (2, 1, 15, 10), testWindow.Frame);
Assert.Equal (new (2, 1, 15, 10), testWindow.Frame);
Application.End (rsTestWindow);
Application.End (rsTop);
top.Dispose ();
}
// Don't use Dialog as a Top, use a Window instead - dialog has complex layout behavior that is not needed here.
@@ -1514,50 +1549,50 @@ public class ToplevelTests
RunState rsTop = Application.Begin (top);
((FakeDriver)Application.Driver).SetBufferSize (20, 20);
Assert.Equal (new Rectangle (0, 0, 20, 20), win.Frame);
Assert.Equal (new (0, 0, 20, 20), win.Frame);
var btnPopup = new Button { Text = "Popup" };
var testWindow = new Window { X = 2, Y = 1, Width = 15, Height = 10 };
testWindow.Add (btnPopup);
btnPopup.Accept += (s, e) =>
{
Rectangle viewToScreen = btnPopup.ViewportToScreen (top.Frame);
{
Rectangle viewToScreen = btnPopup.ViewportToScreen (top.Frame);
var viewAddedToTop = new View
{
Text = "viewAddedToTop",
X = 1,
Y = viewToScreen.Y + 1,
Width = 18,
Height = 16,
BorderStyle = LineStyle.Single
};
Assert.Equal (testWindow, Application.Current);
Application.Current.DrawContentComplete += OnDrawContentComplete;
top.Add (viewAddedToTop);
var viewAddedToTop = new View
{
Text = "viewAddedToTop",
X = 1,
Y = viewToScreen.Y + 1,
Width = 18,
Height = 16,
BorderStyle = LineStyle.Single
};
Assert.Equal (testWindow, Application.Current);
Application.Current.DrawContentComplete += OnDrawContentComplete;
top.Add (viewAddedToTop);
void OnDrawContentComplete (object sender, DrawEventArgs e)
{
Assert.Equal (new Rectangle (1, 3, 18, 16), viewAddedToTop.Frame);
void OnDrawContentComplete (object sender, DrawEventArgs e)
{
Assert.Equal (new (1, 3, 18, 16), viewAddedToTop.Frame);
Rectangle savedClip = Application.Driver.Clip;
Application.Driver.Clip = top.Frame;
viewAddedToTop.Draw ();
top.Move (2, 15);
View.Driver.AddStr ("One");
top.Move (2, 16);
View.Driver.AddStr ("Two");
top.Move (2, 17);
View.Driver.AddStr ("Three");
Application.Driver.Clip = savedClip;
Rectangle savedClip = Application.Driver.Clip;
Application.Driver.Clip = top.Frame;
viewAddedToTop.Draw ();
top.Move (2, 15);
View.Driver.AddStr ("One");
top.Move (2, 16);
View.Driver.AddStr ("Two");
top.Move (2, 17);
View.Driver.AddStr ("Three");
Application.Driver.Clip = savedClip;
Application.Current.DrawContentComplete -= OnDrawContentComplete;
}
};
Application.Current.DrawContentComplete -= OnDrawContentComplete;
}
};
RunState rsTestWindow = Application.Begin (testWindow);
Assert.Equal (new Rectangle (2, 1, 15, 10), testWindow.Frame);
Assert.Equal (new (2, 1, 15, 10), testWindow.Frame);
Application.OnMouseEvent (new () { Position = new (5, 2), Flags = MouseFlags.Button1Clicked });
Application.Top.Draw ();
@@ -1587,11 +1622,12 @@ public class ToplevelTests
││Three ││
│└────────────────┘│
└──────────────────┘",
_output
output
);
Application.End (rsTestWindow);
Application.End (rsTop);
top.Dispose ();
}
private void OnDrawContentComplete (object sender, DrawEventArgs e) { throw new NotImplementedException (); }
@@ -1604,7 +1640,7 @@ public class ToplevelTests
{
Menus =
[
new MenuBarItem ("Child", new MenuItem [] { new ("_Create Child", "", null) })
new ("Child", new MenuItem [] { new ("_Create Child", "", null) })
]
};
var topChild = new Toplevel ();
@@ -1615,6 +1651,7 @@ public class ToplevelTests
Exception exception = Record.Exception (() => topChild.NewKeyDownEvent (KeyCode.AltMask));
Assert.Null (exception);
top.Dispose ();
}
[Fact]