public void ZTaskStack_DelayTaskToBottom()
        {
            // Arrange
            ZTaskStack testStack = new ZTaskStack();

            testStack.PushAll(tasks);

            // Assume
            Assume.That(testStack.PeekAll(), Is.EquivalentTo(tasks));

            // Act
            var curTask = testStack.Peek();

            testStack.DelayCurrentTaskToBottom();

            // Assert
            int lim = testStack.Count() - 1;

            for (int i = 0; i < lim; ++i)
            {
                testStack.Pop();
            }
            Assert.That(testStack.Peek(), Is.EqualTo(curTask));
            testStack.Pop();
            Assert.That(testStack.Empty(), Is.True);
        }
        public void ZTaskStack_PushAndPop()
        {
            // Arrange
            int[]      pushSequence = { 1, 7, 0, 2, 4, 3, 5, 6 };
            int[]      popSequence  = pushSequence.Reverse().ToArray();
            ZTaskStack testStack    = new ZTaskStack();

            // Assume
            Assume.That(tasks.Count, Is.GreaterThanOrEqualTo(8));
            Assume.That(testStack.Empty(), Is.True);

            // Act
            foreach (int i in pushSequence)
            {
                testStack.Push(tasks[i]);
            }

            // Assert
            foreach (int i in popSequence)
            {
                Assert.That(testStack.Pop(), Is.EqualTo(tasks[i]));
            }
        }