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!"); } }
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]); } }
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); }
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()); }
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()); }
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(); }
public ExpressionTree(StaticStack<MathOperation> NumStaticStack) { Value = NumStaticStack.Pop(); BuildBinaryTree(NumStaticStack); }
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); }