InputTests.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Reactive.Disposables;
  3. using System.Threading;
  4. using Avalonia.Controls;
  5. using Avalonia.Input;
  6. using Avalonia.Layout;
  7. using Avalonia.Threading;
  8. namespace Avalonia.Headless.UnitTests;
  9. public class InputTests
  10. #if XUNIT
  11. : IDisposable
  12. #endif
  13. {
  14. private Window _window;
  15. private Application _setupApp;
  16. #if NUNIT
  17. [SetUp]
  18. public void SetUp()
  19. #elif XUNIT
  20. public InputTests()
  21. #endif
  22. {
  23. _setupApp = Application.Current;
  24. Dispatcher.UIThread.VerifyAccess();
  25. _window = new Window
  26. {
  27. Width = 100,
  28. Height = 100
  29. };
  30. }
  31. #if NUNIT
  32. [AvaloniaTest, Timeout(10000)]
  33. #elif XUNIT
  34. [AvaloniaFact(Timeout = 10000)]
  35. #endif
  36. public void Should_Click_Button_On_Window()
  37. {
  38. Assert.True(_setupApp == Application.Current);
  39. var buttonClicked = false;
  40. var button = new Button
  41. {
  42. HorizontalAlignment = HorizontalAlignment.Stretch,
  43. VerticalAlignment = VerticalAlignment.Stretch
  44. };
  45. button.Click += (_, _) => buttonClicked = true;
  46. _window.Content = button;
  47. _window.Show();
  48. _window.MouseDown(new Point(50, 50), MouseButton.Left);
  49. _window.MouseUp(new Point(50, 50), MouseButton.Left);
  50. Assert.True(buttonClicked);
  51. }
  52. #if NUNIT
  53. [TearDown]
  54. public void TearDown()
  55. #elif XUNIT
  56. public void Dispose()
  57. #endif
  58. {
  59. Assert.True(_setupApp == Application.Current);
  60. Dispatcher.UIThread.VerifyAccess();
  61. _window.Close();
  62. }
  63. }