From a14435f59f49c6df75a8b9f1b11dd57e8dae27e7 Mon Sep 17 00:00:00 2001 From: Benedikt Schroeder Date: Sat, 27 Apr 2019 19:54:05 +0200 Subject: [PATCH] Fix unit tests --- src/Avalonia.Controls/Application.cs | 30 +++++++++--------- .../ApplicationTests.cs | 31 ++++++++++++++----- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/Avalonia.Controls/Application.cs b/src/Avalonia.Controls/Application.cs index e0f7b84e98..6f5cc3d4d6 100644 --- a/src/Avalonia.Controls/Application.cs +++ b/src/Avalonia.Controls/Application.cs @@ -228,25 +228,23 @@ namespace Avalonia /// The main window public int Run(Window mainWindow) { - Dispatcher.UIThread.Post(() => + if (mainWindow == null) { - if (MainWindow != null) - { - return; - } - - if (mainWindow == null) - { - throw new ArgumentNullException(nameof(mainWindow)); - } + throw new ArgumentNullException(nameof(mainWindow)); + } - if (!mainWindow.IsVisible) + if (MainWindow == null) + { + Dispatcher.UIThread.Post(() => { - mainWindow.Show(); - } - - MainWindow = mainWindow; - }); + if (!mainWindow.IsVisible) + { + mainWindow.Show(); + } + + MainWindow = mainWindow; + }); + } return Run(new CancellationTokenSource()); } diff --git a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs index f9b1ea251b..b3ce1a3866 100644 --- a/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ApplicationTests.cs @@ -18,6 +18,10 @@ namespace Avalonia.Controls.UnitTests { Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose; + var hasExit = false; + + Application.Current.Exit += (s, e) => hasExit = true; + var mainWindow = new Window(); mainWindow.Show(); @@ -30,7 +34,7 @@ namespace Avalonia.Controls.UnitTests mainWindow.Close(); - Assert.True(Application.Current.IsShuttingDown); + Assert.True(hasExit); } } @@ -41,6 +45,10 @@ namespace Avalonia.Controls.UnitTests { Application.Current.ShutdownMode = ShutdownMode.OnLastWindowClose; + var hasExit = false; + + Application.Current.Exit += (s, e) => hasExit = true; + var windowA = new Window(); windowA.Show(); @@ -51,11 +59,11 @@ namespace Avalonia.Controls.UnitTests windowA.Close(); - Assert.False(Application.Current.IsShuttingDown); + Assert.False(hasExit); windowB.Close(); - Assert.True(Application.Current.IsShuttingDown); + Assert.True(hasExit); } } @@ -66,6 +74,10 @@ namespace Avalonia.Controls.UnitTests { Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown; + var hasExit = false; + + Application.Current.Exit += (s, e) => hasExit = true; + var windowA = new Window(); windowA.Show(); @@ -76,15 +88,15 @@ namespace Avalonia.Controls.UnitTests windowA.Close(); - Assert.False(Application.Current.IsShuttingDown); + Assert.False(hasExit); windowB.Close(); - Assert.False(Application.Current.IsShuttingDown); + Assert.False(hasExit); Application.Current.Shutdown(); - Assert.True(Application.Current.IsShuttingDown); + Assert.True(hasExit); } } @@ -136,9 +148,12 @@ namespace Avalonia.Controls.UnitTests { using (UnitTestApplication.Start(TestServices.MockThreadingInterface)) { - Application.Current.Run(); + Application.Current.Startup += (s, e) => + { + Assert.Throws(() => { Application.Current.Run(); }); + }; - Assert.Throws(() => { Application.Current.Run(); }); + Application.Current.Run(); } }