Exemplo n.º 1
0
        public double CalculateEquation(string equation)
        {
            var numberCharacterBuilder = new StringBuilder();

            var numbers   = new List <int>();
            var operators = new List <char>();

            double result  = 0;
            int    counter = 0;

            var Operation = new OperatorFactory();

            calcManager = new CalculationManager();

            var updatedPreviousResult = 0;
            var updatedCurrentValue   = 0;

            foreach (var character in equation)
            {
                if (EquationHelper.IsCharacterNumber(character))
                {
                    numberCharacterBuilder.Append(character);
                }
                else
                {
                    if (NumbersListValidator.IsListEmpty(numbers))
                    {
                        updatedPreviousResult = UpdateCalcManagerPrevious(numbers, numberCharacterBuilder.ToString());
                        numberCharacterBuilder.Clear();
                    }
                    else
                    {
                        updatedCurrentValue = UpdateCalcManagerCurrent(numbers, numberCharacterBuilder.ToString());
                        numberCharacterBuilder.Clear();

                        var NextOperation = Operation.GetOperator(operators[counter - 1]);
                        result = NextOperation.DoMaths(updatedPreviousResult, updatedCurrentValue);
                        updatedPreviousResult = UpdateCalcManagerPrevious(numbers, result.ToString());
                    }
                    counter++;
                    operators.Add(character);
                }
            }
            updatedCurrentValue = UpdateCalcManagerCurrent(numbers, numberCharacterBuilder.ToString());

            var LastOperation = Operation.GetOperator(operators[operators.Count() - 1]);

            result = LastOperation.DoMaths(updatedPreviousResult, updatedCurrentValue);

            return(result);
        }
Exemplo n.º 2
0
        public void TryingToGetHigherOperator()
        {
            OperatorFactory factory = GetOperatorFactory();
            Operator        op      = factory.GetOperator(OperatorKeys.HigherKey);

            Assert.IsTrue(op.IsSameOperator(Operator.higher));
        }
Exemplo n.º 3
0
        public void TryingToGetLessOperator()
        {
            OperatorFactory factory = GetOperatorFactory();
            Operator        op      = factory.GetOperator(OperatorKeys.LessKey);

            Assert.IsTrue(op.IsSameOperator(Operator.less));
        }
Exemplo n.º 4
0
        public void TryingToGetEqualOperator()
        {
            OperatorFactory factory = GetOperatorFactory();
            Operator        op      = factory.GetOperator(OperatorKeys.EqualKey);

            Assert.IsTrue(op.IsSameOperator(Operator.equal));
        }
Exemplo n.º 5
0
        public void Can_GetOperator(Type expectedType, OperatorType operatorType)
        {
            // Arrange
            var service = new OperatorFactory(new List <IOperatorService> {
                new AddOperatorService(),
                new SubtractOperatorService(),
            });

            // Act
            var operatorService = service.GetOperator(operatorType);

            // Assert
            Assert.IsType(expectedType, operatorService);
        }
Exemplo n.º 6
0
 private void InitializeForm()
 {
     correctCount         = 0;
     incorrectCount       = 0;
     currentScore         = 0;
     topScore             = GetLastTopScore();
     timeTicker           = timeLimit;
     btnChkAnswer.Enabled = true;
     label2.ForeColor     = Color.DarkGreen;
     label2.Text          = timeTicker.ToString();
     lblCorrect.Text      = correctCount.ToString();
     lblIncorrect.Text    = incorrectCount.ToString();
     lblTopScore.Text     = topScore.ToString();
     lblCurrentScore.Text = currentScore.ToString();
     lblOutcome.Text      = "";
     history = new List <Tuple <string, string> >();
     ops     = OperatorFactory.GetOperator(cboOps.SelectedItem.ToString());
     SetQuiz();
     timer1.Start();
 }
        public static IEquationNode Calculation(string equation)
        {
            if (EquationHelper.IsWholeEquationWithinBrackets(equation) && EquationHelper.EquationContainsAnUnbracketedOperator(equation))
            {
                return(Calculation(equation.Substring(1, equation.Length - 2)));
            }

            if (EquationHelper.IsStringNumber(equation))
            {
                return(new Number(equation));
            }

            foreach (var op in EquationHelper.orderedOperators)
            {
                var bracketCounter = 0;
                for (int i = 0; i < equation.Length; i++)
                {
                    if (equation[i] == '(')
                    {
                        bracketCounter++;
                    }
                    else if (equation[i] == ')')
                    {
                        bracketCounter--;
                    }

                    if (equation[i] == op && bracketCounter == 0)
                    {
                        return(new EquationNode(
                                   equation.Substring(0, i),
                                   equation.Substring(i + 1),
                                   Operation.GetOperator(equation[i])));
                    }
                }
            }
            throw new InvalidEquationException("Equation is Invalid!");
        }
Exemplo n.º 8
0
 private void CboOps_SelectedIndexChanged(object sender, EventArgs e)
 {
     ops = OperatorFactory.GetOperator(cboOps.SelectedItem.ToString());
 }
 public IOperation SetOperation(string operation)
 {
     _operatorTask = new OperatorTask(_operatorFactory.GetOperator(operation));
     return(_operatorTask.GetOperation());
 }