public void Evaluate_WhenCalled_ReturnsExpected() { var expression = new FuncExpression <SomeClass>() { Left = new ValueExpression <SomeClass>(5.0), Right = new ValueExpression <SomeClass>(9.0), Operation = new Operation((a, b) => a + b, "+"), }; var someClass = new SomeClass(); Assert.That(expression.Evaluate(someClass), Is.EqualTo(14.0)); }
public void Evaluate_WhenClonedAndCloneHasRightChanged_Unchanged() { var expression = new FuncExpression <SomeClass>() { Left = new ValueExpression <SomeClass>(5.0), Right = new ValueExpression <SomeClass>(9.0), Operation = new Operation((a, b) => a + b, "+"), }; var clone = (FuncExpression <SomeClass>)expression.Clone(); clone.Right = new ValueExpression <SomeClass>(3.0); var someClass = new SomeClass(); Assert.That(expression.Evaluate(someClass), Is.EqualTo(14.0)); Assert.That(clone.Evaluate(someClass), Is.EqualTo(8.0)); }