Beispiel #1
0
        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);
        }