Пример #1
0
        public void ConvertInputStringToReversePolishSignature_InputExpressionIsProperlyConvertedInReversePolishSignature()
        {
            var          parser = new ArithmeticExpressionParser();
            const string inputArithmeticExpression = "(VII*IX)*(IX+(LVII*I))";

            const string expectedReversePolishSignature = "$VII$$IX$*$IX$$LVII$$I$*+*";
            var          actualReversePolishSignature   = parser.ConvertInputStringToReversePolishSignature(inputArithmeticExpression);

            Assert.AreEqual(expectedReversePolishSignature, actualReversePolishSignature);
        }
Пример #2
0
        private string RecoursiveDescent(string input)
        {
            var result  = ArithmeticExpressionParser.Parse(input);
            var builder = new StringBuilder();

            builder.AppendLine($"Прочитанная строка: {result.ResultString};")
            .Append("Перечень состояний:");

            foreach (var item in result.States)
            {
                builder.Append(" ➜ ").Append(item);
            }

            return(builder.ToString());
        }
Пример #3
0
        public void ConvertArabicNumberToRoman_ArabicNumberIsProperlyConvertedToRomanNotation()
        {
            if (!_isInitializedDictionary)
            {
                InitializeDictionary();
            }

            var parser = new ArithmeticExpressionParser();

            foreach (var romanNumber in _dictionaryOfArabicAndRomanNumbers.Values)
            {
                var arabicNumber        = _dictionaryOfArabicAndRomanNumbers.FirstOrDefault(x => x.Value == romanNumber).Key;
                var expectedRomanNumber = romanNumber;
                var actualRomanNumberAfterConverting = parser.ConverterOfNumbers.ConvertArabicNumberToRoman(arabicNumber);
                Assert.AreEqual(expectedRomanNumber, actualRomanNumberAfterConverting);
            }
        }
Пример #4
0
        public void ConvertRomanNumberToArabic_RomanNumberIsProperlyConvertedToArabicNotation()
        {
            if (!_isInitializedDictionary)
            {
                InitializeDictionary();
            }

            var parser = new ArithmeticExpressionParser();

            foreach (var arabicNumber in _dictionaryOfArabicAndRomanNumbers.Keys)
            {
                var romanNumber = _dictionaryOfArabicAndRomanNumbers[arabicNumber];

                var expectedArabicNumber = arabicNumber;
                var actualArabicNumberAfterConverting = parser.ConverterOfNumbers.ConvertRomanNumberToArabic(romanNumber);
                Assert.AreEqual(expectedArabicNumber, actualArabicNumberAfterConverting);
            }
        }
Пример #5
0
        public static void StartParser()
        {
            var arithparser = new ArithmeticExpressionParser<decimal>();
            string input = string.Empty;

            while(true)
            {
                try
                {
                    Console.Write(">>>");
                    input = Console.ReadLine();
                    Console.WriteLine(arithparser.Parse(input));
                }
                catch(Exception e)
                {
                    if(input == "exit")
                        Environment.Exit(0);
                    else
                        Console.WriteLine("Error: {0}",e.Message);
                }
            }
        }