private void addButton_Click(object sender, EventArgs e) { expressionLbl.Text += String.IsNullOrEmpty(displayTxt.Text) ? Constants.Add : displayTxt.Text + Constants.Add; var number = new Number { EnteredNumber = String.IsNullOrEmpty(displayTxt.Text) ? 0 : Convert.ToDouble(displayTxt.Text), IsCalculated = false }; AddCommand addCommand; //Deferred execution if (_bracketCount == 0 || _bracketCount % 2 == 0) { _numbers.Add(number); addCommand = new AddCommand(_result, _numbers); //Calculating _invoker.CalculatingOperations(); } else if (_bracketCount > 0 && _bracketCount % 2 == 0) { _bracketNumbers.Add(number); addCommand = new AddCommand(_result, _bracketNumbers); _invoker.CalculatingOperations(); } else { _bracketNumbers.Add(number); addCommand = new AddCommand(_result, _bracketNumbers); } //Adding current operation into sequence _invoker.IncludeOperations(addCommand); displayTxt.Clear(); }
public void TestSquareRoot() { var invoker = new CommandInvoker(); var result = new ResultReceiver(); var number = new Number { EnteredNumber = 4, IsCalculated = false }; invoker.IncludeOperations(new SquareRootCommand(result, number)); invoker.CalculatingOperations(); Assert.AreEqual(2.0, result.Answer); }
public void TestAddAndSub() { var invoker = new CommandInvoker(); var result = new ResultReceiver(); var addNumbers = new List <Number> { new Number { EnteredNumber = 1, IsCalculated = false }, new Number { EnteredNumber = 2, IsCalculated = false } }; var addCommand = new AddCommand(result, addNumbers); invoker.IncludeOperations(addCommand); invoker.CalculatingOperations(); Assert.AreEqual(3.0, result.Answer); invoker.RemoveOperation(addCommand); var subNumbers = new List <Number> { new Number { EnteredNumber = 3, IsCalculated = false } }; invoker.IncludeOperations(new SubtractCommand(result, subNumbers)); invoker.CalculatingOperations(); Assert.AreEqual(0.0, result.Answer); invoker.RemoveOperation(addCommand); }
public void TestDivide() { var invoker = new CommandInvoker(); var result = new ResultReceiver(); var numbers = new List <Number> { new Number { EnteredNumber = 4, IsCalculated = false }, new Number { EnteredNumber = 2, IsCalculated = false } }; invoker.IncludeOperations(new DivideCommand(result, numbers)); invoker.CalculatingOperations(); Assert.AreEqual(2.0, result.Answer); }