public void Clear()
 {
     if (Volatile.Read(ref done))
     {
         queue.Clear();
     }
 }
        public void OnError(Exception e)
        {
            q.ForEach(v => v.OnError(e));

            q.Clear();

            actual.OnError(e);
        }
Beispiel #3
0
        public void TestGrow()
        {
            ArrayQueue <string> queue = new ArrayQueue <string>(3, 5);

            Assert.AreEqual(3, queue.Capacity);

            queue.Enqueue("a");
            queue.Enqueue("b");
            Assert.AreEqual(3, queue.Capacity);
            queue.Enqueue("c");
            Assert.AreEqual(8, queue.Capacity);

            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue("" + ('d' + i));
            }
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
            {
                queue.Dequeue();
            }
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue("" + ('d' + i));
            }
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
            {
                queue.Dequeue();
            }
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue("" + ('d' + i));
            }
            Assert.AreEqual(8, queue.Capacity);

            queue.Enqueue("z");
            Assert.AreEqual(13, queue.Capacity);

            queue.Clear();
            Assert.AreEqual(13, queue.Capacity);
            for (int i = 0; i < 12; i++)
            {
                queue.Enqueue("" + ('a' + i));
            }
            Assert.AreEqual(13, queue.Capacity);
            queue.Clear();
            Assert.AreEqual(13, queue.Capacity);
            for (int i = 0; i < 12; i++)
            {
                queue.Enqueue("" + ('a' + i));
            }
            Assert.AreEqual(13, queue.Capacity);
        }
Beispiel #4
0
        public void EnqueuingAfterClearingCollection()
        {
            var stack = new ArrayQueue <int>();

            int itemCount = 500000;

            for (int i = 0; i < itemCount; i++)
            {
                stack.Enqueue(i);
            }

            stack.Clear();

            for (int i = 0; i < itemCount; i++)
            {
                stack.Enqueue(i);
            }

            int trueCount = 0;
            int lastItem  = int.MinValue;

            foreach (var item in stack)
            {
                if (lastItem > item)
                {
                    Assert.Fail();
                }
                lastItem = item;
                trueCount++;
            }

            Assert.IsTrue(stack.Count == itemCount &&
                          stack.Count == trueCount);
        }
Beispiel #5
0
 public void Cancel()
 {
     Volatile.Write(ref cancelled, true);
     upstream.Cancel();
     if (Interlocked.Increment(ref wip) == 1)
     {
         queue.Clear();
     }
 }
 public void OnError(Exception cause)
 {
     if (done)
     {
         return;
     }
     done = true;
     queue.Clear();
     actual.OnError(cause);
 }
 public void OnTerminate()
 {
     if (Interlocked.Decrement(ref active) == 0)
     {
         upstream.Cancel();
         if (!outputFused && Interlocked.Increment(ref wip) == 1)
         {
             queue.Clear();
         }
     }
 }
        public void TestGrow()
        {
            ArrayQueue<string> queue = new ArrayQueue<string>(3, 5);
            Assert.AreEqual(3, queue.Capacity);

            queue.Enqueue("a");
            queue.Enqueue("b");
            Assert.AreEqual(3, queue.Capacity);
            queue.Enqueue("c");
            Assert.AreEqual(8, queue.Capacity);

            for (int i = 0; i < 4; i++)
                queue.Enqueue("" + ('d' + i));
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
                queue.Dequeue();
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
                queue.Enqueue("" + ('d' + i));
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
                queue.Dequeue();
            Assert.AreEqual(8, queue.Capacity);
            for (int i = 0; i < 4; i++)
                queue.Enqueue("" + ('d' + i));
            Assert.AreEqual(8, queue.Capacity);

            queue.Enqueue("z");
            Assert.AreEqual(13, queue.Capacity);

            queue.Clear();
            Assert.AreEqual(13, queue.Capacity);
            for (int i = 0; i < 12; i++)
                queue.Enqueue("" + ('a' + i));
            Assert.AreEqual(13, queue.Capacity);
            queue.Clear();
            Assert.AreEqual(13, queue.Capacity);
            for (int i = 0; i < 12; i++)
                queue.Enqueue("" + ('a' + i));
            Assert.AreEqual(13, queue.Capacity);
        }
Beispiel #9
0
        public void CheckClearQueue()
        {
            MyQueue <int> queueArray = new ArrayQueue <int>();
            MyQueue <int> queueList  = new ListQueue <int>();

            for (int i = 1; i < 11; i++)
            {
                queueArray.Enqueue(i);
                queueList.Enqueue(i);
            }

            queueArray.Clear();
            queueList.Clear();

            Assert.Equal(0, queueArray.Count());
            Assert.Equal(0, queueList.Count());
        }
Beispiel #10
0
        /// <summary>
        /// Pump all the queued events to the designated handlers. This method should only ever be called from the game thread.
        /// </summary>
        internal void PumpEvents()
        {
            // Copy the front buffer to the back buffer before processing.
            // It's important to minimize time spend within the lock to avoid stalling other threads trying to enqueue events.
            lock (syncRoot)
            {
                frontBuffer.CopyTo(backBuffer);
                frontBuffer.Clear();
            }

            // The enumerator will preserve the correct queue order.
            foreach (Event e in backBuffer)
            {
                bool processed = false;

                // Enumerate through all the registered event dispatchers.
                foreach (EventDispatcher dispatcher in eventDispatchers)
                {
                    // If the dispatcher returns true the event has been processed and send to all registered handlers.
                    if (dispatcher.ProcessEvent(e))
                    {
                        processed = true;

                        break;
                    }
                }

                // If no event dispatcher processed the event throw out a warning.
                if (!processed)
                {
                    Engine.Log.WriteLine("warning/system", "Event {0} was not processed", e.Type);
                }
            }

            // Clear the back buffer to prevent holding references to otherwise potentially dead instances.
            backBuffer.Clear();
        }
        public void intNumbClear()
        {
            //arrange
            int[] expected_ar = { 0, 0, 0 };

            //act
            ArrayQueue <int> arr = new ArrayQueue <int>(3);

            arr.Enqueue(5);
            arr.Enqueue(6);
            arr.Enqueue(7);
            int[] actual_ar = new int[3];
            int   i         = 0;

            arr.Clear();
            foreach (var elem in arr)
            {
                actual_ar[i] = elem;
                i++;
            }

            //assert
            CollectionAssert.AreEqual(expected_ar, actual_ar);
        }
 public void OnComplete()
 {
     queue.Clear();
     actual.OnComplete();
 }
 public override void OnError(Exception e)
 {
     lists.Clear();
     Error(e);
 }
Beispiel #14
0
        static void Main()
        {
            var listQueue = new ListQueue <int>();

            listQueue.Enqueue(1);
            listQueue.Enqueue(3);
            listQueue.Enqueue(4);
            listQueue.Enqueue(6);
            listQueue.Enqueue(9);
            DisplayQueue(listQueue);
            Console.WriteLine("Добавим в очередь элемент '7'");
            listQueue.Enqueue(7);
            DisplayItem(listQueue);
            listQueue.Clear();
            DisplayQueue(listQueue);

            var arrayQueue = new ArrayQueue <string>(10);

            arrayQueue.Enqueue("1");
            arrayQueue.Enqueue("2");
            arrayQueue.Enqueue("5");
            arrayQueue.Enqueue("6");
            arrayQueue.Enqueue("ten");
            DisplayQueue(arrayQueue);
            Console.WriteLine("Добавим в очередь элемент 'seven'");
            arrayQueue.Enqueue("seven");
            DisplayItem(arrayQueue);
            arrayQueue.Clear();
            DisplayQueue(arrayQueue);

            var linkedListQueue = new LinkedQueue <int>();

            linkedListQueue.Enqueue(1);
            linkedListQueue.Enqueue(3);
            linkedListQueue.Enqueue(4);
            linkedListQueue.Enqueue(6);
            linkedListQueue.Enqueue(9);
            DisplayQueue(linkedListQueue);
            Console.WriteLine("Добавим в очередь элемент '7'");
            linkedListQueue.Enqueue(7);
            DisplayItem(linkedListQueue);
            linkedListQueue.Clear();
            DisplayQueue(linkedListQueue);

            var listDeque = new ListDeque <int>();

            listDeque.AddFirst(1);
            listDeque.AddFirst(3);
            listDeque.AddFirst(4);
            listDeque.AddLast(6);
            listDeque.AddLast(9);
            DisplayItem(listDeque);
            DisplayQueue(listDeque);
            Console.WriteLine();
            listDeque.AddLast(5);
            DisplayItem(listDeque);
            Console.WriteLine(listDeque.RemoveFirst());
            DisplayItem(listDeque);


            var linkedDeque = new LinkedListDeque <int>();

            linkedDeque.AddFirst(1);
            linkedDeque.AddFirst(3);
            linkedDeque.AddFirst(4);
            linkedDeque.AddLast(6);
            linkedDeque.AddLast(9);
            DisplayItem(linkedDeque);
            DisplayQueue(linkedDeque);
            Console.WriteLine();
            linkedDeque.AddLast(5);
            DisplayItem(linkedDeque);
            Console.WriteLine(linkedDeque.RemoveFirst());
            DisplayItem(linkedDeque);
        }
 public void Clear()
 {
     _messageQueue.Clear();
 }