GestureTests.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System.Collections.Generic;
  4. using Avalonia.Controls;
  5. using Avalonia.Controls.UnitTests;
  6. using Avalonia.Input;
  7. using Xunit;
  8. namespace Avalonia.Interactivity.UnitTests
  9. {
  10. public class GestureTests
  11. {
  12. private MouseTestHelper _mouse = new MouseTestHelper();
  13. [Fact]
  14. public void Tapped_Should_Follow_Pointer_Pressed_Released()
  15. {
  16. Border border = new Border();
  17. var decorator = new Decorator
  18. {
  19. Child = border
  20. };
  21. var result = new List<string>();
  22. decorator.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("dp"));
  23. decorator.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("dr"));
  24. decorator.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("dt"));
  25. border.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("bp"));
  26. border.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("br"));
  27. border.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("bt"));
  28. _mouse.Click(border);
  29. Assert.Equal(new[] { "bp", "dp", "br", "dr", "bt", "dt" }, result);
  30. }
  31. [Fact]
  32. public void Tapped_Should_Be_Raised_Even_When_PointerPressed_Handled()
  33. {
  34. Border border = new Border();
  35. var decorator = new Decorator
  36. {
  37. Child = border
  38. };
  39. var result = new List<string>();
  40. border.AddHandler(Border.PointerPressedEvent, (s, e) => e.Handled = true);
  41. decorator.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("dt"));
  42. border.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("bt"));
  43. _mouse.Click(border);
  44. Assert.Equal(new[] { "bt", "dt" }, result);
  45. }
  46. [Fact]
  47. public void DoubleTapped_Should_Follow_Pointer_Pressed_Released_Pressed()
  48. {
  49. Border border = new Border();
  50. var decorator = new Decorator
  51. {
  52. Child = border
  53. };
  54. var result = new List<string>();
  55. decorator.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("dp"));
  56. decorator.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("dr"));
  57. decorator.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("dt"));
  58. decorator.AddHandler(Gestures.DoubleTappedEvent, (s, e) => result.Add("ddt"));
  59. border.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("bp"));
  60. border.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("br"));
  61. border.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("bt"));
  62. border.AddHandler(Gestures.DoubleTappedEvent, (s, e) => result.Add("bdt"));
  63. _mouse.Click(border);
  64. _mouse.Down(border, clickCount: 2);
  65. Assert.Equal(new[] { "bp", "dp", "br", "dr", "bt", "dt", "bp", "dp", "bdt", "ddt" }, result);
  66. }
  67. }
  68. }