@ -126,6 +126,86 @@ namespace Avalonia.Controls.UnitTests
}
}
[Fact]
public void OnMainWindowClose_Overrides_Secondary_Window_Cancellation ( )
{
using ( UnitTestApplication . Start ( TestServices . StyledWindow ) )
using ( var lifetime = new ClassicDesktopStyleApplicationLifetime ( ) )
{
lifetime . ShutdownMode = ShutdownMode . OnMainWindowClose ;
lifetime . SetupCore ( Array . Empty < string > ( ) ) ;
var hasExit = false ;
var secondaryWindowClosingExecuted = false ;
var secondaryWindowClosedExecuted = false ;
lifetime . Exit + = ( _ , _ ) = > hasExit = true ;
var mainWindow = new Window ( ) ;
mainWindow . Show ( ) ;
lifetime . MainWindow = mainWindow ;
var window = new Window ( ) ;
window . Closing + = ( _ , args ) = >
{
secondaryWindowClosingExecuted = true ;
args . Cancel = true ;
} ;
window . Closed + = ( _ , _ ) = >
{
secondaryWindowClosedExecuted = true ;
} ;
window . Show ( ) ;
mainWindow . Close ( ) ;
Assert . True ( secondaryWindowClosingExecuted ) ;
Assert . True ( secondaryWindowClosedExecuted ) ;
Assert . True ( hasExit ) ;
}
}
[Fact]
public void OnMainWindowClose_Overrides_Secondary_Window_Cancellation_From_TryShutdown ( )
{
using ( UnitTestApplication . Start ( TestServices . StyledWindow ) )
using ( var lifetime = new ClassicDesktopStyleApplicationLifetime ( ) )
{
lifetime . ShutdownMode = ShutdownMode . OnMainWindowClose ;
lifetime . SetupCore ( Array . Empty < string > ( ) ) ;
var hasExit = false ;
var secondaryWindowClosingExecuted = false ;
var secondaryWindowClosedExecuted = false ;
lifetime . Exit + = ( _ , _ ) = > hasExit = true ;
var mainWindow = new Window ( ) ;
mainWindow . Show ( ) ;
lifetime . MainWindow = mainWindow ;
var window = new Window ( ) ;
window . Closing + = ( _ , args ) = >
{
secondaryWindowClosingExecuted = true ;
args . Cancel = true ;
} ;
window . Closed + = ( _ , _ ) = >
{
secondaryWindowClosedExecuted = true ;
} ;
window . Show ( ) ;
lifetime . TryShutdown ( ) ;
Assert . True ( secondaryWindowClosingExecuted ) ;
Assert . True ( secondaryWindowClosedExecuted ) ;
Assert . True ( hasExit ) ;
}
}
[Fact]
public void Should_Exit_After_Last_Window_Closed ( )
{
@ -401,6 +481,8 @@ namespace Avalonia.Controls.UnitTests
lifetime . SetupCore ( Array . Empty < string > ( ) ) ;
var hasExit = false ;
var closingRaised = 0 ;
var closedRaised = 0 ;
lifetime . Exit + = ( _ , _ ) = > hasExit = true ;
@ -411,18 +493,21 @@ namespace Avalonia.Controls.UnitTests
var windowB = new Window ( ) ;
windowB . Show ( ) ;
var raised = 0 ;
windowA . Closing + = ( _ , e ) = >
{
e . Cancel = true ;
+ + raised ;
+ + closingRaised ;
} ;
windowA . Closed + = ( _ , e ) = >
{
+ + closedRaised ;
} ;
lifetime . Shutdown ( ) ;
Assert . Equal ( 1 , raised ) ;
Assert . Equal ( 1 , closingRaised ) ;
Assert . Equal ( 1 , closedRaised ) ;
Assert . True ( hasExit ) ;
}
}