예제 #1
0
        public void Expressao_complexa()
        {
            var converter = new InfixToPostfixConverter();
            var result    = converter.Convert("3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3");

            result.Should().Be("3 4 2 * 1 5 - 2 3 ^ ^ / +");
        }
예제 #2
0
        public void Soma_com_dois_operandos()
        {
            var converter = new InfixToPostfixConverter();
            var result    = converter.Convert("2 + 2");

            result.Should().Be("2 2 +");
        }
예제 #3
0
        public void Maior_precedencia_com_associatividade_direita_para_esquerda()
        {
            var converter = new InfixToPostfixConverter();
            var result    = converter.Convert("4 * 5 ^ 2");

            result.Should().Be("4 5 2 ^ *");
        }
예제 #4
0
        public void Soma_com_parentesis_e_multiplicacao()
        {
            var converter = new InfixToPostfixConverter();
            var result    = converter.Convert("(2 + 2) * 4");

            result.Should().Be("2 2 + 4 *");
        }
예제 #5
0
        public void Soma_e_multiplicacao()
        {
            var converter = new InfixToPostfixConverter();
            var result    = converter.Convert("2 + 2 * 4");

            result.Should().Be("2 2 4 * +");
        }
        public void ConversionTest(string infixExpression, string expected)
        {
            var    postfixList       = InfixToPostfixConverter.Convert(infixExpression);
            string postfixExpression = "";

            foreach (var unit in postfixList)
            {
                postfixExpression += unit + " ";
            }
            Assert.AreEqual(expected, postfixExpression);
        }
예제 #7
0
        public void EvaluatesCorrectly(string expressionString, float expectedResult)
        {
            // arrange
            var expressionNodeFactory   = new ExpressionNodeFactory();
            var expressionTokenizer     = new ExpressionTokenizer();
            var infixToPostfixConverter = new InfixToPostfixConverter();
            var expressionFactory       = new ExpressionFactory(expressionNodeFactory, expressionTokenizer, infixToPostfixConverter);

            // act
            var expression = expressionFactory.MakeExpression(expressionString);
            var result     = expression.Evaluate();

            // assert
            Assert.Equal(expectedResult, result);
        }
예제 #8
0
        public void EvaluatesCorrectlyWithAVariableAndSomeStuff()
        {
            // arrange
            var expressionNodeFactory   = new ExpressionNodeFactory();
            var expressionTokenizer     = new ExpressionTokenizer();
            var infixToPostfixConverter = new InfixToPostfixConverter();
            var expressionFactory       = new ExpressionFactory(expressionNodeFactory, expressionTokenizer, infixToPostfixConverter);

            // act
            var expression = expressionFactory.MakeExpression("(bananas + 1) / 5");

            expression.EvaluationContext.GetVariable("bananas").Value = 4.0f;
            var result = expression.Evaluate();

            // assert
            Assert.Equal(1.0f, result);
        }
예제 #9
0
 public Expression()
 {
     parser            = new ExpressionParser();
     postfixConverter  = new InfixToPostfixConverter();
     postfixCalculator = new PostfixCalculator();
 }