Corrected handling of exceptions
[mono.git] / mcs / class / System.Threading.Tasks.Dataflow / Test / System.Threading.Tasks.Dataflow / CompletionTest.cs
index be0c6b130abe4b9ea199e221446bf49eb085e41e..13e5af3b2f203fe6b4ee86e44a1648fcdad861a1 100644 (file)
@@ -37,41 +37,38 @@ namespace MonoTests.System.Threading.Tasks.Dataflow
        [TestFixture]
        public class CompletionTest
        {
-               [Test]
-               public void WithNoElements ()
-               {
-                       var block = new BufferBlock<int> ();
-                       block.Post (42);
-                       block.Complete ();
-                       Console.WriteLine (block.Completion.IsCompleted);
-                       Console.WriteLine (block.Completion.Status);
-                       block.Receive ();
-                       Console.WriteLine (block.Completion.IsCompleted);
-                       Console.WriteLine (block.Completion.Status);
-               }
-
                [Test]
                public void WithElementsStillLingering ()
                {
                        var block = new BufferBlock<int> ();
-                       block.Post (42);
+                       Assert.IsTrue (block.Post (42));
                        block.Complete ();
-                       Console.WriteLine (block.Completion.IsCompleted);
-                       Console.WriteLine (block.Completion.Status);
-                       block.Receive ();
-                       Console.WriteLine (block.Completion.IsCompleted);
-                       Console.WriteLine (block.Completion.Status);
+
+                       Assert.IsFalse (block.Completion.Wait (100));
+                       Assert.IsFalse (block.Completion.IsCompleted);
+                       Assert.AreEqual (TaskStatus.WaitingForActivation, block.Completion.Status);
+
+                       Assert.AreEqual (42, block.Receive ());
+
+                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.IsCompleted);
+                       Assert.AreEqual (TaskStatus.RanToCompletion, block.Completion.Status);
                }
 
                [Test]
                public void EmptyAfterReceive ()
                {
                        var block = new BufferBlock<int> ();
-                       block.Post (42);
+                       Assert.IsTrue (block.Post (42));
                        block.Complete ();
+
+                       Assert.IsFalse (block.Completion.Wait (100));
                        Assert.IsFalse (block.Completion.IsCompleted);
                        Assert.AreEqual (TaskStatus.WaitingForActivation, block.Completion.Status);
+
                        block.Receive ();
+
+                       Assert.IsTrue (block.Completion.Wait (100));
                        Assert.IsTrue (block.Completion.IsCompleted);
                        Assert.AreEqual (TaskStatus.RanToCompletion, block.Completion.Status);
                }
@@ -80,10 +77,13 @@ namespace MonoTests.System.Threading.Tasks.Dataflow
                public void WithElementsStillLingeringButFaulted ()
                {
                        var block = new BufferBlock<int> ();
-                       block.Post (42);
+                       Assert.IsTrue (block.Post (42));
                        ((IDataflowBlock)block).Fault (new Exception ());
+
+                       Assert.Throws<AggregateException> (() => block.Completion.Wait (100));
                        Assert.IsTrue (block.Completion.IsCompleted);
                        Assert.AreEqual (TaskStatus.Faulted, block.Completion.Status);
+                       Assert.IsFalse (block.Post (43));
                }
        }
-}
+}
\ No newline at end of file