33// The .NET Foundation licenses this file to you under the MIT license.
44// See the LICENSE file in the project root for full license information.
55
6- using DynamicData ;
7-
86using ReactiveUI . TestGuiMocks . CommonGuiMocks . Mocks ;
97using ReactiveUI . Tests . Utilities . Schedulers ;
108using ReactiveUI . Tests . Wpf ;
@@ -61,7 +59,8 @@ public async Task NavigationPushPopTest()
6159 public async Task CurrentViewModelObservableIsAccurate ( )
6260 {
6361 var fixture = new RoutingState ( ImmediateScheduler . Instance ) ;
64- fixture . CurrentViewModel . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var output ) . Subscribe ( ) ;
62+ var output = new List < IRoutableViewModel ? > ( ) ;
63+ fixture . CurrentViewModel . Subscribe ( vm => output . Add ( vm ) ) ;
6564
6665 await Assert . That ( output ) . Count ( ) . IsEqualTo ( 1 ) ;
6766
@@ -137,10 +136,9 @@ public async Task CurrentViewModelObservableIsAccurate()
137136 public async Task CurrentViewModelObservableIsAccurateViaWhenAnyObservable ( )
138137 {
139138 var fixture = new TestScreen ( ) ;
139+ var output = new List < IRoutableViewModel ? > ( ) ;
140140 fixture . WhenAnyObservable ( static x => x . Router ! . CurrentViewModel )
141- . ToObservableChangeSet ( ImmediateScheduler . Instance )
142- . Bind ( out var output )
143- . Subscribe ( ) ;
141+ . Subscribe ( vm => output . Add ( vm ) ) ;
144142
145143 fixture . Router = new RoutingState ( ImmediateScheduler . Instance ) ;
146144
@@ -199,26 +197,21 @@ public async Task SchedulerIsUsedForAllCommands()
199197 var scheduler = TestContext . Current ! . GetScheduler ( ) ;
200198 var fixture = new RoutingState ( scheduler ) ;
201199
202- fixture
203- . Navigate
204- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigate ) . Subscribe ( ) ;
205- fixture
206- . NavigateBack
207- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigateBack ) . Subscribe ( ) ;
208- fixture
209- . NavigateAndReset
210- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigateAndReset ) . Subscribe ( ) ;
211-
200+ // Navigate should execute synchronously on ImmediateScheduler
212201 fixture . Navigate . Execute ( new TestViewModel ( ) ) . Subscribe ( ) ;
202+ await Assert . That ( fixture . NavigationStack ) . Count ( ) . IsEqualTo ( 1 ) ;
213203
214- // ImmediateScheduler executes synchronously
215- await Assert . That ( navigate ) . IsNotEmpty ( ) ;
204+ // Navigate again
205+ fixture . Navigate . Execute ( new TestViewModel ( ) ) . Subscribe ( ) ;
206+ await Assert . That ( fixture . NavigationStack ) . Count ( ) . IsEqualTo ( 2 ) ;
216207
208+ // NavigateBack should execute synchronously on ImmediateScheduler
217209 fixture . NavigateBack . Execute ( ) . Subscribe ( ) ;
218- await Assert . That ( navigateBack ) . IsNotEmpty ( ) ;
210+ await Assert . That ( fixture . NavigationStack ) . Count ( ) . IsEqualTo ( 1 ) ;
219211
212+ // NavigateAndReset should execute synchronously on ImmediateScheduler
220213 fixture . NavigateAndReset . Execute ( new TestViewModel ( ) ) . Subscribe ( ) ;
221- await Assert . That ( navigateAndReset ) . IsNotEmpty ( ) ;
214+ await Assert . That ( fixture . NavigationStack ) . Count ( ) . IsEqualTo ( 1 ) ;
222215 }
223216
224217 [ Test ]
@@ -228,16 +221,6 @@ public async Task RoutingStateThrows()
228221 var scheduler = TestContext . Current ! . GetScheduler ( ) ;
229222 var fixture = new RoutingState ( scheduler ) ;
230223
231- fixture
232- . Navigate
233- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigate ) . Subscribe ( ) ;
234- fixture
235- . NavigateBack
236- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigateBack ) . Subscribe ( ) ;
237- fixture
238- . NavigateAndReset
239- . ToObservableChangeSet ( ImmediateScheduler . Instance ) . Bind ( out var navigateAndReset ) . Subscribe ( ) ;
240-
241224 Exception ? thrownException = null ;
242225
243226 // Subscribe to ThrownExceptions to prevent global error handler from being triggered
0 commit comments