diff options
Diffstat (limited to 'mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs')
-rw-r--r-- | mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs | 48 |
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[] { |