mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
More refactoring. Still WIP
This commit is contained in:
@@ -24,6 +24,11 @@ public class AllViewsTests (ITestOutputHelper output) : TestsAllViews
|
||||
return;
|
||||
}
|
||||
|
||||
if (view is IDesignable designable)
|
||||
{
|
||||
designable.EnableForDesign ();
|
||||
}
|
||||
|
||||
view.X = Pos.Center ();
|
||||
view.Y = Pos.Center ();
|
||||
|
||||
@@ -61,17 +66,6 @@ public class AllViewsTests (ITestOutputHelper output) : TestsAllViews
|
||||
Assert.True (Test_All_Constructors_Of_Type (viewType));
|
||||
}
|
||||
|
||||
//[Fact]
|
||||
//public void AllViews_HotKey_Works ()
|
||||
//{
|
||||
// foreach (var type in GetAllViewClasses ()) {
|
||||
// _output.WriteLine ($"Testing {type.Name}");
|
||||
// var view = GetTypeInitializer (type, type.GetConstructor (Array.Empty<Type> ()));
|
||||
// view.HotKeySpecifier = (Rune)'^';
|
||||
// view.Text = "^text";
|
||||
// Assert.Equal(Key.T, view.HotKey);
|
||||
// }
|
||||
//}
|
||||
|
||||
public bool Test_All_Constructors_Of_Type (Type type)
|
||||
{
|
||||
@@ -87,4 +81,86 @@ public class AllViewsTests (ITestOutputHelper output) : TestsAllViews
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//[Fact]
|
||||
//public void AllViews_HotKey_Works ()
|
||||
//{
|
||||
// foreach (var type in GetAllViewClasses ()) {
|
||||
// _output.WriteLine ($"Testing {type.Name}");
|
||||
// var view = GetTypeInitializer (type, type.GetConstructor (Array.Empty<Type> ()));
|
||||
// view.HotKeySpecifier = (Rune)'^';
|
||||
// view.Text = "^text";
|
||||
// Assert.Equal(Key.T, view.HotKey);
|
||||
// }
|
||||
//}
|
||||
|
||||
[Theory]
|
||||
[MemberData (nameof (AllViewTypes))]
|
||||
public void AllViews_Command_Select_Raises_Selected (Type viewType)
|
||||
{
|
||||
var view = (View)CreateInstanceIfNotGeneric (viewType);
|
||||
|
||||
if (view == null)
|
||||
{
|
||||
output.WriteLine ($"Ignoring {viewType} - It's a Generic");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (view is IDesignable designable)
|
||||
{
|
||||
designable.EnableForDesign ();
|
||||
}
|
||||
|
||||
var selectedCount = 0;
|
||||
view.Selected += (s, e) => selectedCount++;
|
||||
|
||||
var acceptedCount = 0;
|
||||
view.Accepted += (s, e) =>
|
||||
{
|
||||
acceptedCount++;
|
||||
};
|
||||
|
||||
|
||||
if (view.InvokeCommand(Command.Select) == true)
|
||||
{
|
||||
Assert.Equal(1, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData (nameof (AllViewTypes))]
|
||||
public void AllViews_Command_Accept_Raises_Accepted (Type viewType)
|
||||
{
|
||||
var view = (View)CreateInstanceIfNotGeneric (viewType);
|
||||
|
||||
if (view == null)
|
||||
{
|
||||
output.WriteLine ($"Ignoring {viewType} - It's a Generic");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (view is IDesignable designable)
|
||||
{
|
||||
designable.EnableForDesign ();
|
||||
}
|
||||
|
||||
var selectedCount = 0;
|
||||
view.Selected += (s, e) => selectedCount++;
|
||||
|
||||
var acceptedCount = 0;
|
||||
view.Accepted += (s, e) =>
|
||||
{
|
||||
acceptedCount++;
|
||||
};
|
||||
|
||||
|
||||
if (view.InvokeCommand (Command.Accept) == true)
|
||||
{
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (1, acceptedCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1316,10 +1316,56 @@ e
|
||||
super.Dispose ();
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void Label_CanFocus_True_Get_Focus_By_Keyboard ()
|
||||
public void CanFocus_False_HotKey_SetsFocus_Next ()
|
||||
{
|
||||
Label label = new () { Text = "label" };
|
||||
View otherView = new () { Text = "otherView", CanFocus = true };
|
||||
Label label = new () { Text = "_label" };
|
||||
View nextView = new () { Text = "nextView", CanFocus = true };
|
||||
Application.Navigation = new ();
|
||||
Application.Top = new ();
|
||||
Application.Top.Add (otherView, label, nextView);
|
||||
|
||||
Application.Top.SetFocus ();
|
||||
Assert.True (otherView.HasFocus);
|
||||
|
||||
// No focused view accepts Tab, and there's no other view to focus, so OnKeyDown returns false
|
||||
Assert.True (Application.OnKeyDown (label.HotKey));
|
||||
Assert.False (otherView.HasFocus);
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (nextView.HasFocus);
|
||||
|
||||
Application.Top.Dispose ();
|
||||
Application.ResetState ();
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_False_MouseClick_SetsFocus_Next ()
|
||||
{
|
||||
View otherView = new () { X = 0, Y = 0, Width = 1, Height = 1, Id = "otherView", CanFocus = true };
|
||||
Label label = new () { X = 0, Y = 1, Text = "_label" };
|
||||
View nextView = new () { X = Pos.Right (label), Y = Pos.Top (label), Width = 1, Height = 1, Id = "nextView", CanFocus = true };
|
||||
Application.Navigation = new ();
|
||||
Application.Top = new ();
|
||||
Application.Top.Add (otherView, label, nextView);
|
||||
|
||||
Application.Top.SetFocus ();
|
||||
|
||||
// click on label
|
||||
Application.OnMouseEvent (new () { ScreenPosition = label.Frame.Location, Flags = MouseFlags.Button1Clicked });
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (nextView.HasFocus);
|
||||
|
||||
Application.Top.Dispose ();
|
||||
Application.ResetState ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_True_HotKey_SetsFocus ()
|
||||
{
|
||||
Label label = new () { Text = "_label" };
|
||||
View view = new () { Text = "view", CanFocus = true };
|
||||
Application.Navigation = new ();
|
||||
Application.Top = new ();
|
||||
@@ -1333,21 +1379,7 @@ e
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
// No focused view accepts Tab, and there's no other view to focus, so OnKeyDown returns false
|
||||
Assert.False (Application.OnKeyDown (Key.Tab));
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
// Set label CanFocus to true
|
||||
label.CanFocus = true;
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
// No focused view accepts Tab, but label can now be focused, so focus should move to it.
|
||||
Assert.True (Application.OnKeyDown (Key.Tab));
|
||||
Assert.True (label.HasFocus);
|
||||
Assert.False (view.HasFocus);
|
||||
|
||||
Assert.True (Application.OnKeyDown (Key.Tab));
|
||||
Assert.True (Application.OnKeyDown (label.HotKey));
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
@@ -1357,15 +1389,17 @@ e
|
||||
|
||||
|
||||
[Fact]
|
||||
public void Label_CanFocus_True_Get_Focus_By_Mouse ()
|
||||
public void CanFocus_True_MouseClick_Focuses ()
|
||||
{
|
||||
Application.Navigation = new ();
|
||||
Label label = new ()
|
||||
{
|
||||
Text = "label",
|
||||
X = 0,
|
||||
Y = 0
|
||||
Y = 0,
|
||||
CanFocus = true
|
||||
};
|
||||
View view = new ()
|
||||
View otherView = new ()
|
||||
{
|
||||
Text = "view",
|
||||
X = 0,
|
||||
@@ -1379,34 +1413,26 @@ e
|
||||
Width = 10,
|
||||
Height = 10
|
||||
};
|
||||
Application.Top.Add (label, view);
|
||||
|
||||
Application.Top.Add (label, otherView);
|
||||
Application.Top.SetFocus ();
|
||||
Assert.Equal (view, Application.Top.MostFocused);
|
||||
Assert.False (label.CanFocus);
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.CanFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
// label can't focus so clicking on it has no effect
|
||||
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
Assert.True (label.CanFocus);
|
||||
Assert.True (label.HasFocus);
|
||||
Assert.True (otherView.CanFocus);
|
||||
Assert.False (otherView.HasFocus);
|
||||
|
||||
// Set label CanFocus to true
|
||||
label.CanFocus = true;
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
otherView.SetFocus ();
|
||||
Assert.True (otherView.HasFocus);
|
||||
|
||||
// label can focus, so clicking on it set focus
|
||||
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked });
|
||||
Application.OnMouseEvent (new () { ScreenPosition = new (0, 0), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.True (label.HasFocus);
|
||||
Assert.False (view.HasFocus);
|
||||
Assert.False (otherView.HasFocus);
|
||||
|
||||
// click on view
|
||||
Application.OnMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked });
|
||||
Application.OnMouseEvent (new () { ScreenPosition = new (0, 1), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
Assert.True (otherView.HasFocus);
|
||||
|
||||
Application.Top.Dispose ();
|
||||
Application.ResetState ();
|
||||
|
||||
@@ -90,17 +90,17 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
var selectedItemChangedCount = 0;
|
||||
rg.SelectedItemChanged += (s, e) => selectedItemChangedCount++;
|
||||
|
||||
var selectCount = 0;
|
||||
rg.Selected += (s, e) => selectCount++;
|
||||
var selectedCount = 0;
|
||||
rg.Selected += (s, e) => selectedCount++;
|
||||
|
||||
var acceptCount = 0;
|
||||
rg.Accepted += (s, e) => acceptCount++;
|
||||
var acceptedCount = 0;
|
||||
rg.Accepted += (s, e) => acceptedCount++;
|
||||
|
||||
// By default the first item is selected
|
||||
Assert.Equal (0, rg.SelectedItem);
|
||||
Assert.Equal (0, selectedItemChangedCount);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
Assert.Equal (Key.Empty, rg.HotKey);
|
||||
|
||||
// With HasFocus
|
||||
@@ -109,38 +109,38 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.Equal (0, rg.SelectedItem);
|
||||
Assert.Equal (0, rg.Cursor);
|
||||
Assert.Equal (0, selectedItemChangedCount);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
Assert.True (Application.OnKeyDown (Key.CursorDown));
|
||||
Assert.Equal (0, rg.SelectedItem); // Cursor changed, but selection didnt
|
||||
Assert.Equal (1, rg.Cursor);
|
||||
Assert.Equal (0, selectedItemChangedCount);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
Assert.False (Application.OnKeyDown (Key.CursorDown)); // Should not change selection (should focus next view if there was one, which there isn't)
|
||||
Assert.Equal (0, rg.SelectedItem);
|
||||
Assert.Equal (1, rg.Cursor);
|
||||
Assert.Equal (0, selectedItemChangedCount);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Test Select (Space) when Cursor != SelectedItem
|
||||
// Test Select (Space) when Cursor != SelectedItem - Should select cursor
|
||||
Assert.True (Application.OnKeyDown (Key.Space));
|
||||
Assert.Equal (1, rg.SelectedItem);
|
||||
Assert.Equal (1, rg.Cursor);
|
||||
Assert.Equal (1, selectedItemChangedCount);
|
||||
Assert.Equal (1, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (1, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Now test Select (Space) when Cursor == SelectedItem - Should cycle
|
||||
// Test Select (Space) when Cursor == SelectedItem - Should cycle
|
||||
Assert.True (Application.OnKeyDown (Key.Space));
|
||||
Assert.Equal (0, rg.SelectedItem);
|
||||
Assert.Equal (0, rg.Cursor);
|
||||
Assert.Equal (2, selectedItemChangedCount);
|
||||
Assert.Equal (2, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (2, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
Assert.True (Application.OnKeyDown (Key.Space));
|
||||
Assert.Equal (1, rg.SelectedItem);
|
||||
@@ -166,8 +166,8 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.Equal (1, rg.SelectedItem);
|
||||
Assert.Equal (1, rg.Cursor);
|
||||
Assert.Equal (7, selectedItemChangedCount);
|
||||
Assert.Equal (7, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (7, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Test HotKey
|
||||
// Selected == Cursor (1) - Advance state and raise Select event - DO NOT raise Accept
|
||||
@@ -178,8 +178,8 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.Equal (0, rg.SelectedItem);
|
||||
Assert.Equal (0, rg.Cursor);
|
||||
Assert.Equal (8, selectedItemChangedCount);
|
||||
Assert.Equal (8, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (8, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Make Selected != Cursor
|
||||
Assert.True (Application.OnKeyDown (Key.CursorDown));
|
||||
@@ -191,8 +191,8 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.Equal (1, rg.SelectedItem);
|
||||
Assert.Equal (1, rg.Cursor);
|
||||
Assert.Equal (9, selectedItemChangedCount);
|
||||
Assert.Equal (9, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (9, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
Application.ResetState (true);
|
||||
}
|
||||
@@ -372,7 +372,6 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.NotEmpty (rg.KeyBindings.GetCommands (KeyCode.L | KeyCode.ShiftMask));
|
||||
Assert.NotEmpty (rg.KeyBindings.GetCommands (KeyCode.L | KeyCode.AltMask));
|
||||
|
||||
// BUGBUG: These tests only test that RG works on it's own, not if it's a subview
|
||||
Assert.True (Application.OnKeyDown (Key.T));
|
||||
Assert.Equal (2, rg.SelectedItem);
|
||||
Assert.True (Application.OnKeyDown (Key.L));
|
||||
@@ -463,7 +462,7 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
group.NewKeyDownEvent (Key.G.WithAlt);
|
||||
|
||||
Assert.Equal (0, group.SelectedItem);
|
||||
Assert.True (group.HasFocus);
|
||||
Assert.False (group.HasFocus);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -619,18 +618,18 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
{
|
||||
var radioGroup = new RadioGroup
|
||||
{
|
||||
RadioLabels = ["_1", "__2"]
|
||||
RadioLabels = ["_1", "_2"]
|
||||
};
|
||||
Assert.True (radioGroup.CanFocus);
|
||||
|
||||
var selectedItemChanged = 0;
|
||||
radioGroup.SelectedItemChanged += (s, e) => selectedItemChanged++;
|
||||
|
||||
var selectCount = 0;
|
||||
radioGroup.Selected += (s, e) => selectCount++;
|
||||
var selectedCount = 0;
|
||||
radioGroup.Selected += (s, e) => selectedCount++;
|
||||
|
||||
var acceptCount = 0;
|
||||
radioGroup.Accepted += (s, e) => acceptCount++;
|
||||
var acceptedCount = 0;
|
||||
radioGroup.Accepted += (s, e) => acceptedCount++;
|
||||
|
||||
Assert.Equal (Orientation.Vertical, radioGroup.Orientation);
|
||||
|
||||
@@ -638,26 +637,29 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.True (radioGroup.HasFocus);
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (0, selectedItemChanged);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
Assert.False (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
// Click on the first item, which is already selected
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (0, selectedItemChanged);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Click on the second item
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.Equal (1, radioGroup.SelectedItem);
|
||||
Assert.Equal (1, selectedItemChanged);
|
||||
Assert.Equal (1, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (1, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// Click on the first item
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (2, selectedItemChanged);
|
||||
Assert.Equal (2, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (2, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -673,16 +675,16 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
var selectedItemChanged = 0;
|
||||
radioGroup.SelectedItemChanged += (s, e) => selectedItemChanged++;
|
||||
|
||||
var selectCount = 0;
|
||||
radioGroup.Selected += (s, e) => selectCount++;
|
||||
var selectedCount = 0;
|
||||
radioGroup.Selected += (s, e) => selectedCount++;
|
||||
|
||||
var acceptCount = 0;
|
||||
var handleAccept = false;
|
||||
var acceptedCount = 0;
|
||||
var handleAccepted = false;
|
||||
|
||||
radioGroup.Accepted += (s, e) =>
|
||||
{
|
||||
acceptCount++;
|
||||
e.Handled = handleAccept;
|
||||
acceptedCount++;
|
||||
e.Handled = handleAccepted;
|
||||
};
|
||||
|
||||
Assert.True (radioGroup.DoubleClickAccepts);
|
||||
@@ -692,25 +694,32 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.True (radioGroup.HasFocus);
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (0, selectedItemChanged);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (0, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (0, acceptedCount);
|
||||
|
||||
// NOTE: Drivers ALWAYS generate a Button1Clicked event before Button1DoubleClicked
|
||||
// NOTE: We need to do the same
|
||||
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (0, selectedItemChanged);
|
||||
Assert.Equal (0, selectCount);
|
||||
Assert.Equal (1, acceptCount);
|
||||
Assert.Equal (0, selectedCount);
|
||||
Assert.Equal (1, acceptedCount);
|
||||
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.Equal (1, radioGroup.SelectedItem);
|
||||
Assert.Equal (1, selectedItemChanged);
|
||||
Assert.Equal (1, selectCount);
|
||||
Assert.Equal (1, acceptCount);
|
||||
Assert.Equal (1, selectedCount);
|
||||
Assert.Equal (1, acceptedCount);
|
||||
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
Assert.Equal (1, radioGroup.SelectedItem);
|
||||
Assert.Equal (1, selectedItemChanged);
|
||||
Assert.Equal (1, selectCount);
|
||||
Assert.Equal (2, acceptCount);
|
||||
Assert.Equal (1, selectedCount);
|
||||
Assert.Equal (2, acceptedCount);
|
||||
|
||||
View superView = new () { Id = "superView", CanFocus = true };
|
||||
superView.Add (radioGroup);
|
||||
@@ -719,8 +728,8 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (2, selectedItemChanged);
|
||||
Assert.Equal (2, selectCount);
|
||||
Assert.Equal (2, acceptCount);
|
||||
Assert.Equal (2, selectedCount);
|
||||
Assert.Equal (2, acceptedCount);
|
||||
|
||||
var superViewAcceptCount = 0;
|
||||
|
||||
@@ -732,24 +741,28 @@ public class RadioGroupTests (ITestOutputHelper output)
|
||||
|
||||
Assert.Equal (0, superViewAcceptCount);
|
||||
|
||||
handleAccept = true;
|
||||
Assert.False (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
// By handling the event, we're cancelling it. So the radio group should not change.
|
||||
handleAccepted = true;
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (2, selectedItemChanged);
|
||||
Assert.Equal (2, selectCount);
|
||||
Assert.Equal (3, acceptCount);
|
||||
Assert.Equal (1, superViewAcceptCount);
|
||||
Assert.Equal (2, selectedCount);
|
||||
Assert.Equal (3, acceptedCount);
|
||||
Assert.Equal (0, superViewAcceptCount);
|
||||
|
||||
handleAccept = false;
|
||||
Assert.False (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
handleAccepted = false;
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
Assert.Equal (0, radioGroup.SelectedItem);
|
||||
Assert.Equal (2, selectedItemChanged);
|
||||
Assert.Equal (2, selectCount);
|
||||
Assert.Equal (4, acceptCount);
|
||||
Assert.Equal (3, superViewAcceptCount); // Accept bubbles up to superview
|
||||
Assert.Equal (2, selectedCount);
|
||||
Assert.Equal (4, acceptedCount);
|
||||
Assert.Equal (1, superViewAcceptCount); // Accept bubbles up to superview
|
||||
|
||||
radioGroup.DoubleClickAccepts = false;
|
||||
Assert.False (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1Clicked }));
|
||||
Assert.True (radioGroup.NewMouseEvent (new () { Position = new (0, 1), Flags = MouseFlags.Button1DoubleClicked }));
|
||||
}
|
||||
|
||||
#endregion Mouse Tests
|
||||
|
||||
Reference in New Issue
Block a user