Remove() public method

Removes the given handle from the queue.
public Remove ( ProcessQueueHandle handle ) : void
handle ProcessQueueHandle The handle to remove.
return void
        public void ShouldRemoveHandleFromQueue()
        {
            var queue = new ProcessQueue();
            Action action = () => { };

            var handle1 = queue.Add(action);
            var handle2 = queue.Add(action);
            var handle3 = queue.Add(action);

            queue.Count.ShouldBe(3);
            queue.Remove(null);
            queue.Count.ShouldBe(3);

            queue.Remove(handle1);
            queue.Count.ShouldBe(2);
            queue.Contains(handle1).ShouldBe(false);

            handle2.Position.ShouldBe(0);
            handle3.Position.ShouldBe(1);

            queue.Remove(handle2);
            queue.Remove(handle3);
            queue.Count.ShouldBe(0);

            // --
            queue.Remove(handle1);
            queue.Remove(handle2);
            queue.Remove(handle3);
        }
        public void ShouldExposeTheNextItem()
        {
            var queue = new ProcessQueue();
            queue.NextItem.ShouldBe(null);

            Action action = () => { };
            var handle1 = queue.Add(action);
            var handle2 = queue.Add(action);
            var handle3 = queue.Add(action);

            queue.NextItem.ShouldBe(handle1);

            handle1.Process();
            queue.NextItem.ShouldBe(handle2);

            queue.Remove(handle2);
            queue.NextItem.ShouldBe(handle3);

            handle3.Process();
            queue.Count.ShouldBe(0);
            queue.NextItem.ShouldBe(null);
        }
        public void ShouldDetermineIfHandleIsContainedWithinQueue()
        {
            var queue = new ProcessQueue();
            Action action = () => { };
            queue.Contains(null).ShouldBe(false);

            var handle1 = queue.Add(action);
            queue.Contains(handle1).ShouldBe(true);

            queue.Remove(handle1);
            queue.Contains(handle1).ShouldBe(false);
        }
        public void ShouldReportIsQueued()
        {
            var queue = new ProcessQueue();
            Action action = () => { };

            var handle1 = queue.Add(action);
            var handle2 = queue.Add(action);
            var handle3 = queue.Add(action);

            handle1.IsQueued.ShouldBe(true);
            handle2.IsQueued.ShouldBe(true);

            queue.Remove(handle1);

            handle1.IsQueued.ShouldBe(false);
            handle2.IsQueued.ShouldBe(true);
            handle3.IsQueued.ShouldBe(true);
        }