private int GetResultOfCalculationInArabicFormat(string reversePolishSignature) { var stack = new Stack <string>(); var resultOfCurrentOperation = 0; var listElementsOfExpression = _parser.InitializeListOfElements(reversePolishSignature); foreach (var elementOfExpression in listElementsOfExpression) { if (!ParserArithmeticExpression.IsSignOfOperation(elementOfExpression)) { stack.Push(elementOfExpression); } else { resultOfCurrentOperation = CalculateCurrentOperation(stack, elementOfExpression, resultOfCurrentOperation); stack.Push(resultOfCurrentOperation.ToString()); //Need invariant culture } } return(int.Parse(stack.Pop())); }
public void ConvertRomanNumberToArabic_CorrectValue() { if (!IsInitializedDictionary) InitializeDictionary(); var parser = new ParserArithmeticExpression(); foreach (var romanNumber in dictionaryOfArabicAndRomanNumbers.Values) { var arabicNumber = dictionaryOfArabicAndRomanNumbers.FirstOrDefault(x => x.Value == romanNumber).Key; ; var expectedArabicNumber = arabicNumber; var actualArabicNumberAfterConverting = parser.ConvertRomanNumberToArabic(romanNumber); Assert.AreEqual(expectedArabicNumber, actualArabicNumberAfterConverting); } }
public void RomanCalculatorUnitTest_CorrectnessConvertingRomanNumbersToArabic() { if (!IsInitializedDictionary) InitializeDictionary(); var parser = new ParserArithmeticExpression(); foreach (var arabicNumber in dictionaryOfArabicAndRomanNumbers.Keys) { var romanNumber = dictionaryOfArabicAndRomanNumbers[arabicNumber]; var expectedArabicNumber = arabicNumber; var actualArabicNumberAfterConverting = parser.ConvertRomanNumberToArabic(romanNumber); Assert.AreEqual(expectedArabicNumber, actualArabicNumberAfterConverting); } }
public void ConvertInputStringToReversePolishSignature_CorrectValue() { var parser = new ParserArithmeticExpression(); const string inputArithmeticExpression = "(VII*IX)*(IX+(LVII*I))"; //Your constant expectedReversePolishSignature scares me const string expectedReversePolishSignature = "$VII$$IX$*$IX$$LVII$$I$*+*"; var actualReversePolishSignature = parser.ConvertInputStringToReversePolishSignature(inputArithmeticExpression); Assert.AreEqual(expectedReversePolishSignature, actualReversePolishSignature); }