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);
                }
        }
Beispiel #2
0
        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;
     }
 }
Beispiel #4
0
        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);
                }
        }
Beispiel #5
0
        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);
                }
        }
Beispiel #7
0
        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(); }
 }