public static NumberTerm MakeOperation(this NumberTerm firstNumber, NumberTerm secondNumber) { decimal result = 0; switch (secondNumber.Sign) { case ArithmeticSign.Mul: result = firstNumber.Digit * secondNumber.Digit; break; case ArithmeticSign.Del: result = firstNumber.Digit / secondNumber.Digit; break; case ArithmeticSign.Sum: result = firstNumber.Digit + secondNumber.Digit; break; case ArithmeticSign.Sub: result = firstNumber.Digit - secondNumber.Digit; break; } return(new NumberTerm(firstNumber.Sign, result)); }
public void CalculateInnerExpressionTest_CorrectCalculate(NumberTerm expectedResult, List <ITerm> innerExpression) { var actualResult = Calculate.CalculateInnerExpression(innerExpression); Assert.AreEqual(expectedResult, actualResult, $"Incorrect inner expression calculation."); }
private List <NestedExpression> GetReplacedCalculatedNestedExpressions(List <NestedExpression> nestedExpressions, int i, NumberTerm calculateInnerExpression) { int innerIndex = nestedExpressions[i].Index; nestedExpressions[i - 1].Expression[innerIndex] = calculateInnerExpression; nestedExpressions.RemoveAt(i); return(nestedExpressions); }
public void MakeOperationTest_CorrectCalculate(NumberTerm firstNumber, NumberTerm secondNumber, NumberTerm expectedResult) { NumberTerm actualResult = firstNumber.MakeOperation(secondNumber); Assert.AreEqual(expectedResult, actualResult, $"Operation: {firstNumber}{secondNumber};"); }