Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStephen Toub <stoub@microsoft.com>2018-04-06 20:27:21 +0300
committerGitHub <noreply@github.com>2018-04-06 20:27:21 +0300
commit3b834c49b451fc23e04c9233d9c008e693a4fc9b (patch)
tree7b753dd3006ed16a519a03bc9753fa80a2082114 /src
parentf5d31619f821e7b4a0bcf7f648fe1dc2e4e2f09f (diff)
Add a few tests for Task.Yield in async methods (#28887)
Diffstat (limited to 'src')
-rw-r--r--src/System.Threading.Tasks/tests/System.Runtime.CompilerServices/YieldAwaitableTests.cs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/System.Threading.Tasks/tests/System.Runtime.CompilerServices/YieldAwaitableTests.cs b/src/System.Threading.Tasks/tests/System.Runtime.CompilerServices/YieldAwaitableTests.cs
index 852de99779..92ffdc4ab9 100644
--- a/src/System.Threading.Tasks/tests/System.Runtime.CompilerServices/YieldAwaitableTests.cs
+++ b/src/System.Threading.Tasks/tests/System.Runtime.CompilerServices/YieldAwaitableTests.cs
@@ -143,8 +143,38 @@ namespace System.Threading.Tasks.Tests
SynchronizationContext.SetSynchronizationContext(new ValidateCorrectContextSynchronizationContext());
var ya = Task.Yield().GetAwaiter();
Assert.Throws<ArgumentNullException>(() => { ya.OnCompleted(null); });
+ SynchronizationContext.SetSynchronizationContext(null);
}
+ [Fact]
+ public static async Task AsyncMethod_Yields_ReturnsToDefaultTaskScheduler()
+ {
+ await Task.Yield();
+ Assert.Same(TaskScheduler.Default, TaskScheduler.Current);
+ }
+
+ [Fact]
+ public static async Task AsyncMethod_Yields_ReturnsToCorrectTaskScheduler()
+ {
+ QUWITaskScheduler ts = new QUWITaskScheduler();
+ Assert.NotSame(ts, TaskScheduler.Current);
+ await Task.Factory.StartNew(async delegate
+ {
+ Assert.Same(ts, TaskScheduler.Current);
+ await Task.Yield();
+ Assert.Same(ts, TaskScheduler.Current);
+ }, CancellationToken.None, TaskCreationOptions.None, ts).Unwrap();
+ Assert.NotSame(ts, TaskScheduler.Current);
+ }
+
+ [Fact]
+ public static async Task AsyncMethod_Yields_ReturnsToCorrectSynchronizationContext()
+ {
+ var sc = new ValidateCorrectContextSynchronizationContext ();
+ SynchronizationContext.SetSynchronizationContext(sc);
+ await Task.Yield();
+ Assert.Equal(1, sc.PostCount);
+ }
#region Helper Methods / Classes
private class ValidateCorrectContextSynchronizationContext : SynchronizationContext