public void TestPopOptions()
        {
            IFancyCalculator x = new FancyCalculator();


            for (int i = 1; i <= 3; i++)
            {
                x.Push(i);
            }
            Assert.IsTrue(x.Size() == 3);
            Assert.IsTrue(x.Top() == 3);

            x.Pop();
            Assert.IsTrue(x.Top() == 2);

            for (int i = 1; i <= 3; i++)
            {
                x.Push(i + 3);
            }
            Assert.IsTrue(x.Top() == 6);
            Assert.IsTrue(x.Size() == 5);

            x.Pop();
            Assert.IsTrue(x.Size() == 4);

            x.Pop();
            Assert.IsTrue(x.Size() == 3);
            Assert.IsTrue(x.Top() == 4);
        }
        public void TestSecondTop()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(25);
            x.Push(10);
            x.Push(15);
            Assert.IsTrue(x.SecondTop() == 10);
        }
        public void TestPush()
        {
            IFancyCalculator x = new FancyCalculator();
            var stack          = x.GetStack();

            x.Push(45);
            Assert.IsTrue(stack.Count == 1);
            Assert.IsTrue(stack.Contains(45));
        }
        public void TestTop()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(45);
            Assert.AreEqual(x.Top(), 45);

            x.Push(25);
            Assert.AreNotEqual(x.Top(), 45);
        }
        public void TestAddAll()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(10);
            x.Push(10);
            x.Push(10);
            Assert.IsTrue(x.Top() == 10);
            x.AddAll();
            Assert.IsTrue(x.Top() == 30);
        }
        public void TestClear()
        {
            IFancyCalculator x = new FancyCalculator();
            var stack          = x.GetStack();

            x.Push(25);
            x.Push(45);
            Assert.IsTrue(stack.Count == 2);
            x.Clear();
            Assert.IsTrue(stack.Count == 0);
        }
        public void TestDivision()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(2);
            x.Push(4);
            x.Push(2);
            x.Divide();
            Assert.IsTrue(x.Top() == 0.5);
            x.Divide();
            Assert.IsTrue(x.Top() == 0.125);
        }
        public void TestMultiplyAll()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(10);
            x.Push(10);
            x.Push(10);
            x.Push(10);
            Assert.IsTrue(x.Top() == 10);
            x.MultiplyAll();
            Assert.IsTrue(x.Top() == 10000);
        }
        public void TestSubtract()
        {
            IFancyCalculator x = new FancyCalculator();

            Assert.IsTrue(x.Size() == 0);
            x.Push(10);
            x.Push(20);
            x.Push(30);
            x.Push(40);
            x.Subtract();
            Assert.IsTrue(x.Top() == 10);
        }
        public void TestAdd()
        {
            IFancyCalculator x = new FancyCalculator();
            var stack          = x.GetStack();

            Assert.IsTrue(stack.Count == 0);
            x.Push(10);
            x.Push(20);
            x.Push(30);
            x.Push(40);
            x.Add();
            Assert.IsTrue(x.Top() == 70);
        }
        public void TestPushOptions()
        {
            IFancyCalculator x = new FancyCalculator();

            x.Push(45);
            x.Push(35);
            x.Push(25);
            x.Push(15);
            Assert.IsTrue(x.Top() == 15);
            x.Pop();
            Assert.IsTrue(x.Top() == 25);
            x.Push(150);
            Assert.IsTrue(x.Top() == 150);
        }
        public void TestMultiply()
        {
            IFancyCalculator x = new FancyCalculator();
            var calc           = x.GetStack();

            Assert.IsTrue(x.Size() == 0);
            x.Push(10);
            x.Push(20);
            x.Push(30);
            x.Push(40);
            x.Multiply();
            Assert.IsTrue(x.Top() == 1200);
            x.Multiply();
            Assert.IsTrue(x.Top() == 24000);
        }
        public void TestSize()
        {
            IFancyCalculator x = new FancyCalculator();
            var stack          = x.GetStack();

            x.Push(25);
            Assert.AreEqual(stack.Count, x.Size());
            Assert.AreEqual(x.Size(), 1);
            x.Push(25);
            Assert.AreEqual(stack.Count, x.Size());
            Assert.AreEqual(x.Size(), 2);
            x.Push(25);
            Assert.AreEqual(stack.Count, x.Size());
            Assert.AreEqual(x.Size(), 3);
        }
        public void TestSecondTopFailureToRespond()
        {
            IFancyCalculator x = new FancyCalculator();

            Assert.IsNull(x.SecondTop());
        }