瀏覽代碼

Unit test AutoSuspendHelper

artyom 6 年之前
父節點
當前提交
6c16ac4803
共有 1 個文件被更改,包括 60 次插入0 次删除
  1. 60 0
      tests/Avalonia.ReactiveUI.UnitTests/AutoSuspendHelperTest.cs

+ 60 - 0
tests/Avalonia.ReactiveUI.UnitTests/AutoSuspendHelperTest.cs

@@ -0,0 +1,60 @@
+// Copyright (c) The Avalonia Project. All rights reserved.
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
+
+using System;
+using System.Reactive.Concurrency;
+using System.Reactive.Disposables;
+using Avalonia.Controls;
+using Avalonia.Rendering;
+using Avalonia.Platform;
+using Avalonia.UnitTests;
+using Avalonia;
+using ReactiveUI;
+using DynamicData;
+using Xunit;
+using Splat;
+using Avalonia.Markup.Xaml;
+using System.ComponentModel;
+using System.Threading.Tasks;
+using System.Reactive;
+using Avalonia.ReactiveUI;
+using System.Reactive.Subjects;
+using System.Reactive.Linq;
+using System.Collections.Generic;
+
+namespace Avalonia.ReactiveUI.UnitTests
+{
+    public class AutoSuspendHelperTest
+    {
+        [Fact]
+        public void AutoSuspendHelper_Should_Immediately_Fire_IsLaunchingNew() 
+        {
+            using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) 
+            {
+                var isLaunchingReceived = false;
+                var application = AvaloniaLocator.Current.GetService<Application>();
+                var suspension = new AutoSuspendHelper(application);
+
+                RxApp.SuspensionHost.IsLaunchingNew.Subscribe(_ => isLaunchingReceived = true);
+                Assert.True(isLaunchingReceived);
+            }
+        }
+
+        [Fact]
+        public void ShouldPersistState_Should_Fire_On_App_Exit_When_SuspensionDriver_Is_Initialized() 
+        {
+            using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) 
+            {
+                var shouldPersistReceived = false;
+                var application = AvaloniaLocator.Current.GetService<Application>();
+                var suspension = new AutoSuspendHelper(application);
+
+                RxApp.SuspensionHost.ShouldPersistState.Subscribe(_ => shouldPersistReceived = true);
+                RxApp.SuspensionHost.SetupDefaultSuspendResume(new DummySuspensionDriver());
+
+                application.Shutdown();
+                Assert.True(shouldPersistReceived);
+            }
+        }
+    }
+}