public static void dequeuing_one_item_from_a_queue_of_two_sets_the_head_and_tail_to_the_remaining_item(Test t)
        {
            var q    = new LinkedQueue <Waiter>();
            var win1 = new Waiter();
            var win2 = new Waiter();

            Queue.Enqueue(ref q, win1);
            Queue.Enqueue(ref q, win2);
            var wout = Queue.Dequeue(ref q);

            if (win1 != wout)
            {
                t.Fatal("dequeue item is wrong");
            }
            if (q.Head != win2)
            {
                t.Fatal("Head is " + q.Head);
            }
            if (q.Tail != win2)
            {
                t.Fatal("Tail is " + q.Tail);
            }
            if (win1.Next != null)
            {
                t.Fatal("win1.Next is " + win1.Next);
            }
        }
        public static void dequeuing_the_only_item_in_the_queue_empties_the_queue(Test t)
        {
            var q   = new LinkedQueue <Waiter>();
            var win = new Waiter();

            Queue.Enqueue(ref q, win);
            var wout = Queue.Dequeue(ref q);

            if (win != wout)
            {
                t.Fatal("dequeue item is wrong");
            }
            if (q.Head != null)
            {
                t.Fatal("Head is " + q.Head);
            }
            if (q.Tail != null)
            {
                t.Fatal("Tail is " + q.Tail);
            }
            if (win.Next != null)
            {
                t.Fatal("win1.Next is " + win.Next);
            }
        }
Exemple #3
0
 void CancelAllWaitingReceivers()
 {
     for (var r = _receivers.Head; r != null; r = r.Next)
     {
         r.SetCanceled(_closed);
     }
     _receivers = new LinkedQueue <Receiver <T> >();
 }
Exemple #4
0
        void CancelAllWaitingReceivers()
        {
            for (var r = _receivers.Head; r != null; r = r.Next)
            {
#if !NET45
                r.TrySetCanceled(_closed);
#else
                Task.Run(() => r.SetCanceled());
#endif
            }
            _receivers = new LinkedQueue <Receiver <T> >();
        }
        public static void head_and_tail_not_set_on_new_queue(Test t)
        {
            var q = new LinkedQueue <Waiter>();

            if (q.Head != null)
            {
                t.Fatal("Head is " + q.Head);
            }
            if (q.Tail != null)
            {
                t.Fatal("Tail is " + q.Tail);
            }
        }
        public static void can_enqueue_into_empty_queue(Test t)
        {
            var q = new LinkedQueue <Waiter>();
            var w = new Waiter();

            Queue.Enqueue(ref q, w);
            if (q.Head != w)
            {
                t.Fatal("Head is " + q.Head + " but expected it to be w");
            }
            if (q.Tail != w)
            {
                t.Fatal("Tail is " + q.Head + " but expected it to be w");
            }
        }
        public static void second_enqueued_item_becomes_the_tail(Test t)
        {
            var q  = new LinkedQueue <Waiter>();
            var w1 = new Waiter();
            var w2 = new Waiter();

            Queue.Enqueue(ref q, w1);
            Queue.Enqueue(ref q, w2);
            if (q.Head != w1)
            {
                t.Fatal("Head is " + q.Head + " but expected it to be w1");
            }
            if (q.Tail != w2)
            {
                t.Fatal("Tail is " + q.Tail + " but expected it to be w2");
            }
        }
        public static void removing_last_item_from_a_queue_of_two_sets_the_head_and_tail_to_the_remaining_item(Test t)
        {
            var q    = new LinkedQueue <Waiter>();
            var win1 = new Waiter();
            var win2 = new Waiter();

            Queue.Enqueue(ref q, win1);
            Queue.Enqueue(ref q, win2);
            Queue.Remove(ref q, win2);
            if (q.Head != win1)
            {
                t.Fatal("Head is " + q.Head);
            }
            if (q.Tail != win1)
            {
                t.Fatal("Tail is " + q.Tail);
            }
        }
        public static void removing_the_only_item_from_a_queue_sets_the_head_and_tail_to_null(Test t)
        {
            var q    = new LinkedQueue <Waiter>();
            var win1 = new Waiter();

            Queue.Enqueue(ref q, win1);
            Queue.Remove(ref q, win1);
            if (q.Head != null)
            {
                t.Fatal("Head is " + q.Head);
            }
            if (q.Tail != null)
            {
                t.Fatal("Tail is " + q.Tail);
            }
            if (win1.Next != null)
            {
                t.Fatal("win1.Next is " + win1.Next);
            }
        }