GestureTests.cs 3.4 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.Input;
  6. using Xunit;
  7. namespace Avalonia.Interactivity.UnitTests
  8. {
  9. public class GestureTests
  10. {
  11. [Fact]
  12. public void Tapped_Should_Follow_Pointer_Pressed_Released()
  13. {
  14. Border border = new Border();
  15. var decorator = new Decorator
  16. {
  17. Child = border
  18. };
  19. var result = new List<string>();
  20. decorator.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("dp"));
  21. decorator.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("dr"));
  22. decorator.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("dt"));
  23. border.AddHandler(Border.PointerPressedEvent, (s, e) => result.Add("bp"));
  24. border.AddHandler(Border.PointerReleasedEvent, (s, e) => result.Add("br"));
  25. border.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("bt"));
  26. border.RaiseEvent(new PointerPressedEventArgs());
  27. border.RaiseEvent(new PointerReleasedEventArgs());
  28. Assert.Equal(new[] { "bp", "dp", "br", "dr", "bt", "dt" }, result);
  29. }
  30. [Fact]
  31. public void Tapped_Should_Be_Raised_Even_When_PointerPressed_Handled()
  32. {
  33. Border border = new Border();
  34. var decorator = new Decorator
  35. {
  36. Child = border
  37. };
  38. var result = new List<string>();
  39. border.AddHandler(Border.PointerPressedEvent, (s, e) => e.Handled = true);
  40. decorator.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("dt"));
  41. border.AddHandler(Gestures.TappedEvent, (s, e) => result.Add("bt"));
  42. border.RaiseEvent(new PointerPressedEventArgs());
  43. border.RaiseEvent(new PointerReleasedEventArgs());
  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. border.RaiseEvent(new PointerPressedEventArgs());
  64. border.RaiseEvent(new PointerReleasedEventArgs());
  65. border.RaiseEvent(new PointerPressedEventArgs { ClickCount = 2 });
  66. Assert.Equal(new[] { "bp", "dp", "br", "dr", "bt", "dt", "bp", "dp", "bdt", "ddt" }, result);
  67. }
  68. }
  69. }