public void _3_2_StackWithMinimum_WithValidMinimums_ShouldStoreSuccessfully()
        {
            StackWithMinimum minStack = new StackWithMinimum();

            minStack.Push(2);
            minStack.Push(3);
            minStack.Push(6);
            minStack.Push(1);
            minStack.Push(9);
            minStack.Push(0);

            Assert.AreEqual(0, minStack.PeekMin());
            Assert.AreEqual(0, minStack.Pop());

            Assert.AreEqual(1, minStack.PeekMin());
            Assert.AreEqual(9, minStack.Pop());

            Assert.AreEqual(1, minStack.PeekMin());
            Assert.AreEqual(1, minStack.Pop());

            Assert.AreEqual(2, minStack.PeekMin());
            Assert.AreEqual(6, minStack.Pop());

            Assert.AreEqual(2, minStack.PeekMin());
            Assert.AreEqual(3, minStack.Pop());

            Assert.AreEqual(2, minStack.PeekMin());
            Assert.AreEqual(2, minStack.Pop());
        }
        public void _3_2_StackWithMinimum_WithValidMinimumsAndNegatives_ShouldStoreSuccessfully()
        {
            StackWithMinimum minStack = new StackWithMinimum();

            minStack.Push(2);
            minStack.Push(-2);
            minStack.Push(-1);
            minStack.Push(1);
            minStack.Push(-3);

            Assert.AreEqual(-3, minStack.PeekMin());
            Assert.AreEqual(-3, minStack.Pop());

            Assert.AreEqual(-2, minStack.PeekMin());
            Assert.AreEqual(1, minStack.Pop());

            Assert.AreEqual(-2, minStack.PeekMin());
            Assert.AreEqual(-1, minStack.Pop());

            Assert.AreEqual(-2, minStack.PeekMin());
            Assert.AreEqual(-2, minStack.Pop());

            Assert.AreEqual(2, minStack.PeekMin());
            Assert.AreEqual(2, minStack.Pop());
        }