Example #1
0
        private void ExecuteLastOperator(Operator newOperator)
        {
            decimal currentValue = Convert.ToDecimal(textBoxDisplay.Text);
            decimal newValue = currentValue;

            if (numberHitSinceLastOperator)
            {
                switch (lastOperator)
                {
                    case Operator.Plus:
                        newValue = valueSoFar + currentValue;
                        break;
                    case Operator.Minus:
                        newValue = valueSoFar - currentValue;
                        break;
                    case Operator.Times:
                        newValue = valueSoFar * currentValue;
                        break;
                    case Operator.Divide:
                        if (currentValue == 0)
                            newValue = 0;
                        else
                            newValue = valueSoFar / currentValue;
                        break;
                    case Operator.Equals:
                        newValue = currentValue;
                        break;
                }
            }

            valueSoFar = newValue;
            lastOperator = newOperator;
            numberHitSinceLastOperator = false;
            textBoxDisplay.Text = valueSoFar.ToString();
        }
Example #2
0
        public void addTwoNumbersTogether()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("12");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("14",testOperatorClass.TextBoxCalculatedResult);
        }
Example #3
0
        public void divideTwoNumbers()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("12");
            testOperatorClass.setOperatorFlag("Divide");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("6", testOperatorClass.TextBoxCalculatedResult);
        }
Example #4
0
        public void cantSetOperatorPriortoUserInput()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.setOperatorFlag("Multiply");
            testOperatorClass.Combine("3");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("3");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("6", testOperatorClass.TextBoxCalculatedResult);
        }
Example #5
0
        public Calculator()
        {
            InitializeComponent();

            _resetResult = true;
            _lhsNumber = 0;
            _currOperator = Operator.None;
            _memory = 0;

            mainPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.None;

            foreach (var button in basicOpsPanel.Controls.Cast<Control>().Concat(advancedOpsPanel.Controls.Cast<Control>()).Concat(memoryPanel.Controls.Cast<Control>()).Cast<Button>())
            {
                button.FlatAppearance.BorderSize = 0;
                button.FlatStyle = FlatStyle.Flat;
                button.Margin = new Padding(0);
            }

            foreach(Button button in basicOpsPanel.Controls)
            {
                button.BackColor = Settings.Default.LightBackColor;
                button.ForeColor = Settings.Default.LightForeColor;
            }

            foreach(Button button in advancedOpsPanel.Controls)
            {
                button.BackColor = Settings.Default.DarkBackColor;
                button.ForeColor = Settings.Default.DarkForeColor;
            }

            foreach(Button button in memoryPanel.Controls)
            {
                button.BackColor = Settings.Default.DarkBackColor;
                button.ForeColor = Settings.Default.DarkForeColor;
            }
            mainPanel.BackColor = Settings.Default.DarkBackColor;

            resultTextBox.AutoSize = false;
            resultTextBox.BorderStyle = BorderStyle.None;
            resultTextBox.BackColor = Settings.Default.DarkBackColor;
            resultTextBox.ForeColor = Settings.Default.DarkForeColor;

            operationTextBox.AutoSize = false;
            operationTextBox.BorderStyle = BorderStyle.None;
            operationTextBox.BackColor = Settings.Default.DarkBackColor;
            operationTextBox.ForeColor = Settings.Default.DarkForeColor;

            OnResize(EventArgs.Empty);
        }
Example #6
0
        public void ShouldPerformSubsequentOperation()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("12");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();
            testOperatorClass.setOperatorFlag("Multiply");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("28",testOperatorClass.TextBoxCalculatedResult);
        }
        public void AddElementCommand_AddOperator_CallsCorrespondingMethod(string @operator, Operator argumentOperator)
        {
            // Arrange
            var firstOperand   = "1";
            var expectedResult = firstOperand + @operator;

            this.calculatorMock.Setup(m => m.AddOperator(It.IsAny <Operator>())).Returns(true);
            testee.AddElementCommand.Execute(firstOperand);

            // Act
            testee.AddElementCommand.Execute(@operator);

            // Assert
            calculatorMock.Verify(m => m.AddOperator(argumentOperator), Times.Once);
            Assert.AreEqual(testee.Result, expectedResult);
        }
Example #8
0
 public OperatorNode(Operator op)
 {
     this.op = op;
 }
Example #9
0
        public void WhenUsingResultValueShouldNotModifyUserInput()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("1");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();
            testOperatorClass.Combine("3");

            Assert.AreEqual("3", testOperatorClass.TextBoxUserInput);
        }
Example #10
0
        private string ConcatenateUsingObject(string firstString, string secondString)
        {
            Operator testObject = new Operator();
            testObject.Combine(firstString);
            testObject.Combine(secondString);

            return testObject.TextBoxUserInput;
        }
Example #11
0
        public Tuple <bool, double> Rechnen(Operator newOperator)
        {
            var success = calculator.OperatorAuswerten(newOperator);

            return(new Tuple <bool, double>(success, calculator.Zwischenergebnis));
        }
Example #12
0
        public void WhenStartingWithResultShouldPerformNewOperation()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("3");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();
            testOperatorClass.Combine("3");
            testOperatorClass.setOperatorFlag("Add");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("5",testOperatorClass.TextBoxCalculatedResult);
        }
Example #13
0
 private void Clear()
 {
     _lhsNumber = 0;
     _currOperator = Operator.None;
     resultTextBox.Text = "0";
     operationTextBox.Clear();
 }
Example #14
0
        private void AppendOperator(char op)
        {
            double res;

            if(!_resetResult)
                Calculate();

            if (!double.TryParse(resultTextBox.Text, out res)) return;

            _currOperator = op.ToOperator();
            _lhsNumber = res;
            operationTextBox.Text = _lhsNumber + " " + op.ToString();

            _resetResult = true;
        }
 private void ExecuteNewOperator(Operator newOperator)
 {
     switch (newOperator)
     {
         case Operator.MSign:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 valueSoFar = Convert.ToDecimal(textBoxDisplay.Text);
                 valueSoFar = valueSoFar * -1;
                 textBoxDisplay.Text = valueSoFar.ToString();
             }
             break;
         case Operator.Back:
             string value = textBoxDisplay.Text;
             if (value.Length > 0)
             {
                 value = value.Remove(value.Length - 1);
                 textBoxDisplay.Text = value;
             }
             else
             {
                 textBoxDisplay.Text = value;
             }
             break;
         case Operator.Clear:
             textBoxDisplay.Text = "";
             lastOperator = Operator.None;
             numberHitSinceLastOperator = false;
             break;
         case Operator.MAdd:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 memory = memory + Convert.ToDecimal(textBoxDisplay.Text);
             }
             break;
         case Operator.MR:
             textBoxDisplay.Text = memory.ToString();
             break;
         case Operator.MC:
             memory = 0;
             break;
         case Operator.MS:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 memory = Convert.ToDecimal(textBoxDisplay.Text);
             }
             break;
         case Operator.MSub:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 memory = memory - Convert.ToDecimal(textBoxDisplay.Text);
             }
             break;
         case Operator.Percent:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 valueSoFar = Convert.ToDecimal(textBoxDisplay.Text);
                 valueSoFar = valueSoFar / 100;
                 textBoxDisplay.Text = valueSoFar.ToString();
             }
             break;
         case Operator.Reciprocal:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 valueSoFar = Convert.ToDecimal(textBoxDisplay.Text);
                 if (valueSoFar == 0)
                     valueSoFar = 0;
                 valueSoFar = 1 / valueSoFar;
                 textBoxDisplay.Text = valueSoFar.ToString();
             }
             break;
         case Operator.Root:
             if (textBoxDisplay.Text == "")
             {
                 // Do nothing
             }
             else
             {
                 valueSoFar = (decimal)Math.Sqrt((double)Convert.ToDecimal(textBoxDisplay.Text));
                 textBoxDisplay.Text = valueSoFar.ToString();
             }
             break;
     }
 }
Example #16
0
 private void PushOperator(Operator cmdOp)
 {
     if (operatorStack.Count == 0 || cmdOp.Priority > operatorStack.Peek().Priority)
         operatorStack.Push(cmdOp);
     else if (cmdOp.Priority == operatorStack.Peek().Priority && cmdOp.Associativity == Associativity.Right)
         operatorStack.Push(cmdOp);
     else
     {
         while (operatorStack.Count > 0 && cmdOp.Priority <= operatorStack.Peek().Priority)
             tokens.Add(operatorStack.Pop());
         operatorStack.Push(cmdOp);
     }
 }
Example #17
0
 public CalculatorMain()
 {
     InitializeComponent();
     _newOperator = new Operator();
 }
Example #18
0
        private void Calculate()
        {
            double rhs;
            double res = 0;

            if (!double.TryParse(resultTextBox.Text, out rhs)) return;

            switch (_currOperator)
            {
                case Operator.None:
                    return;
                case Operator.Plus:
                    res = _lhsNumber + rhs;
                    break;
                case Operator.Minus:
                    res = _lhsNumber - rhs;
                    break;
                case Operator.Multiply:
                    res = _lhsNumber * rhs;
                    break;
                case Operator.Divide:
                    if (Math.Abs(rhs) < 0.0000001)
                    {
                        MessageBox.Show(Resources.DivideByZeroText);
                        break;
                    }

                    res = _lhsNumber / rhs;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            operationTextBox.Clear();
            _lhsNumber = 0;
            _currOperator = Operator.None;
            resultTextBox.Text = res.ToString(CultureInfo.CurrentCulture);
        }
Example #19
0
        public void SubtractTwoNumbers()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("12");
            testOperatorClass.setOperatorFlag("Subtract");
            testOperatorClass.Combine("2");
            testOperatorClass.resultCalculation();

            Assert.AreEqual("10", testOperatorClass.TextBoxCalculatedResult);
        }
Example #20
0
        public void WhenPressingBackspaceButtonRemovesText()
        {
            Operator testOperatorClass = new Operator();
            testOperatorClass.Combine("154");
            testOperatorClass.Remove();

            Assert.AreEqual("15",testOperatorClass.TextBoxUserInput);
        }
Example #21
0
 public void AddOperator(Operator Operator)
 {
     Elements.Add(Operator);
 }