Skip to content

Commit 5006c02

Browse files
committed
Use cleaner asynchronous test helpers
1 parent e81b50e commit 5006c02

File tree

3 files changed

+52
-77
lines changed

3 files changed

+52
-77
lines changed

Tvl.VisualStudio.MouseFastScroll.IntegrationTests/InProcess/Editor_InProc2.cs

Lines changed: 47 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -62,46 +62,44 @@ public async Task ActivateAsync()
6262

6363
public async Task<string> GetTextAsync()
6464
{
65-
return await ExecuteOnActiveViewAsync(view => Task.FromResult(view.TextSnapshot.GetText()));
65+
await JoinableTaskFactory.SwitchToMainThreadAsync();
66+
67+
var view = await GetActiveTextViewAsync();
68+
return view.TextSnapshot.GetText();
6669
}
6770

6871
public async Task SetTextAsync(string text)
6972
{
70-
await ExecuteOnActiveViewAsync(
71-
view =>
72-
{
73-
var textSnapshot = view.TextSnapshot;
74-
var replacementSpan = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length);
75-
view.TextBuffer.Replace(replacementSpan, text);
76-
return Task.CompletedTask;
77-
});
73+
await JoinableTaskFactory.SwitchToMainThreadAsync();
74+
75+
var view = await GetActiveTextViewAsync();
76+
var textSnapshot = view.TextSnapshot;
77+
var replacementSpan = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length);
78+
view.TextBuffer.Replace(replacementSpan, text);
7879
}
7980

8081
public async Task MoveCaretAsync(int position)
8182
{
82-
await ExecuteOnActiveViewAsync(
83-
view =>
84-
{
85-
var subjectBuffer = view.GetBufferContainingCaret();
86-
var point = new SnapshotPoint(subjectBuffer.CurrentSnapshot, position);
83+
await JoinableTaskFactory.SwitchToMainThreadAsync();
8784

88-
view.Caret.MoveTo(point);
85+
var view = await GetActiveTextViewAsync();
86+
var subjectBuffer = view.GetBufferContainingCaret();
87+
var point = new SnapshotPoint(subjectBuffer.CurrentSnapshot, position);
8988

90-
return Task.CompletedTask;
91-
});
89+
view.Caret.MoveTo(point);
9290
}
9391

9492
public async Task<bool> IsCaretOnScreenAsync()
9593
{
96-
return await ExecuteOnActiveViewAsync(
97-
view =>
98-
{
99-
var caret = view.Caret;
100-
return Task.FromResult(caret.Left >= view.ViewportLeft
101-
&& caret.Right <= view.ViewportRight
102-
&& caret.Top >= view.ViewportTop
103-
&& caret.Bottom <= view.ViewportBottom);
104-
});
94+
await JoinableTaskFactory.SwitchToMainThreadAsync();
95+
96+
var view = await GetActiveTextViewAsync();
97+
var caret = view.Caret;
98+
99+
return caret.Left >= view.ViewportLeft
100+
&& caret.Right <= view.ViewportRight
101+
&& caret.Top >= view.ViewportTop
102+
&& caret.Bottom <= view.ViewportBottom;
105103
}
106104

107105
protected override Task<ITextBuffer> GetBufferContainingCaretAsync(IWpfTextView view)
@@ -111,30 +109,43 @@ protected override Task<ITextBuffer> GetBufferContainingCaretAsync(IWpfTextView
111109

112110
public async Task<int> GetFirstVisibleLineAsync()
113111
{
114-
return await ExecuteOnActiveViewAsync(view => Task.FromResult(view.TextViewLines.FirstVisibleLine.Start.GetContainingLine().LineNumber));
112+
await JoinableTaskFactory.SwitchToMainThreadAsync();
113+
114+
var view = await GetActiveTextViewAsync();
115+
return view.TextViewLines.FirstVisibleLine.Start.GetContainingLine().LineNumber;
115116
}
116117

117118
public async Task<int> GetLastVisibleLineAsync()
118119
{
119-
return await ExecuteOnActiveViewAsync(view => Task.FromResult(view.TextViewLines.LastVisibleLine.Start.GetContainingLine().LineNumber));
120+
await JoinableTaskFactory.SwitchToMainThreadAsync();
121+
122+
var view = await GetActiveTextViewAsync();
123+
return view.TextViewLines.LastVisibleLine.Start.GetContainingLine().LineNumber;
120124
}
121125

122126
public async Task<VisibilityState> GetLastVisibleLineStateAsync()
123127
{
124-
return await ExecuteOnActiveViewAsync(view => Task.FromResult(view.TextViewLines.LastVisibleLine.VisibilityState));
128+
await JoinableTaskFactory.SwitchToMainThreadAsync();
129+
130+
var view = await GetActiveTextViewAsync();
131+
return view.TextViewLines.LastVisibleLine.VisibilityState;
125132
}
126133

127134
public async Task<Point> GetCenterOfEditorOnScreenAsync()
128135
{
129-
return await ExecuteOnActiveViewAsync(
130-
view =>
131-
{
132-
var center = new Point(view.VisualElement.ActualWidth / 2, view.VisualElement.ActualHeight / 2);
133-
return Task.FromResult(view.VisualElement.PointToScreen(center));
134-
});
136+
await JoinableTaskFactory.SwitchToMainThreadAsync();
137+
138+
var view = await GetActiveTextViewAsync();
139+
var center = new Point(view.VisualElement.ActualWidth / 2, view.VisualElement.ActualHeight / 2);
140+
return view.VisualElement.PointToScreen(center);
135141
}
136142

137143
public async Task<double> GetZoomLevelAsync()
138-
=> await ExecuteOnActiveViewAsync(view => Task.FromResult(view.ZoomLevel));
144+
{
145+
await JoinableTaskFactory.SwitchToMainThreadAsync();
146+
147+
var view = await GetActiveTextViewAsync();
148+
return view.ZoomLevel;
149+
}
139150
}
140151
}

Tvl.VisualStudio.MouseFastScroll.IntegrationTests/InProcess/InProcComponent2.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,6 @@ protected JoinableTaskFactory JoinableTaskFactory
2626
get;
2727
}
2828

29-
protected async Task InvokeOnUIThreadAsync(Func<Task> action)
30-
{
31-
await JoinableTaskFactory.SwitchToMainThreadAsync();
32-
await action();
33-
}
34-
35-
protected async Task<T> InvokeOnUIThreadAsync<T>(Func<Task<T>> action)
36-
{
37-
await JoinableTaskFactory.SwitchToMainThreadAsync();
38-
return await action();
39-
}
40-
4129
protected async Task<TInterface> GetGlobalServiceAsync<TService, TInterface>()
4230
where TService : class
4331
where TInterface : class

Tvl.VisualStudio.MouseFastScroll.IntegrationTests/InProcess/TextViewWindow_InProc2.cs

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
namespace Tvl.VisualStudio.MouseFastScroll.IntegrationTests.InProcess
55
{
6-
using System;
76
using System.Threading.Tasks;
87
using Microsoft.VisualStudio.Text;
98
using Microsoft.VisualStudio.Text.Editor;
@@ -22,35 +21,12 @@ protected TextViewWindow_InProc2(JoinableTaskFactory joinableTaskFactory)
2221

2322
public async Task<int> GetCaretPositionAsync()
2423
{
25-
return await ExecuteOnActiveViewAsync(
26-
async view =>
27-
{
28-
var subjectBuffer = await GetBufferContainingCaretAsync(view);
29-
var bufferPosition = view.Caret.Position.BufferPosition;
30-
return bufferPosition.Position;
31-
});
32-
}
33-
34-
protected async Task<T> ExecuteOnActiveViewAsync<T>(Func<IWpfTextView, Task<T>> action)
35-
{
36-
return await InvokeOnUIThreadAsync(
37-
async () =>
38-
{
39-
var view = await GetActiveTextViewAsync();
40-
return await action(view);
41-
});
42-
}
43-
44-
protected async Task ExecuteOnActiveViewAsync(Func<IWpfTextView, Task> action)
45-
=> await InvokeOnUIThreadAsync(GetExecuteOnActionViewCallback(action));
24+
await JoinableTaskFactory.SwitchToMainThreadAsync();
4625

47-
protected Func<Task> GetExecuteOnActionViewCallback(Func<IWpfTextView, Task> action)
48-
{
49-
return async () =>
50-
{
51-
var view = await GetActiveTextViewAsync();
52-
await action(view);
53-
};
26+
var view = await GetActiveTextViewAsync();
27+
var subjectBuffer = await GetBufferContainingCaretAsync(view);
28+
var bufferPosition = view.Caret.Position.BufferPosition;
29+
return bufferPosition.Position;
5430
}
5531
}
5632
}

0 commit comments

Comments
 (0)