public void MathExpressionContext_Can_Forget_Variable()
 {
     MathExpressionContext context = new MathExpressionContext();
     context.Define("x", 42);
     Assert.AreEqual(42, context.Resolve("x").Evaluate(context));
     context.Forget("x");
     var exception = Assert.Throws<MathExpressionException>(() => context.Resolve("x"));
     Assert.AreEqual("The variable 'x' has not been defined.", exception.Message);
 }
 public void MathExpressionContext_Can_Define_And_Resolve_Expression()
 {
     MathExpressionContext context = new MathExpressionContext();
     context.Define("x", 5);
     context.Define("y", MathExpression.Parse("5x"));
     Assert.AreEqual(25, context.Resolve("y").Evaluate(context));
 }
 public void MathExpressionContext_Undefined_Variable_Throws()
 {
     MathExpressionContext context = new MathExpressionContext();
     var exception = Assert.Throws<MathExpressionException>(() => context.Resolve("x"));
     Assert.AreEqual("The variable 'x' has not been defined.", exception.Message);
 }
 public void MathExpressionContext_Can_Redefine_Variable()
 {
     MathExpressionContext context = new MathExpressionContext();
     context.Define("x", 42);
     Assert.AreEqual(42, context.Resolve("x").Evaluate(context));
     context.Define("x", 107);
     Assert.AreEqual(107, context.Resolve("x").Evaluate(context));
 }