|
|
|
@ -11,9 +11,6 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
{ |
|
|
|
public class DefaultMenuInteractionHandlerTests |
|
|
|
{ |
|
|
|
static PointerEventArgs CreateArgs(RoutedEvent ev, object source) |
|
|
|
=> new PointerEventArgs(ev, source, new FakePointer(), (Visual)source, default, 0, PointerPointProperties.None, default); |
|
|
|
|
|
|
|
static PointerPressedEventArgs CreatePressed(object source) => new PointerPressedEventArgs(source, |
|
|
|
new FakePointer(), (Visual)source, default,0, new PointerPointProperties (RawInputModifiers.None, PointerUpdateKind.LeftButtonPressed), |
|
|
|
default); |
|
|
|
@ -171,7 +168,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var menu = new Mock<IMenu>(); |
|
|
|
var item = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, isSubMenuOpen: true, parent: menu.Object); |
|
|
|
var nextItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerEnteredItemEvent, nextItem.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerEnteredItemEvent, nextItem.Object); |
|
|
|
|
|
|
|
menu.SetupGet(x => x.SelectedItem).Returns(item.Object); |
|
|
|
|
|
|
|
@ -191,7 +188,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var target = new DefaultMenuInteractionHandler(false); |
|
|
|
var menu = new Mock<IMenu>(); |
|
|
|
var item = CreateMockMenuItem(isTopLevel: true, parent: menu.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
menu.SetupGet(x => x.SelectedItem).Returns(item.Object); |
|
|
|
target.PointerExited(item, e); |
|
|
|
@ -206,7 +203,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var target = new DefaultMenuInteractionHandler(false); |
|
|
|
var menu = new Mock<IMenu>(); |
|
|
|
var item = CreateMockMenuItem(isTopLevel: true, parent: menu.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
menu.SetupGet(x => x.IsOpen).Returns(true); |
|
|
|
menu.SetupGet(x => x.SelectedItem).Returns(item.Object); |
|
|
|
@ -365,7 +362,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var menu = Mock.Of<IMenu>(); |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
|
|
|
|
target.PointerEntered(item.Object, e); |
|
|
|
|
|
|
|
@ -381,7 +378,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var menu = Mock.Of<IMenu>(); |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(hasSubMenu: true, parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
|
|
|
|
target.PointerEntered(item.Object, e); |
|
|
|
item.Verify(x => x.Open(), Times.Never); |
|
|
|
@ -401,7 +398,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(parent: parentItem.Object); |
|
|
|
var sibling = CreateMockMenuItem(hasSubMenu: true, isSubMenuOpen: true, parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
|
|
|
|
parentItem.SetupGet(x => x.SubItems).Returns(new[] { item.Object, sibling.Object }); |
|
|
|
|
|
|
|
@ -421,7 +418,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var menu = Mock.Of<IMenu>(); |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
parentItem.SetupGet(x => x.SelectedItem).Returns(item.Object); |
|
|
|
target.PointerExited(item, e); |
|
|
|
@ -438,7 +435,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(parent: parentItem.Object); |
|
|
|
var sibling = CreateMockMenuItem(parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
parentItem.SetupGet(x => x.SelectedItem).Returns(sibling.Object); |
|
|
|
target.PointerExited(item, e); |
|
|
|
@ -454,7 +451,7 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var menu = Mock.Of<IMenu>(); |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(hasSubMenu: true, parent: parentItem.Object); |
|
|
|
var e = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var e = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
item.Setup(x => x.IsPointerOverSubMenu).Returns(true); |
|
|
|
target.PointerExited(item, e); |
|
|
|
@ -488,8 +485,8 @@ namespace Avalonia.Controls.UnitTests.Platform |
|
|
|
var parentItem = CreateMockMenuItem(isTopLevel: true, hasSubMenu: true, parent: menu); |
|
|
|
var item = CreateMockMenuItem(hasSubMenu: true, parent: parentItem.Object); |
|
|
|
var childItem = CreateMockMenuItem(parent: item.Object); |
|
|
|
var enter = CreateArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
var leave = CreateArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
var enter = new RoutedEventArgs(MenuItem.PointerEnteredItemEvent, item.Object); |
|
|
|
var leave = new RoutedEventArgs(MenuItem.PointerExitedItemEvent, item.Object); |
|
|
|
|
|
|
|
// Pointer enters item; item is selected.
|
|
|
|
target.PointerEntered(item, enter); |
|
|
|
|