public Evaluate ( IContext context ) : object | ||
context | IContext | |
return | object |
public object Evaluate(IContext context)
{
object obj = this.Expression.Evaluate(context);
object[] parameters = null;
if (this.arguments != null)
{
List<object> values = new List<object>();
foreach (IExpression argument in this.arguments)
values.Add(argument.Evaluate(context));
parameters = values.ToArray();
}
// TODO if undefined, do nothing
if (obj == null)
return null;
return ObjectUtilities.GetIndexedValue(obj, parameters);
}
public void EvaluateArrayVariableExpression() { Context context = new Context(); context.SetValue("array", new string[] { "one", "two", "three" }); IExpression expression = new IndexedExpression(new VariableExpression("array"), new IExpression[] { new ConstantExpression(1) }); object result = expression.Evaluate(context); Assert.IsNotNull(result); Assert.AreEqual("two", result); }