Browse Source

Enable turning off the setup check for appbuilder tests.

pull/1251/head
Jeremy Koritzinsky 9 years ago
parent
commit
ba481365f6
  1. 13
      src/Avalonia.Controls/AppBuilderBase.cs
  2. 6
      tests/Avalonia.Controls.UnitTests/AppBuilderTests.cs

13
src/Avalonia.Controls/AppBuilderBase.cs

@ -209,6 +209,17 @@ namespace Avalonia.Controls
public TAppBuilder UseAvaloniaModules() => AfterSetup(builder => SetupAvaloniaModules()); public TAppBuilder UseAvaloniaModules() => AfterSetup(builder => SetupAvaloniaModules());
private bool CheckSetup { get; set; } = true;
/// <summary>
/// Set this AppBuilder to ignore the setup check. Used for testing purposes.
/// </summary>
internal TAppBuilder IgnoreSetupCheck()
{
CheckSetup = false;
return Self;
}
private void SetupAvaloniaModules() private void SetupAvaloniaModules()
{ {
var moduleInitializers = from assembly in AvaloniaLocator.Current.GetService<IRuntimePlatform>().GetLoadedAssemblies() var moduleInitializers = from assembly in AvaloniaLocator.Current.GetService<IRuntimePlatform>().GetLoadedAssemblies()
@ -254,7 +265,7 @@ namespace Avalonia.Controls
throw new InvalidOperationException("No rendering system configured."); throw new InvalidOperationException("No rendering system configured.");
} }
if (s_setupWasAlreadyCalled) if (s_setupWasAlreadyCalled && CheckSetup)
{ {
throw new InvalidOperationException("Setup was already called on one of AppBuilder instances"); throw new InvalidOperationException("Setup was already called on one of AppBuilder instances");
} }

6
tests/Avalonia.Controls.UnitTests/AppBuilderTests.cs

@ -65,6 +65,7 @@ namespace Avalonia.Controls.UnitTests
{ {
ResetModuleLoadStates(); ResetModuleLoadStates();
AppBuilder.Configure<App>() AppBuilder.Configure<App>()
.IgnoreSetupCheck()
.UseWindowingSubsystem(() => { }) .UseWindowingSubsystem(() => { })
.UseRenderingSubsystem(() => { }) .UseRenderingSubsystem(() => { })
.UseAvaloniaModules() .UseAvaloniaModules()
@ -81,6 +82,7 @@ namespace Avalonia.Controls.UnitTests
{ {
ResetModuleLoadStates(); ResetModuleLoadStates();
var builder = AppBuilder.Configure<App>() var builder = AppBuilder.Configure<App>()
.IgnoreSetupCheck()
.UseWindowingSubsystem(() => { }) .UseWindowingSubsystem(() => { })
.UseRenderingSubsystem(() => { }, "Direct2D1"); .UseRenderingSubsystem(() => { }, "Direct2D1");
builder.UseAvaloniaModules().SetupWithoutStarting(); builder.UseAvaloniaModules().SetupWithoutStarting();
@ -90,6 +92,7 @@ namespace Avalonia.Controls.UnitTests
ResetModuleLoadStates(); ResetModuleLoadStates();
builder = AppBuilder.Configure<App>() builder = AppBuilder.Configure<App>()
.IgnoreSetupCheck()
.UseWindowingSubsystem(() => { }) .UseWindowingSubsystem(() => { })
.UseRenderingSubsystem(() => { }, "Skia"); .UseRenderingSubsystem(() => { }, "Skia");
builder.UseAvaloniaModules().SetupWithoutStarting(); builder.UseAvaloniaModules().SetupWithoutStarting();
@ -99,13 +102,14 @@ namespace Avalonia.Controls.UnitTests
} }
} }
[Fact (Skip = "We don't have rendering modules with dependencies right now")] [Fact]
public void LoadsRenderingModuleWithoutDependenciesWhenNoModuleMatches() public void LoadsRenderingModuleWithoutDependenciesWhenNoModuleMatches()
{ {
using (AvaloniaLocator.EnterScope()) using (AvaloniaLocator.EnterScope())
{ {
ResetModuleLoadStates(); ResetModuleLoadStates();
var builder = AppBuilder.Configure<App>() var builder = AppBuilder.Configure<App>()
.IgnoreSetupCheck()
.UseWindowingSubsystem(() => { }) .UseWindowingSubsystem(() => { })
.UseRenderingSubsystem(() => { }, "TBD"); .UseRenderingSubsystem(() => { }, "TBD");
builder.UseAvaloniaModules().SetupWithoutStarting(); builder.UseAvaloniaModules().SetupWithoutStarting();

Loading…
Cancel
Save