mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 16:59:35 +01:00
Fixed ToplevelTests
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user