3 changed files with 92 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.LogicalTree; |
||||
|
using Avalonia.VisualTree; |
||||
|
|
||||
|
namespace Avalonia.Automation.Peers |
||||
|
{ |
||||
|
public class NativeMenuBarAutomationPeer(NativeMenuBar owner) : ControlAutomationPeer(owner) |
||||
|
{ |
||||
|
protected override AutomationControlType GetAutomationControlTypeCore() |
||||
|
{ |
||||
|
return AutomationControlType.MenuBar; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,73 @@ |
|||||
|
using System.Linq; |
||||
|
using Avalonia; |
||||
|
using Avalonia.Automation; |
||||
|
using Avalonia.Automation.Peers; |
||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.Controls.Templates; |
||||
|
using Avalonia.UnitTests; |
||||
|
using Avalonia.VisualTree; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Avalonia.Controls.UnitTests.Automation; |
||||
|
|
||||
|
public class NativeMenuBarAutomationPeerTests |
||||
|
{ |
||||
|
public class PeerCreation : ScopedTestBase |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Creates_NativeMenuBarAutomationPeer() |
||||
|
{ |
||||
|
var control = new NativeMenuBar { Template = CreateTemplate() }; |
||||
|
var peer = ControlAutomationPeer.CreatePeerForElement(control); |
||||
|
|
||||
|
Assert.IsType<NativeMenuBarAutomationPeer>(peer); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void ControlType_Is_MenuBar() |
||||
|
{ |
||||
|
var control = new NativeMenuBar { Template = CreateTemplate() }; |
||||
|
var peer = (NativeMenuBarAutomationPeer)ControlAutomationPeer.CreatePeerForElement(control); |
||||
|
|
||||
|
Assert.Equal(AutomationControlType.MenuBar, peer.GetAutomationControlType()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public class Children : ScopedTestBase |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Exposes_Realized_MenuItems_Via_VisualChildren() |
||||
|
{ |
||||
|
var control = new NativeMenuBar { Template = CreateTemplate() }; |
||||
|
control.ApplyTemplate(); |
||||
|
var menu = Assert.IsType<Menu>(control.GetVisualChildren().Single()); |
||||
|
menu.ApplyTemplate(); |
||||
|
menu.Measure(Size.Infinity); |
||||
|
menu.Arrange(new Rect(0, 0, 300, 30)); |
||||
|
control.Measure(Size.Infinity); |
||||
|
control.Arrange(new Rect(0, 0, 300, 30)); |
||||
|
|
||||
|
var peer = (NativeMenuBarAutomationPeer)ControlAutomationPeer.CreatePeerForElement(control); |
||||
|
var presenterChildren = peer.GetChildren(); |
||||
|
|
||||
|
Assert.Equal(2, presenterChildren.Count); |
||||
|
Assert.All(presenterChildren, x => Assert.IsType<MenuItemAutomationPeer>(x)); |
||||
|
Assert.Equal("File", presenterChildren[0].GetName()); |
||||
|
Assert.Equal("Edit", presenterChildren[1].GetName()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static FuncControlTemplate CreateTemplate() |
||||
|
{ |
||||
|
return new FuncControlTemplate((_, ns) => |
||||
|
new Menu |
||||
|
{ |
||||
|
Name = "PART_NativeMenuPresenter", |
||||
|
Items = |
||||
|
{ |
||||
|
new MenuItem { Header = "File" }, |
||||
|
new MenuItem { Header = "Edit" }, |
||||
|
}, |
||||
|
}.RegisterInNameScope(ns)); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue