Max Katz 3 vuotta sitten
vanhempi
sitoutus
2fdba46f0c

+ 13 - 1
tests/Avalonia.ReactiveUI.UnitTests/AutoSuspendHelperTest.cs

@@ -7,6 +7,7 @@ using System.Reactive;
 using System.Reactive.Subjects;
 using System.Reactive.Linq;
 using System.Collections.Generic;
+using System.IO;
 using System.Runtime.Serialization;
 using System.Threading;
 using Avalonia.Controls.ApplicationLifetimes;
@@ -17,6 +18,7 @@ using Avalonia.UnitTests;
 using Avalonia.Markup.Xaml;
 using Avalonia.ReactiveUI;
 using Avalonia;
+using Avalonia.Threading;
 using ReactiveUI;
 using DynamicData;
 using Xunit;
@@ -93,13 +95,23 @@ namespace Avalonia.ReactiveUI.UnitTests
                 var suspension = new AutoSuspendHelper(application.ApplicationLifetime);
                 RxApp.SuspensionHost.CreateNewAppState = () => new AppState { Example = "Foo" };
                 RxApp.SuspensionHost.ShouldPersistState.Subscribe(_ => shouldPersistReceived = true);
-                RxApp.SuspensionHost.SetupDefaultSuspendResume(new DummySuspensionDriver());
+                RxApp.SuspensionHost.SetupDefaultSuspendResume(new FakeSuspensionDriver());
                 suspension.OnFrameworkInitializationCompleted();
 
                 lifetime.Shutdown();
+                
                 Assert.True(shouldPersistReceived);
                 Assert.Equal("Foo", RxApp.SuspensionHost.GetAppState<AppState>().Example);
             }
         }
+
+        private class FakeSuspensionDriver : ISuspensionDriver
+        {
+            public IObservable<object> LoadState() => Observable.Empty<object>();
+
+            public IObservable<Unit> SaveState(object state) => Observable.Empty<Unit>();
+
+            public IObservable<Unit> InvalidateState() => Observable.Empty<Unit>();
+        }
     }
 }

+ 11 - 0
tests/Avalonia.ReactiveUI.UnitTests/AvaloniaActivationForViewFetcherTest.cs

@@ -12,6 +12,7 @@ using Xunit;
 using Splat;
 using Avalonia.Markup.Xaml;
 using Avalonia.ReactiveUI;
+using Avalonia.Threading;
 
 namespace Avalonia.ReactiveUI.UnitTests
 {
@@ -109,10 +110,12 @@ namespace Avalonia.ReactiveUI.UnitTests
 
             var fakeRenderedDecorator = new TestRoot();
             fakeRenderedDecorator.Child = userControl;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.True(activated[0]);
             Assert.Equal(1, activated.Count);
 
             fakeRenderedDecorator.Child = null;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.True(activated[0]);
             Assert.False(activated[1]);
             Assert.Equal(2, activated.Count);
@@ -139,9 +142,11 @@ namespace Avalonia.ReactiveUI.UnitTests
 
             var fakeRenderedDecorator = new TestRoot();
             fakeRenderedDecorator.Child = userControl;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.True(userControl.Active);
 
             fakeRenderedDecorator.Child = null;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.False(userControl.Active);
         }
 
@@ -154,9 +159,11 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Assert.False(window.Active);
 
                 window.Show();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.True(window.Active);
 
                 window.Close();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.False(window.Active);
             }
         }
@@ -171,9 +178,11 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Assert.False(viewModel.IsActivated);
 
                 window.Show();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.True(viewModel.IsActivated);
 
                 window.Close();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.False(viewModel.IsActivated);
             }
         }
@@ -187,9 +196,11 @@ namespace Avalonia.ReactiveUI.UnitTests
             Assert.False(viewModel.IsActivated);
 
             root.Child = control;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.True(viewModel.IsActivated);
 
             root.Child = null;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.False(viewModel.IsActivated);
         }
     }

+ 5 - 0
tests/Avalonia.ReactiveUI.UnitTests/ReactiveUserControlTest.cs

@@ -1,5 +1,6 @@
 using System.Reactive.Disposables;
 using Avalonia.Controls;
+using Avalonia.Threading;
 using Avalonia.UnitTests;
 using ReactiveUI;
 using Splat;
@@ -69,12 +70,14 @@ namespace Avalonia.ReactiveUI.UnitTests
             Assert.False(view.ViewModel.IsActive);
 
             root.Child = view;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
             Assert.NotNull(view.ViewModel);
             Assert.NotNull(view.DataContext);
             Assert.True(view.ViewModel.IsActive);
 
             root.Child = null;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
             Assert.NotNull(view.ViewModel);
             Assert.NotNull(view.DataContext);
@@ -90,12 +93,14 @@ namespace Avalonia.ReactiveUI.UnitTests
             Assert.False(view.ViewModel.IsActive);
 
             root.Child = view;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
             Assert.NotNull(view.ViewModel);
             Assert.NotNull(view.DataContext);
             Assert.True(view.ViewModel.IsActive);
 
             root.Child = null;
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
             Assert.NotNull(view.ViewModel);
             Assert.NotNull(view.DataContext);

+ 5 - 0
tests/Avalonia.ReactiveUI.UnitTests/ReactiveWindowTest.cs

@@ -1,4 +1,5 @@
 using System.Reactive.Disposables;
+using Avalonia.Threading;
 using Avalonia.UnitTests;
 using ReactiveUI;
 using Splat;
@@ -72,12 +73,14 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Assert.False(view.ViewModel.IsActive);
 
                 view.Show();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
                 Assert.NotNull(view.ViewModel);
                 Assert.NotNull(view.DataContext);
                 Assert.True(view.ViewModel.IsActive);
 
                 view.Close();
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
 
                 Assert.NotNull(view.ViewModel);
                 Assert.NotNull(view.DataContext);
@@ -96,12 +99,14 @@ namespace Avalonia.ReactiveUI.UnitTests
 
                 view.Show();
 
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.NotNull(view.ViewModel);
                 Assert.NotNull(view.DataContext);
                 Assert.True(view.ViewModel.IsActive);
 
                 view.Close();
 
+                Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
                 Assert.NotNull(view.ViewModel);
                 Assert.NotNull(view.DataContext);
                 Assert.False(view.ViewModel.IsActive);

+ 4 - 0
tests/Avalonia.ReactiveUI.UnitTests/RoutedViewHostTest.cs

@@ -15,6 +15,7 @@ using System.ComponentModel;
 using System.Threading.Tasks;
 using System.Reactive;
 using Avalonia.ReactiveUI;
+using Avalonia.Threading;
 
 namespace Avalonia.ReactiveUI.UnitTests
 {
@@ -75,6 +76,7 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Child = host
             };
             
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.NotNull(host.Content);
             Assert.IsType<TextBlock>(host.Content);
             Assert.Equal(defaultContent, host.Content);
@@ -126,6 +128,7 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Child = host
             };
 
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.NotNull(host.Content);
             Assert.IsType<TextBlock>(host.Content);
             Assert.Equal(defaultContent, host.Content);
@@ -191,6 +194,7 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Child = host
             };
 
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.NotNull(host.Content);
             Assert.Equal(defaultContent, host.Content);
 

+ 3 - 0
tests/Avalonia.ReactiveUI.UnitTests/ViewModelViewHostTest.cs

@@ -1,4 +1,5 @@
 using Avalonia.Controls;
+using Avalonia.Threading;
 using Avalonia.UnitTests;
 using ReactiveUI;
 using Splat;
@@ -46,6 +47,7 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Child = host 
             };
             
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.NotNull(host.Content);
             Assert.Equal(typeof(TextBlock), host.Content.GetType());
             Assert.Equal(defaultContent, host.Content);
@@ -91,6 +93,7 @@ namespace Avalonia.ReactiveUI.UnitTests
                 Child = host
             };
 
+            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
             Assert.NotNull(host.Content);
             Assert.Equal(typeof(TextBlock), host.Content.GetType());
             Assert.Equal(defaultContent, host.Content);