summaryrefslogtreecommitdiff
path: root/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs')
-rw-r--r--mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs48
1 files changed, 48 insertions, 0 deletions
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
index d9811306fb..1f3c156d77 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
@@ -838,6 +838,23 @@ namespace MonoTests.System.Threading.Tasks
}
[Test]
+ public void RunSynchronously_SchedulerException ()
+ {
+ var scheduler = new MockScheduler ();
+ scheduler.TryExecuteTaskInlineHandler += (task, b) => {
+ throw new ApplicationException ();
+ };
+
+ Task t = new Task (() => { });
+ try {
+ t.RunSynchronously (scheduler);
+ Assert.Fail ();
+ } catch (Exception e) {
+ Assert.AreEqual (t.Exception.InnerException, e);
+ }
+ }
+
+ [Test]
public void RunSynchronouslyWithAttachedChildren ()
{
var result = false;
@@ -1126,6 +1143,15 @@ namespace MonoTests.System.Threading.Tasks
}
[Test]
+ public void Delay_TimeManagement ()
+ {
+ var delay1 = Task.Delay(50);
+ var delay2 = Task.Delay(25);
+ Assert.IsTrue (Task.WhenAny(new[] { delay1, delay2 }).Wait (1000));
+ Assert.AreEqual (TaskStatus.RanToCompletion, delay2.Status);
+ }
+
+ [Test]
public void WaitAny_WithNull ()
{
var tasks = new [] {
@@ -1141,6 +1167,16 @@ namespace MonoTests.System.Threading.Tasks
}
[Test]
+ public void WhenAll_Empty ()
+ {
+ var tasks = new Task[0];
+
+ Task t = Task.WhenAll(tasks);
+
+ Assert.IsTrue(t.Wait(1000), "#1");
+ }
+
+ [Test]
public void WhenAll_WithNull ()
{
var tasks = new[] {
@@ -1266,6 +1302,18 @@ namespace MonoTests.System.Threading.Tasks
}
[Test]
+ public void WhenAllResult_Empty ()
+ {
+ var tasks = new Task<int>[0];
+
+ Task<int[]> t = Task.WhenAll(tasks);
+
+ Assert.IsTrue(t.Wait(1000), "#1");
+ Assert.IsNotNull(t.Result, "#2");
+ Assert.AreEqual(t.Result.Length, 0, "#3");
+ }
+
+ [Test]
public void WhenAllResult_WithNull ()
{
var tasks = new[] {