public static void sending_async_returns_a_waiting_task_which_is_complete_by_trying_to_receive_a_value(Test t) { var ch = new BufferedChannel <int>(1); var st1 = ch.SendAsync(1); var st2 = ch.SendAsync(2); if (st2.IsCompleted) { t.Fatal("second send should wait for a recevier"); } int val; if (ch.TryReceive(out val) != true) { t.Fatal("TryReceive failed when a receiver was waiting"); } if (ch.TryReceive(out val) != true) { t.Fatal("TryReceive failed when a receiver was waiting"); } if (st2.Wait(100) == false || st2.IsCompleted == false) { t.Fatal("sending task did not complete, state is " + st2.Status); } if (val != 2) { t.Fatal("received value (" + val + ") is not what we sent (2)"); } }
public static void trying_to_receive_from_an_empty_channel_returns_false(Test t) { var ch = new BufferedChannel <int>(3); int val; if (ch.TryReceive(out val) != false) { t.Fatal("returned true receiving from a new (empty) channel"); } }
public static void try_receive_on_a_closed_channel_return_false(Test t) { var ch = new BufferedChannel <int>(3); ch.Close(); int val; if (ch.TryReceive(out val) != false) { t.Fatal("was able to receive on closed channel"); } }