LoadedTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Avalonia.Platform;
  2. using Avalonia.Threading;
  3. using Avalonia.UnitTests;
  4. using Moq;
  5. using Xunit;
  6. namespace Avalonia.Controls.UnitTests;
  7. public class LoadedTests
  8. {
  9. [Fact]
  10. public void Window_Loads_And_Unloads()
  11. {
  12. using (UnitTestApplication.Start(TestServices.StyledWindow))
  13. {
  14. int loadedCount = 0, unloadedCount = 0;
  15. var target = new Window();
  16. target.Loaded += (_, _) => loadedCount++;
  17. target.Unloaded += (_, _) => unloadedCount++;
  18. Assert.Equal(0, loadedCount);
  19. Assert.Equal(0, unloadedCount);
  20. target.Show();
  21. Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
  22. Assert.True(target.IsLoaded);
  23. Assert.Equal(1, loadedCount);
  24. Assert.Equal(0, unloadedCount);
  25. target.Close();
  26. Assert.Equal(1, loadedCount);
  27. Assert.Equal(1, unloadedCount);
  28. Assert.False(target.IsLoaded);
  29. }
  30. }
  31. [Fact]
  32. public void Control_Loads_And_Unloads()
  33. {
  34. using (UnitTestApplication.Start(TestServices.StyledWindow))
  35. {
  36. int loadedCount = 0, unloadedCount = 0;
  37. var window = new Window();
  38. window.Show();
  39. var target = new Button();
  40. target.Loaded += (_, _) => loadedCount++;
  41. target.Unloaded += (_, _) => unloadedCount++;
  42. Assert.Equal(0, loadedCount);
  43. Assert.Equal(0, unloadedCount);
  44. window.Content = target;
  45. Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
  46. Assert.True(target.IsLoaded);
  47. Assert.Equal(1, loadedCount);
  48. Assert.Equal(0, unloadedCount);
  49. window.Content = null;
  50. Assert.Equal(1, loadedCount);
  51. Assert.Equal(1, unloadedCount);
  52. Assert.False(target.IsLoaded);
  53. }
  54. }
  55. }