Browse Source

Fix unit tests

pull/2442/head
Benedikt Schroeder 7 years ago
parent
commit
a14435f59f
  1. 30
      src/Avalonia.Controls/Application.cs
  2. 31
      tests/Avalonia.Controls.UnitTests/ApplicationTests.cs

30
src/Avalonia.Controls/Application.cs

@ -228,25 +228,23 @@ namespace Avalonia
/// <param name="mainWindow">The main window</param>
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());
}

31
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<InvalidOperationException>(() => { Application.Current.Run(); });
};
Assert.Throws<InvalidOperationException>(() => { Application.Current.Run(); });
Application.Current.Run();
}
}

Loading…
Cancel
Save