public void GetNativeMethod() { AttributeExpression expression = new AttributeExpression(new ConstantExpression(1), "GetType"); BindingEnvironment environment = new BindingEnvironment(); var result = expression.Evaluate(environment); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(MethodInfo)); }
public void EvaluateAttributeExpressionOnClassProperty() { AttributeExpression expression = new AttributeExpression(new NameExpression("Calculator"), "Value"); BindingEnvironment environment = new BindingEnvironment(); environment.SetValue("Calculator", typeof(Calculator)); object result = expression.Evaluate(environment); Assert.IsNotNull(result); Assert.AreEqual(3, result); }
public void EvaluateAttributeExpressionOnNativeObjectProperty() { AttributeExpression expression = new AttributeExpression(new NameExpression("adam"), "FirstName"); BindingEnvironment environment = new BindingEnvironment(); environment.SetValue("adam", new Person() { FirstName = "Adam" }); object result = expression.Evaluate(environment); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(string)); Assert.AreEqual("Adam", result); }
public void EvaluateAttributeExpression() { AttributeExpression expression = new AttributeExpression(new NameExpression("module"), "foo"); BindingEnvironment environment = new BindingEnvironment(); BindingEnvironment modenv = new BindingEnvironment(); modenv.SetValue("foo", "bar"); environment.SetValue("module", modenv); object result = expression.Evaluate(environment); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(string)); Assert.AreEqual("bar", result); Assert.IsNotNull(expression.Expression); Assert.AreEqual("foo", expression.Name); }
public void RaiseWhenEvaluateAttributeExpression() { AttributeExpression expression = new AttributeExpression(new NameExpression("module"), "spam"); BindingEnvironment environment = new BindingEnvironment(); BindingEnvironment modenv = new BindingEnvironment(); environment.SetValue("module", modenv); try { expression.Evaluate(environment); Assert.Fail("Exception expected"); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(AttributeError)); Assert.AreEqual("'module' object has no attribute 'spam'", ex.Message); } }
private IExpression CompileTerm() { IExpression term = this.CompileSimpleTerm(); if (term == null) return null; while (true) { if (this.TryCompile(TokenType.Operator, ".")) term = new AttributeExpression(term, this.CompileName(true).Value); else if (this.TryCompile(TokenType.Separator, "(")) term = this.CompileCallExpression(term); else if (TryCompile(TokenType.Separator, "[")) term = this.CompileIndexedExpression(term); else break; } return term; }