1+ // Copyright (c) 2025 .NET Foundation and Contributors. All rights reserved.
2+ // Licensed to the .NET Foundation under one or more agreements.
3+ // The .NET Foundation licenses this file to you under the MIT license.
4+ // See the LICENSE file in the project root for full license information.
5+
6+ using System . Collections . Generic ;
7+ using Microsoft . Reactive . Testing ;
8+ using NUnit . Framework ;
9+
10+ namespace ReactiveUI . Testing . Tests ;
11+
12+ /// <summary>
13+ /// Tests for <see cref="SchedulerExtensions"/>.
14+ /// </summary>
15+ [ TestFixture ]
16+ public sealed class SchedulerExtensionTests
17+ {
18+ /// <summary>
19+ /// Tests that WithScheduler sets both RxApp and RxSchedulers schedulers.
20+ /// </summary>
21+ [ Test ]
22+ public void WithScheduler_ShouldSetBothRxAppAndRxSchedulersSchedulers ( )
23+ {
24+ var testScheduler = new TestScheduler ( ) ;
25+ var originalMainThread = RxApp . MainThreadScheduler ;
26+ var originalTaskpool = RxApp . TaskpoolScheduler ;
27+ var originalRxSchedulersMain = RxSchedulers . MainThreadScheduler ;
28+ var originalRxSchedulersTask = RxSchedulers . TaskpoolScheduler ;
29+
30+ using ( SchedulerExtensions . WithScheduler ( testScheduler ) )
31+ {
32+ // Verify schedulers
33+ using ( Assert . EnterMultipleScope ( ) )
34+ {
35+ // Verify RxApp schedulers are set
36+ Assert . That ( RxApp . MainThreadScheduler , Is . EqualTo ( testScheduler ) ) ;
37+ Assert . That ( RxApp . TaskpoolScheduler , Is . EqualTo ( testScheduler ) ) ;
38+
39+ // Verify RxSchedulers are set
40+ Assert . That ( RxSchedulers . MainThreadScheduler , Is . EqualTo ( testScheduler ) ) ;
41+ Assert . That ( RxSchedulers . TaskpoolScheduler , Is . EqualTo ( testScheduler ) ) ;
42+ }
43+ }
44+
45+ // Verify schedulers are restored after disposal
46+ using ( Assert . EnterMultipleScope ( ) )
47+ {
48+ Assert . That ( RxApp . MainThreadScheduler , Is . EqualTo ( originalMainThread ) ) ;
49+ Assert . That ( RxApp . TaskpoolScheduler , Is . EqualTo ( originalTaskpool ) ) ;
50+ Assert . That ( RxSchedulers . MainThreadScheduler , Is . EqualTo ( originalRxSchedulersMain ) ) ;
51+ Assert . That ( RxSchedulers . TaskpoolScheduler , Is . EqualTo ( originalRxSchedulersTask ) ) ;
52+ }
53+ }
54+ }
0 commit comments