public void NotExpressionReturnsOppositeValueForConstantValue()
 {
     {
         // !false => true
         IExpression ne = new NotExpression(new ConstantTerminalExpression(false));
         Assert.AreEqual(true, ne.Interpret(new Context()));
     }
     {
         // !true => false
         IExpression ne = new NotExpression(new ConstantTerminalExpression(true));
         Assert.AreEqual(false, ne.Interpret(new Context()));
     }
 }
 public void NotExpressionReturnsOppositeValueForVariable()
 {
     {
         // !a => true for a = false
         IExpression ne = new NotExpression(new VariableTerminalExpression("a"));
         Assert.AreEqual(true, ne.Interpret(new Context(new Dictionary <string, bool>()
         {
             { "a", false }, { "b", true }
         })));
     }
     {
         // !b => false for b = true
         IExpression ne = new NotExpression(new VariableTerminalExpression("b"));
         Assert.AreEqual(false, ne.Interpret(new Context(new Dictionary <string, bool>()
         {
             { "a", false }, { "b", true }
         })));
     }
 }