Browse Source

add a failing unit test.

Dan Walmsley 5 years ago
parent
commit
08c451c676
1 changed files with 39 additions and 0 deletions
  1. 39 0
      tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs

+ 39 - 0
tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs

@@ -1,5 +1,6 @@
 using System;
 using Avalonia.Input;
+using Avalonia.LogicalTree;
 using Avalonia.Markup.Xaml;
 using Avalonia.Markup.Xaml.MarkupExtensions;
 using Avalonia.Platform;
@@ -132,6 +133,44 @@ namespace Avalonia.Controls.UnitTests
                 popupImpl.Verify(x => x.Show(), Times.Exactly(2));
             }
         }
+        
+        [Fact]
+        public void Context_Menu_Can_Be_Shared_Between_Controls_Even_After_A_Control_Is_Removed_From_Visual_Tree()
+        {
+            using (Application())
+            {
+                var sut = new ContextMenu();
+                var target1 = new Panel
+                {
+                    ContextMenu = sut
+                };
+
+                var target2 = new Panel
+                {
+                    ContextMenu = sut
+                };
+
+                var sp = new StackPanel { Children = { target1, target2 } };
+                var window = new Window { Content = sp };
+                
+                window.ApplyTemplate();
+                window.Presenter.ApplyTemplate();
+
+                _mouse.Click(target1, MouseButton.Right);
+
+                Assert.True(sut.IsOpen);
+
+                _mouse.Click(target2, MouseButton.Left);
+                
+                Assert.False(sut.IsOpen);
+                
+                sp.Children.Remove(target1);
+                
+                _mouse.Click(target2, MouseButton.Right);
+                
+                Assert.True(sut.IsOpen);
+            }
+        }
 
         [Fact]
         public void Cancelling_Opening_Does_Not_Show_ContextMenu()