Browse Source

attempt at testing

Emmanuel Hansen 2 years ago
parent
commit
29e7666a67
1 changed files with 32 additions and 0 deletions
  1. 32 0
      tests/Avalonia.Base.UnitTests/Input/GesturesTests.cs

+ 32 - 0
tests/Avalonia.Base.UnitTests/Input/GesturesTests.cs

@@ -1,10 +1,13 @@
+using System;
 using System.Collections.Generic;
+using System.Threading;
 using Avalonia.Controls;
 using Avalonia.Input;
 using Avalonia.Input.GestureRecognizers;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.UnitTests;
+using Moq;
 using Xunit;
 
 namespace Avalonia.Base.UnitTests.Input
@@ -170,6 +173,35 @@ namespace Avalonia.Base.UnitTests.Input
             Assert.False(raised);
         }
 
+        [Fact]
+        public void Hold_Should_Not_Be_Raised_For_Multiple_Contact()
+        {
+            using var app = UnitTestApplication.Start(TestServices.MockThreadingInterface);
+
+            var iSettingsMock = new Mock<IPlatformSettings>();
+            iSettingsMock.Setup(x => x.HoldWaitDuration).Returns(TimeSpan.FromMilliseconds(300));
+            AvaloniaLocator.CurrentMutable.BindToSelf(this)
+               .Bind<IPlatformSettings>().ToConstant(iSettingsMock.Object);
+            Border border = new Border();
+            border.IsHoldWithMouseEnabled = true;
+            var decorator = new Decorator
+            {
+                Child = border
+            };
+            var raised = false;
+
+            decorator.AddHandler(Gestures.HoldingEvent, (s, e) => raised = true);
+
+            var secondMouse = new MouseTestHelper();
+
+            _mouse.Down(border, MouseButton.Left);
+
+            Thread.Sleep(1000);
+            secondMouse.Down(border, MouseButton.Left);
+
+            Assert.False(raised);
+        }
+
         private static void AddHandlers(
             Decorator decorator,
             Border border,