public void TestEvaluate() { var mockExpression = Mock.Of <IExpression>(e => e.Evaluate(It.IsAny <IDictionary <string, object> >()) == (object)1); var expression = new ParenthesisedExpression(mockExpression); Assert.AreEqual(1, expression.Evaluate(null)); }
internal Expression ParseParenthesised() // E -> (E) E' { if (this.input.Read() is OpenParenthesisToken) { var internalTokens = new List <Token>(); int parenthesisNum = 1; while (true) { var t = this.input.Read(); if (t == null) { throw new ArgumentException("Parenthesis not closed."); } else if (t is CloseParenthesisToken) { if (--parenthesisNum <= 0) { break; } } else if (t is OpenParenthesisToken) { ++parenthesisNum; } internalTokens.Add(t); } Expression ex = Parse(internalTokens); if (ex != null) { Expression res = new ParenthesisedExpression() { Oprand = ex }; return(this.ParseExPrime(res)); } else { throw new ArgumentException("Failed parse Parenthesised Expression"); } } else { this.input.Unread(); return(null); } }
public void TestNullEvaluate() { var expression = new ParenthesisedExpression(null); Assert.AreEqual(1, expression.Evaluate(null)); }