public void Evaluate_WithVariableReference_ReturnsValue()
        {
            const string variableName = "x";
            const double variableValue = 1;
            VariableReference reference=new VariableReference(variableName,variableValue);

            Assert.AreEqual(1,reference.Evaluate());
        }
        public void ToString_WithVariableReference_ReturnsVariableName()
        {
            const string variableName = "x";
            const double variableValue = 1;
            VariableReference reference=new VariableReference(variableName,variableValue);

            Assert.AreEqual("x",reference.ToString());
        }
        public void Evaluate_WithMultOperation_ReturnsResult()
        {
            IMathExpression leftOperand = new VariableReference("x", 1);
            const char operationChar = '*';
            IMathExpression rightOperand = new VariableReference("y", 1);

            MathOperation operation = new MathOperation(leftOperand,
                operationChar,
                rightOperand);

            Assert.AreEqual(1, operation.Evaluate());
        }
        public void Evaluate_WithReferences_ReturnsResult()
        {
            // x+ (y*2)
            IMathExpression leftOperand = new VariableReference("x", 4);
            const char operationChar = '+';
            IMathExpression rightOperand = new VariableReference("y", 2);

            MathOperation operation = new MathOperation(leftOperand,
                operationChar,
                new MathOperation(rightOperand,'*',new ConstantReference(2)));

            Assert.AreEqual(8, operation.Evaluate());
        }