From 9fa1ab92827d43895d3cb0241457dcaef5db7af7 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 6 Apr 2020 22:48:07 +0200 Subject: [PATCH] Add failing tests for shared context menus. Tests for #497. --- .../ContextMenuTests.cs | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs index 5a47a86e51..a54b93cfff 100644 --- a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs @@ -1,7 +1,10 @@ using System; using Avalonia.Input; +using Avalonia.Markup.Xaml; +using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Platform; using Avalonia.UnitTests; +using Castle.DynamicProxy.Generators; using Moq; using Xunit; @@ -168,6 +171,90 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void Context_Menu_In_Resources_Can_Be_Shared() + { + using (Application()) + { + var xaml = @" + + + + Foo + + + + + + + +"; + + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var target1 = window.Find("target1"); + var target2 = window.Find("target2"); + var mouse = new MouseTestHelper(); + + Assert.NotNull(target1.ContextMenu); + Assert.NotNull(target2.ContextMenu); + Assert.Same(target1.ContextMenu, target2.ContextMenu); + + window.Show(); + + var menu = target1.ContextMenu; + mouse.Click(target1, MouseButton.Right); + Assert.True(menu.IsOpen); + mouse.Click(target2, MouseButton.Right); + Assert.True(menu.IsOpen); + } + } + + [Fact] + public void Context_Menu_Can_Be_Set_In_Style() + { + using (Application()) + { + var xaml = @" + + + + + + + + + +"; + + var loader = new AvaloniaXamlLoader(); + var window = (Window)loader.Load(xaml); + var target1 = window.Find("target1"); + var target2 = window.Find("target2"); + var mouse = new MouseTestHelper(); + + Assert.NotNull(target1.ContextMenu); + Assert.NotNull(target2.ContextMenu); + Assert.Same(target1.ContextMenu, target2.ContextMenu); + + window.Show(); + + var menu = target1.ContextMenu; + mouse.Click(target1, MouseButton.Right); + Assert.True(menu.IsOpen); + mouse.Click(target2, MouseButton.Right); + Assert.True(menu.IsOpen); + } + } + [Fact(Skip = "The only reason this test was 'passing' before was that the author forgot to call Window.ApplyTemplate()")] public void Cancelling_Closing_Leaves_ContextMenuOpen() {