|
|
@@ -1,9 +1,7 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
-using System.ComponentModel;
|
|
|
using Avalonia.Controls.ApplicationLifetimes;
|
|
|
using Avalonia.Platform;
|
|
|
-using Avalonia.Threading;
|
|
|
using Avalonia.UnitTests;
|
|
|
using Moq;
|
|
|
using Xunit;
|
|
|
@@ -238,5 +236,81 @@ namespace Avalonia.Controls.UnitTests
|
|
|
Assert.Equal(new[] { window }, lifetime.Windows);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void MainWindow_Closed_Shutdown_Should_Be_Cancellable()
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(TestServices.StyledWindow))
|
|
|
+ using(var lifetime = new ClassicDesktopStyleApplicationLifetime())
|
|
|
+ {
|
|
|
+ lifetime.ShutdownMode = ShutdownMode.OnMainWindowClose;
|
|
|
+
|
|
|
+ var hasExit = false;
|
|
|
+
|
|
|
+ lifetime.Exit += (s, e) => hasExit = true;
|
|
|
+
|
|
|
+ var mainWindow = new Window();
|
|
|
+
|
|
|
+ mainWindow.Show();
|
|
|
+
|
|
|
+ lifetime.MainWindow = mainWindow;
|
|
|
+
|
|
|
+ var window = new Window();
|
|
|
+
|
|
|
+ window.Show();
|
|
|
+
|
|
|
+ var raised = 0;
|
|
|
+
|
|
|
+ lifetime.ShutdownRequested += (s, e) =>
|
|
|
+ {
|
|
|
+ e.Cancel = true;
|
|
|
+ ++raised;
|
|
|
+ };
|
|
|
+
|
|
|
+ mainWindow.Close();
|
|
|
+
|
|
|
+ Assert.Equal(1, raised);
|
|
|
+ Assert.False(hasExit);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void LastWindow_Closed_Shutdown_Should_Be_Cancellable()
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(TestServices.StyledWindow))
|
|
|
+ using(var lifetime = new ClassicDesktopStyleApplicationLifetime())
|
|
|
+ {
|
|
|
+ lifetime.ShutdownMode = ShutdownMode.OnLastWindowClose;
|
|
|
+
|
|
|
+ var hasExit = false;
|
|
|
+
|
|
|
+ lifetime.Exit += (s, e) => hasExit = true;
|
|
|
+
|
|
|
+ var windowA = new Window();
|
|
|
+
|
|
|
+ windowA.Show();
|
|
|
+
|
|
|
+ var windowB = new Window();
|
|
|
+
|
|
|
+ windowB.Show();
|
|
|
+
|
|
|
+ var raised = 0;
|
|
|
+
|
|
|
+ lifetime.ShutdownRequested += (s, e) =>
|
|
|
+ {
|
|
|
+ e.Cancel = true;
|
|
|
+ ++raised;
|
|
|
+ };
|
|
|
+
|
|
|
+ windowA.Close();
|
|
|
+
|
|
|
+ Assert.False(hasExit);
|
|
|
+
|
|
|
+ windowB.Close();
|
|
|
+
|
|
|
+ Assert.Equal(1, raised);
|
|
|
+ Assert.False(hasExit);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|