コード例 #1
0
    private double DoCalculation()
    {
        switch (calculation)
        {
        case CalculationType.addition:
            addition.leftOperand  = firstNumber.Evaluate();
            addition.rightOperand = secondNumber.Evaluate();
            return(addition.Evaluate());

        case CalculationType.subtraction:
            subtraction.leftOperand  = firstNumber.Evaluate();
            subtraction.rightOperand = secondNumber.Evaluate();
            return(subtraction.Evaluate());

        case CalculationType.multiplication:
            multiplication.leftOperand  = firstNumber.Evaluate();
            multiplication.rightOperand = secondNumber.Evaluate();
            return(multiplication.Evaluate());

        case CalculationType.division:
            division.leftOperand  = firstNumber.Evaluate();
            division.rightOperand = secondNumber.Evaluate();
            return(division.Evaluate());

        default:
            return(0);
        }
    }
コード例 #2
0
        public void EvaluateWithTwoNormalOperands()
        {
            var left = new Expression { Value = 1 };
            var right = new Expression { Value = 2 };

            var expression = new SubtractionExpression(left, right);
            Assert.AreEqual(-1, expression.Evaluate());
        }
コード例 #3
0
        public void EvaluateWithTwoNormalOperands()
        {
            var left  = new ConstantExpression(1);
            var right = new ConstantExpression(2);

            var expression = new SubtractionExpression(left, right);

            Assert.AreEqual(-1, expression.Evaluate());
        }
コード例 #4
0
        public void EvaluateWithOneSubtractionExpression()
        {
            var left = new Expression { Value = 1 };
            var leftTwo = new Expression { Value = 2 };
            var rightTwo = new Expression { Value = 3 };
            var right = new SubtractionExpression(leftTwo, rightTwo);

            var expression = new SubtractionExpression(left, right);
            Assert.AreEqual(2, expression.Evaluate());
        }
コード例 #5
0
        public void EvaluateWithOneSubtractionExpression()
        {
            var left     = new ConstantExpression(1);
            var leftTwo  = new ConstantExpression(2);
            var rightTwo = new ConstantExpression(3);
            var right    = new SubtractionExpression(leftTwo, rightTwo);

            var expression = new SubtractionExpression(left, right);

            Assert.AreEqual(2, expression.Evaluate());
        }