Exemplo n.º 1
0
        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)");
            }
        }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 3
0
        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");
            }
        }