|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|