Esempio n. 1
0
 public override Number Calculate(StaticStack<MathOperation> NumStaticStack)
 {
     float a, b, c, d;
     if (NumStaticStack.Count < ArgumentCount)
     {
         throw new Exceptions.NotEnoughArgumentsException("Not enough arguments for \"" + ToString() +"\"");
     }
     switch (ArgumentCount)
     {
        case 0:
             return Calculate();
         case 1:
             return Calculate(NumStaticStack.Pop().Calculate(NumStaticStack));
         case 2:
             b = NumStaticStack.Pop().Calculate(NumStaticStack);
             a = NumStaticStack.Pop().Calculate(NumStaticStack);
             return Calculate(a,b);
         case 3:
             c = NumStaticStack.Pop().Calculate(NumStaticStack);
             b = NumStaticStack.Pop().Calculate(NumStaticStack);
             a = NumStaticStack.Pop().Calculate(NumStaticStack);
             return Calculate(a,b,c);
         case 4:
             d = NumStaticStack.Pop().Calculate(NumStaticStack);
             c = NumStaticStack.Pop().Calculate(NumStaticStack);
             b = NumStaticStack.Pop().Calculate(NumStaticStack);
             a = NumStaticStack.Pop().Calculate(NumStaticStack);
             return Calculate(a,b,c,d);
         default:
             throw new NotSupportedException("ArgumentCount not supported!");
     }
 }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Numbers for Static Stack:");
            Console.WriteLine("(Until u enter empty line or invalid format for a number)");

            StaticStack<int> sampleStack = new StaticStack<int>();

            Program.ConsoleReader(sampleStack);
            Console.WriteLine("Result:");
            while (sampleStack.Count > 0)
            {
                Console.WriteLine(sampleStack.Pop());
            }

            Console.WriteLine();
            Console.WriteLine("Numbers for Dynamic Stack:");
            Console.WriteLine("(Until u enter empty line or invalid format for a number)");

            DynamicStack<int> sampleDynamicStack = new DynamicStack<int>();

            Program.ConsoleReader(sampleDynamicStack);
            Console.WriteLine("Result:");

            while (sampleDynamicStack.Count > 0)
            {
                Console.WriteLine(sampleDynamicStack.Pop());
            }
          
        }
        public void PopEmptyStackThrowsException()
        {
            //Arrange
            var stack = new StaticStack <string>(5);

            //Act
            stack.Pop();
            //Assert
        }
        public void StackPopWorksCorrectly()
        {
            //Arrange
            var stack    = new StaticStack <string>(5);
            var expected = "three";

            //Act
            stack.Push("one");
            stack.Push("two");
            stack.Push("three");
            var result = stack.Pop();

            //Assert
            Assert.AreEqual(expected, result);
        }
        public void ToArrayTest_ValidStack()
        {
            StaticStack <int> stack = new StaticStack <int>();

            for (int i = 1; i <= 5; i++)
            {
                stack.Push(i);
            }

            int[] arr = stack.ToArray();

            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(stack.Pop(), arr[arr.Length - 1 - i]);
            }
        }
        public void PopTest_PoPSeveralItems()
        {
            StaticStack <int> stack = new StaticStack <int>();

            int[] arr = new int[5];
            for (int i = 0; i < 5; i++)
            {
                stack.Push(i + 1);
                arr[arr.Length - 1 - i] = i + 1;
            }

            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(stack.Pop(), arr[i]);
            }
        }
Esempio n. 7
0
        public void TestPop_OneItem()
        {
            StaticStack <int> stack = new StaticStack <int>();

            int stackCount = 5;

            for (int i = 0; i < stackCount; i++)
            {
                stack.Push(i);
            }

            int popped = stack.Pop();

            Assert.AreEqual(4, popped);
            Assert.AreEqual(4, stack.Count);
            Assert.AreEqual("3210", stack.ToString());
        }
        public void StackContainsWorksCorrectly()
        {
            //Arrange
            var stack = new StaticStack <string>(5);

            //Act
            stack.Push("one");
            stack.Push("two");
            stack.Push("three");
            bool found = stack.Contains("three");

            stack.Pop();
            bool notFound = stack.Contains("three");

            //Assert
            Assert.IsTrue(found);
            Assert.IsFalse(notFound);
        }
Esempio n. 9
0
        public void TestPop_MultipleItems()
        {
            StaticStack <int> stack = new StaticStack <int>();

            int stackCount = 10;

            for (int i = 0; i < stackCount; i++)
            {
                stack.Push(i);
            }

            for (int i = 0; i < 5; i++)
            {
                int popped = stack.Pop();
                Assert.AreEqual(9 - i, popped);
            }

            Assert.AreEqual(5, stack.Count);
            Assert.AreEqual("43210", stack.ToString());
        }
Esempio n. 10
0
        public void TestClone_NonEmptyStack()
        {
            StaticStack <int> stack = new StaticStack <int>();

            int stackCount = 5;

            for (int i = 0; i < stackCount; i++)
            {
                stack.Push(i);
            }

            StaticStack <int> clone = (StaticStack <int>)stack.Clone();

            for (int i = 0; i < stackCount; i++)
            {
                stack.Pop();
            }

            Assert.AreEqual(0, stack.Count);
            Assert.AreEqual(5, clone.Count);
            Assert.AreEqual("43210", clone.ToString());
        }
Esempio n. 11
0
        public void TestPop_EmptyStack()
        {
            StaticStack <int> stack = new StaticStack <int>();

            Assert.AreEqual(4, stack.Pop());
        }
        public void PopTest_PopFromEmptyStack()
        {
            StaticStack <int> stack = new StaticStack <int>();

            stack.Pop();
        }
Esempio n. 13
0
 public ExpressionTree(StaticStack<MathOperation> NumStaticStack)
 {
     Value = NumStaticStack.Pop();
     BuildBinaryTree(NumStaticStack);
 }
Esempio n. 14
0
 public override Number Calculate(StaticStack<MathOperation> NumStaticStack)
 {
     if (NumStaticStack.Count < 2)
         throw new NotEnoughArgumentsException("Operator \"" + ToString() + "\": not enough arguments");
     float b = NumStaticStack.Pop().Calculate(NumStaticStack);
     float a = NumStaticStack.Pop().Calculate(NumStaticStack);
     return Calculate(a, b);
 }