public void Shutdown_NotCancellable_By_Preventing_Window_Close() { using (UnitTestApplication.Start(TestServices.StyledWindow)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime()) { var hasExit = false; lifetime.Exit += (_, _) => hasExit = true; var windowA = new Window(); windowA.Show(); var windowB = new Window(); windowB.Show(); var raised = 0; windowA.Closing += (_, e) => { e.Cancel = true; ++raised; }; lifetime.Shutdown(); Assert.Equal(1, raised); Assert.True(hasExit); } }
public void Should_Only_Exit_On_Explicit_Exit() { using (UnitTestApplication.Start(TestServices.StyledWindow)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime()) { lifetime.ShutdownMode = ShutdownMode.OnExplicitShutdown; var hasExit = false; lifetime.Exit += (s, e) => hasExit = true; var windowA = new Window(); windowA.Show(); var windowB = new Window(); windowB.Show(); windowA.Close(); Assert.False(hasExit); windowB.Close(); Assert.False(hasExit); lifetime.Shutdown(); Assert.True(hasExit); } }
public async Task StopAsync(CancellationToken cancellationToken) { Dispatcher.UIThread.Post(() => _classicDesktopStyleApplicationLifetime.Shutdown()); if (_uiThreadTask != null) { await _uiThreadTask; } }
public void Should_Set_ExitCode_After_Shutdown() { using (UnitTestApplication.Start(TestServices.MockThreadingInterface)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime()) { lifetime.Shutdown(1337); var exitCode = lifetime.Start(Array.Empty <string>()); Assert.Equal(1337, exitCode); } }
public void Should_Close_All_Remaining_Open_Windows_After_Explicit_Exit_Call() { using (UnitTestApplication.Start(TestServices.StyledWindow)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime()) { var windows = new List <Window> { new Window(), new Window(), new Window(), new Window() }; foreach (var window in windows) { window.Show(); } Assert.Equal(4, lifetime.Windows.Count); lifetime.Shutdown(); Assert.Empty(lifetime.Windows); } }
public void Shutdown_Doesnt_Raise_Shutdown_Requested() { using (UnitTestApplication.Start(TestServices.StyledWindow)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime()) { var hasExit = false; lifetime.Exit += (_, _) => hasExit = true; var raised = 0; lifetime.ShutdownRequested += (_, _) => { ++raised; }; lifetime.Shutdown(); Assert.Equal(0, raised); Assert.True(hasExit); } }
public void ShouldPersistState_Should_Fire_On_App_Exit_When_SuspensionDriver_Is_Initialized() { using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) using (var lifetime = new ClassicDesktopStyleApplicationLifetime(Application.Current)) { var shouldPersistReceived = false; var application = AvaloniaLocator.Current.GetService <Application>(); application.ApplicationLifetime = lifetime; // Initialize ReactiveUI Suspension as in real-world scenario. var suspension = new AutoSuspendHelper(application.ApplicationLifetime); RxApp.SuspensionHost.CreateNewAppState = () => new AppState { Example = "Foo" }; RxApp.SuspensionHost.ShouldPersistState.Subscribe(_ => shouldPersistReceived = true); RxApp.SuspensionHost.SetupDefaultSuspendResume(new DummySuspensionDriver()); suspension.OnFrameworkInitializationCompleted(); lifetime.Shutdown(); Assert.True(shouldPersistReceived); Assert.Equal("Foo", RxApp.SuspensionHost.GetAppState <AppState>().Example); } }
public void Dispose() { try { lifetime.Shutdown(); } finally { lifetime.Dispose(); } }