@@ -8,64 +8,93 @@ namespace Tvl.VisualStudio.MouseFastScroll.IntegrationTests
8
8
using System . Threading . Tasks ;
9
9
using System . Windows ;
10
10
using System . Windows . Threading ;
11
+ using Microsoft . VisualStudio . Shell . Interop ;
11
12
using Microsoft . VisualStudio . Threading ;
12
13
using Tvl . VisualStudio . MouseFastScroll . IntegrationTests . Threading ;
13
14
using Xunit ;
14
15
using _DTE = EnvDTE . _DTE ;
15
16
using DTE = EnvDTE . DTE ;
16
17
using ServiceProvider = Microsoft . VisualStudio . Shell . ServiceProvider ;
17
- using ThreadHelper = Microsoft . VisualStudio . Shell . ThreadHelper ;
18
18
19
19
public class VsFactTest : AbstractIdeIntegrationTest
20
20
{
21
21
[ VsFact ]
22
22
public void TestOpenAndCloseIDE ( )
23
23
{
24
24
Assert . Equal ( "devenv" , Process . GetCurrentProcess ( ) . ProcessName ) ;
25
- var dte = ( DTE ) ServiceProvider . GlobalProvider . GetService ( typeof ( _DTE ) ) ;
25
+ var dte = ( DTE ) ServiceProvider . GetService ( typeof ( _DTE ) ) ;
26
26
Assert . NotNull ( dte ) ;
27
27
}
28
28
29
29
[ VsFact ]
30
30
public void TestRunsOnUIThread ( )
31
31
{
32
- Assert . True ( ThreadHelper . CheckAccess ( ) ) ;
32
+ Assert . True ( Application . Current . Dispatcher . CheckAccess ( ) ) ;
33
33
}
34
34
35
35
[ VsFact ]
36
36
public async Task TestRunsOnUIThreadAsync ( )
37
37
{
38
- Assert . True ( ThreadHelper . CheckAccess ( ) ) ;
38
+ Assert . True ( Application . Current . Dispatcher . CheckAccess ( ) ) ;
39
39
await Task . Yield ( ) ;
40
- Assert . True ( ThreadHelper . CheckAccess ( ) ) ;
40
+ Assert . True ( Application . Current . Dispatcher . CheckAccess ( ) ) ;
41
41
}
42
42
43
43
[ VsFact ]
44
44
public async Task TestYieldsToWorkAsync ( )
45
45
{
46
- Assert . True ( ThreadHelper . CheckAccess ( ) ) ;
46
+ Assert . True ( Application . Current . Dispatcher . CheckAccess ( ) ) ;
47
47
await Task . Factory . StartNew (
48
48
( ) => { } ,
49
49
CancellationToken . None ,
50
50
TaskCreationOptions . None ,
51
51
new SynchronizationContextTaskScheduler ( new DispatcherSynchronizationContext ( Application . Current . Dispatcher ) ) ) ;
52
- Assert . True ( ThreadHelper . CheckAccess ( ) ) ;
52
+ Assert . True ( Application . Current . Dispatcher . CheckAccess ( ) ) ;
53
53
}
54
54
55
55
[ VsFact ]
56
56
public async Task TestJoinableTaskFactoryAsync ( )
57
57
{
58
58
Assert . NotNull ( JoinableTaskContext ) ;
59
59
Assert . NotNull ( JoinableTaskFactory ) ;
60
- Assert . True ( JoinableTaskContext . IsOnMainThread ) ;
60
+ Assert . Equal ( Thread . CurrentThread , JoinableTaskContext . MainThread ) ;
61
61
62
62
await TaskScheduler . Default ;
63
63
64
- Assert . False ( JoinableTaskContext . IsOnMainThread ) ;
64
+ Assert . NotEqual ( Thread . CurrentThread , JoinableTaskContext . MainThread ) ;
65
65
66
66
await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
67
67
68
- Assert . True ( JoinableTaskContext . IsOnMainThread ) ;
68
+ Assert . Equal ( Thread . CurrentThread , JoinableTaskContext . MainThread ) ;
69
+ }
70
+
71
+ #if DEBUG // https://github.com/josetr/VsixTesting/issues/3
72
+ [ VsFact ( Version = "2012" ) ]
73
+ public void TestJoinableTaskFactoryProvidedByTest ( )
74
+ {
75
+ var taskSchedulerServiceObject = ServiceProvider . GetService ( typeof ( SVsTaskSchedulerService ) ) ;
76
+ Assert . NotNull ( taskSchedulerServiceObject ) ;
77
+
78
+ var taskSchedulerService = taskSchedulerServiceObject as IVsTaskSchedulerService ;
79
+ Assert . NotNull ( taskSchedulerService ) ;
80
+
81
+ var taskSchedulerService2 = taskSchedulerServiceObject as IVsTaskSchedulerService2 ;
82
+ Assert . Null ( taskSchedulerService2 ) ;
83
+
84
+ Assert . NotNull ( JoinableTaskContext ) ;
85
+ }
86
+ #endif
87
+
88
+ [ VsFact ( Version = "2013-" ) ]
89
+ public void TestJoinableTaskFactoryObtainedFromEnvironment ( )
90
+ {
91
+ var taskSchedulerServiceObject = ServiceProvider . GetService ( typeof ( SVsTaskSchedulerService ) ) ;
92
+ Assert . NotNull ( taskSchedulerServiceObject ) ;
93
+
94
+ var taskSchedulerService = taskSchedulerServiceObject as IVsTaskSchedulerService2 ;
95
+ Assert . NotNull ( taskSchedulerService ) ;
96
+
97
+ Assert . Same ( JoinableTaskContext , taskSchedulerService . GetAsyncTaskContext ( ) ) ;
69
98
}
70
99
}
71
100
}
0 commit comments