From 5156725d6d690082f1ff2b1a567124a1e0e284e3 Mon Sep 17 00:00:00 2001 From: James Crutchley Date: Tue, 4 Feb 2025 05:18:51 -0800 Subject: [PATCH 1/6] Fix options not working for Core --- src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs b/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs index 0b38801ce5..d421292fce 100644 --- a/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs +++ b/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs @@ -24,12 +24,12 @@ public static class AppBuilderExtensions /// initialized for public static MauiAppBuilder UseMauiCommunityToolkit(this MauiAppBuilder builder, Action? options = null) { - // Pass `null` because `options?.Invoke()` will set options on both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core` - builder.UseMauiCommunityToolkitCore(null); - // Invokes options for both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core` options?.Invoke(new Options(builder)); + // Pass `null` because `options?.Invoke()` will set options on both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core` + builder.UseMauiCommunityToolkitCore(null); + builder.Services.AddSingleton(); builder.ConfigureMauiHandlers(static h => From 762e4eec34a2c91f75f370bc1799cfc70747536a Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+TheCodeTraveler@users.noreply.github.com> Date: Tue, 4 Feb 2025 09:35:32 -0800 Subject: [PATCH 2/6] Update AppBuilderExtensions.shared.cs --- src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs b/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs index d421292fce..6285403d90 100644 --- a/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs +++ b/src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs @@ -28,6 +28,7 @@ public static MauiAppBuilder UseMauiCommunityToolkit(this MauiAppBuilder builder options?.Invoke(new Options(builder)); // Pass `null` because `options?.Invoke()` will set options on both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core` + // Be sure to call `.UseMauiCommunityToolkitCore(null)` after `options.Invoke(new Options(builder))` to ensure `CommunityToolkit.Maui.Core.Options` have already been set builder.UseMauiCommunityToolkitCore(null); builder.Services.AddSingleton(); From ca995789edf839bbaa52f24a5861cd74feb359cb Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+TheCodeTraveler@users.noreply.github.com> Date: Tue, 4 Feb 2025 09:53:15 -0800 Subject: [PATCH 3/6] Add Unit Tests --- .../Extensions/AppBuilderExtensionsTests.cs | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs diff --git a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs new file mode 100644 index 0000000000..6304ba4db1 --- /dev/null +++ b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs @@ -0,0 +1,60 @@ +using CommunityToolkit.Maui.Core; +using Xunit; + +namespace CommunityToolkit.Maui.UnitTests.Extensions; + +public class AppBuilderExtensionsTests : BaseTest +{ + [Fact] + public void ConfirmOptionsDefaultValue() + { + // Assert + Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + Assert.False(Options.ShouldEnableSnackbarOnWindows); + Assert.False(Options.ShouldSuppressExceptionsInAnimations); + Assert.False(Options.ShouldSuppressExceptionsInBehaviors); + Assert.False(Options.ShouldSuppressExceptionsInConverters); + } + + [Fact] + public void UseMauiCommunityToolkit_ShouldRegisterServices() + { + // Arrange + var builder = MauiApp.CreateBuilder(); + + // Act +#pragma warning disable CA1416 + builder.UseMauiCommunityToolkit(); +#pragma warning restore CA1416 + + // Assert + var serviceProvider = builder.Services.BuildServiceProvider(); + Assert.NotNull(serviceProvider.GetService()); + } + + [Fact] + public void UseMauiCommunityToolkit_ShouldAssignValues() + { + // Arrange + var builder = MauiApp.CreateBuilder(); + + // Act +#pragma warning disable CA1416 + builder.UseMauiCommunityToolkit(options => + { + options.SetShouldEnableSnackbarOnWindows(!Options.ShouldEnableSnackbarOnWindows); + options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + options.SetShouldSuppressExceptionsInAnimations(!Options.ShouldSuppressExceptionsInAnimations); + options.SetShouldSuppressExceptionsInBehaviors(!Options.ShouldSuppressExceptionsInBehaviors); + options.SetShouldSuppressExceptionsInConverters(!Options.ShouldSuppressExceptionsInConverters); + }); +#pragma warning restore CA1416 + + // Assert + Assert.False(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + Assert.True(Options.ShouldEnableSnackbarOnWindows); + Assert.True(Options.ShouldSuppressExceptionsInAnimations); + Assert.True(Options.ShouldSuppressExceptionsInBehaviors); + Assert.True(Options.ShouldSuppressExceptionsInConverters); + } +} \ No newline at end of file From 5808042518afcc32a3fa2dbe3dc3f910212f9848 Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:01:49 -0800 Subject: [PATCH 4/6] Restore default Options after each test --- src/CommunityToolkit.Maui.UnitTests/BaseTest.cs | 3 +++ .../Extensions/AppBuilderExtensionsTests.cs | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/CommunityToolkit.Maui.UnitTests/BaseTest.cs b/src/CommunityToolkit.Maui.UnitTests/BaseTest.cs index 1ef71b7580..535918ea92 100644 --- a/src/CommunityToolkit.Maui.UnitTests/BaseTest.cs +++ b/src/CommunityToolkit.Maui.UnitTests/BaseTest.cs @@ -57,7 +57,10 @@ protected virtual void Dispose(bool isDisposing) DeviceDisplay.SetCurrent(null); DispatcherProvider.SetCurrent(null); + // Restore default options var options = new Options(); + options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(true); + options.SetShouldEnableSnackbarOnWindows(false); options.SetShouldSuppressExceptionsInAnimations(false); options.SetShouldSuppressExceptionsInBehaviors(false); options.SetShouldSuppressExceptionsInConverters(false); diff --git a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs index 6304ba4db1..d01d112954 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs @@ -8,8 +8,8 @@ public class AppBuilderExtensionsTests : BaseTest [Fact] public void ConfirmOptionsDefaultValue() { - // Assert - Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + // Assert + Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); Assert.False(Options.ShouldEnableSnackbarOnWindows); Assert.False(Options.ShouldSuppressExceptionsInAnimations); Assert.False(Options.ShouldSuppressExceptionsInBehaviors); From c06fe8ca58335f3d4738b6e7ce53544cb01f7b56 Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:33:05 -0800 Subject: [PATCH 5/6] Add `event EventHandler ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted` to allowunit tests confirm that we initialized the AndroidDialogFragmentService --- .../AppBuilderExtensions.shared.cs | 16 +++- .../Extensions/AppBuilderExtensionsTests.cs | 89 +++++++++++++++---- 2 files changed, 88 insertions(+), 17 deletions(-) diff --git a/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs b/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs index be5b66415c..179613b4df 100644 --- a/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs +++ b/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs @@ -17,6 +17,15 @@ namespace CommunityToolkit.Maui.Core; [SupportedOSPlatform("Tizen6.5")] public static class AppBuilderExtensions { + static readonly WeakEventManager weakEventManager = new(); + + // This is an internal event used by Unit Tests to confirm when the code enters the `if (Options.ShouldUseStatusBarBehaviorOnAndroidModalPage)` block + internal static event EventHandler ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted + { + add => weakEventManager.AddEventHandler(value); + remove => weakEventManager.RemoveEventHandler(value); + } + /// /// Initializes the .NET MAUI Community Toolkit Core Library /// @@ -27,9 +36,10 @@ public static MauiAppBuilder UseMauiCommunityToolkitCore(this MauiAppBuilder bui { options?.Invoke(new Options()); -#if ANDROID if (Options.ShouldUseStatusBarBehaviorOnAndroidModalPage) { + +#if ANDROID builder.Services.AddSingleton(); builder.ConfigureLifecycleEvents(static lifecycleBuilder => @@ -58,9 +68,11 @@ public static MauiAppBuilder UseMauiCommunityToolkitCore(this MauiAppBuilder bui }); }); }); - } #endif + weakEventManager.HandleEvent(null, EventArgs.Empty, nameof(ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted)); + } + return builder; } } \ No newline at end of file diff --git a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs index d01d112954..4c9a6e977f 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs @@ -3,52 +3,101 @@ namespace CommunityToolkit.Maui.UnitTests.Extensions; +#pragma warning disable CA1416 public class AppBuilderExtensionsTests : BaseTest { [Fact] public void ConfirmOptionsDefaultValue() { + // Arrange + bool isAndroidDialogFragmentServiceInitialized = false; + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + // Assert Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); Assert.False(Options.ShouldEnableSnackbarOnWindows); Assert.False(Options.ShouldSuppressExceptionsInAnimations); Assert.False(Options.ShouldSuppressExceptionsInBehaviors); Assert.False(Options.ShouldSuppressExceptionsInConverters); - } - - [Fact] + Assert.False(isAndroidDialogFragmentServiceInitialized); + + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + + void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? sender, EventArgs e) + { + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + isAndroidDialogFragmentServiceInitialized = true; + } + } + + [Fact] + public void ConfirmDefaultValueRemainWhenOptionsNull() + { + // Arrange + var builder = MauiApp.CreateBuilder(); + bool isAndroidDialogFragmentServiceInitialized = false; + + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + + // Act + builder.UseMauiCommunityToolkit(null); + + // Assert + Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + Assert.False(Options.ShouldEnableSnackbarOnWindows); + Assert.False(Options.ShouldSuppressExceptionsInAnimations); + Assert.False(Options.ShouldSuppressExceptionsInBehaviors); + Assert.False(Options.ShouldSuppressExceptionsInConverters); + Assert.True(isAndroidDialogFragmentServiceInitialized); + + void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? sender, EventArgs e) + { + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + isAndroidDialogFragmentServiceInitialized = true; + } + } + + + [Fact] public void UseMauiCommunityToolkit_ShouldRegisterServices() { // Arrange var builder = MauiApp.CreateBuilder(); + bool isAndroidDialogFragmentServiceInitialized = false; + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; - // Act -#pragma warning disable CA1416 - builder.UseMauiCommunityToolkit(); -#pragma warning restore CA1416 + // Act + builder.UseMauiCommunityToolkit(); // Assert var serviceProvider = builder.Services.BuildServiceProvider(); Assert.NotNull(serviceProvider.GetService()); - } + Assert.True(isAndroidDialogFragmentServiceInitialized); + + void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? sender, EventArgs e) + { + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + isAndroidDialogFragmentServiceInitialized = true; + } + } [Fact] public void UseMauiCommunityToolkit_ShouldAssignValues() { // Arrange var builder = MauiApp.CreateBuilder(); + bool isAndroidDialogFragmentServiceInitialized = false; + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; - // Act -#pragma warning disable CA1416 - builder.UseMauiCommunityToolkit(options => + // Act + builder.UseMauiCommunityToolkit(options => { options.SetShouldEnableSnackbarOnWindows(!Options.ShouldEnableSnackbarOnWindows); - options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); options.SetShouldSuppressExceptionsInAnimations(!Options.ShouldSuppressExceptionsInAnimations); options.SetShouldSuppressExceptionsInBehaviors(!Options.ShouldSuppressExceptionsInBehaviors); options.SetShouldSuppressExceptionsInConverters(!Options.ShouldSuppressExceptionsInConverters); + options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); }); -#pragma warning restore CA1416 // Assert Assert.False(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); @@ -56,5 +105,15 @@ public void UseMauiCommunityToolkit_ShouldAssignValues() Assert.True(Options.ShouldSuppressExceptionsInAnimations); Assert.True(Options.ShouldSuppressExceptionsInBehaviors); Assert.True(Options.ShouldSuppressExceptionsInConverters); - } -} \ No newline at end of file + Assert.False(isAndroidDialogFragmentServiceInitialized); + + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + + void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? sender, EventArgs e) + { + Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; + isAndroidDialogFragmentServiceInitialized = true; + } + } +} +#pragma warning restore CA1416 \ No newline at end of file From aaf2a405f107fc5fe563620e1511d3f10a9317f0 Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:34:56 -0800 Subject: [PATCH 6/6] `dotnet format` --- .../AppBuilderExtensions.shared.cs | 4 +- .../Services/DialogFragmentService.android.cs | 2 +- .../Extensions/AppBuilderExtensionsTests.cs | 68 +++++++++---------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs b/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs index 179613b4df..92035c1b02 100644 --- a/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs +++ b/src/CommunityToolkit.Maui.Core/AppBuilderExtensions.shared.cs @@ -36,8 +36,8 @@ public static MauiAppBuilder UseMauiCommunityToolkitCore(this MauiAppBuilder bui { options?.Invoke(new Options()); - if (Options.ShouldUseStatusBarBehaviorOnAndroidModalPage) - { + if (Options.ShouldUseStatusBarBehaviorOnAndroidModalPage) + { #if ANDROID builder.Services.AddSingleton(); diff --git a/src/CommunityToolkit.Maui.Core/Services/DialogFragmentService.android.cs b/src/CommunityToolkit.Maui.Core/Services/DialogFragmentService.android.cs index 0aa2635f01..27550e0220 100644 --- a/src/CommunityToolkit.Maui.Core/Services/DialogFragmentService.android.cs +++ b/src/CommunityToolkit.Maui.Core/Services/DialogFragmentService.android.cs @@ -94,7 +94,7 @@ static bool TryConvertToDialogFragment(Fragment fragment, [NotNullWhen(true)] ou dialogFragment = dialog; return true; } - + static void HandleStatusBarColor(DialogFragment dialogFragment, AppCompatActivity activity) { if (activity.Window is null) diff --git a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs index 4c9a6e977f..4c5a97eeba 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Extensions/AppBuilderExtensionsTests.cs @@ -6,19 +6,19 @@ namespace CommunityToolkit.Maui.UnitTests.Extensions; #pragma warning disable CA1416 public class AppBuilderExtensionsTests : BaseTest { - [Fact] - public void ConfirmOptionsDefaultValue() - { + [Fact] + public void ConfirmOptionsDefaultValue() + { // Arrange bool isAndroidDialogFragmentServiceInitialized = false; Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; // Assert Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); - Assert.False(Options.ShouldEnableSnackbarOnWindows); - Assert.False(Options.ShouldSuppressExceptionsInAnimations); - Assert.False(Options.ShouldSuppressExceptionsInBehaviors); - Assert.False(Options.ShouldSuppressExceptionsInConverters); + Assert.False(Options.ShouldEnableSnackbarOnWindows); + Assert.False(Options.ShouldSuppressExceptionsInAnimations); + Assert.False(Options.ShouldSuppressExceptionsInBehaviors); + Assert.False(Options.ShouldSuppressExceptionsInConverters); Assert.False(isAndroidDialogFragmentServiceInitialized); Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; @@ -59,19 +59,19 @@ void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? s [Fact] - public void UseMauiCommunityToolkit_ShouldRegisterServices() - { - // Arrange - var builder = MauiApp.CreateBuilder(); + public void UseMauiCommunityToolkit_ShouldRegisterServices() + { + // Arrange + var builder = MauiApp.CreateBuilder(); bool isAndroidDialogFragmentServiceInitialized = false; Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; // Act builder.UseMauiCommunityToolkit(); - // Assert - var serviceProvider = builder.Services.BuildServiceProvider(); - Assert.NotNull(serviceProvider.GetService()); + // Assert + var serviceProvider = builder.Services.BuildServiceProvider(); + Assert.NotNull(serviceProvider.GetService()); Assert.True(isAndroidDialogFragmentServiceInitialized); void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? sender, EventArgs e) @@ -80,31 +80,31 @@ void HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted(object? s isAndroidDialogFragmentServiceInitialized = true; } } - - [Fact] - public void UseMauiCommunityToolkit_ShouldAssignValues() - { - // Arrange - var builder = MauiApp.CreateBuilder(); + + [Fact] + public void UseMauiCommunityToolkit_ShouldAssignValues() + { + // Arrange + var builder = MauiApp.CreateBuilder(); bool isAndroidDialogFragmentServiceInitialized = false; Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted += HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted; // Act builder.UseMauiCommunityToolkit(options => - { - options.SetShouldEnableSnackbarOnWindows(!Options.ShouldEnableSnackbarOnWindows); - options.SetShouldSuppressExceptionsInAnimations(!Options.ShouldSuppressExceptionsInAnimations); - options.SetShouldSuppressExceptionsInBehaviors(!Options.ShouldSuppressExceptionsInBehaviors); - options.SetShouldSuppressExceptionsInConverters(!Options.ShouldSuppressExceptionsInConverters); - options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); - }); - - // Assert - Assert.False(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); - Assert.True(Options.ShouldEnableSnackbarOnWindows); - Assert.True(Options.ShouldSuppressExceptionsInAnimations); - Assert.True(Options.ShouldSuppressExceptionsInBehaviors); - Assert.True(Options.ShouldSuppressExceptionsInConverters); + { + options.SetShouldEnableSnackbarOnWindows(!Options.ShouldEnableSnackbarOnWindows); + options.SetShouldSuppressExceptionsInAnimations(!Options.ShouldSuppressExceptionsInAnimations); + options.SetShouldSuppressExceptionsInBehaviors(!Options.ShouldSuppressExceptionsInBehaviors); + options.SetShouldSuppressExceptionsInConverters(!Options.ShouldSuppressExceptionsInConverters); + options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + }); + + // Assert + Assert.False(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage); + Assert.True(Options.ShouldEnableSnackbarOnWindows); + Assert.True(Options.ShouldSuppressExceptionsInAnimations); + Assert.True(Options.ShouldSuppressExceptionsInBehaviors); + Assert.True(Options.ShouldSuppressExceptionsInConverters); Assert.False(isAndroidDialogFragmentServiceInitialized); Core.AppBuilderExtensions.ShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted -= HandleShouldUseStatusBarBehaviorOnAndroidModalPageOptionCompleted;