public void ObjectListElementExpression() { var variableObjectExpr = new ObjectVariableExpression("a", typeof(A)); var listExpr = new ObjectPropertyExpression(variableObjectExpr, typeof(A).GetProperty("Bs")); var indexExpr = new NumericLiteralExpression(1); var expr = new ObjectListElementExpression(listExpr, indexExpr); B b; A a = new A { Bs = new[] { new B { Id = 0 }, b = new B { Id = 1 }, } }; object instance = expr.GetInstance(new Dictionary <string, object> { { "a", a } }); Assert.Same(b, instance); }
public void NumberListElementExpression() { var variableObjectExpr = new ObjectVariableExpression("a", typeof(A)); var listExpr = new ObjectPropertyExpression(variableObjectExpr, typeof(A).GetProperty("Ints")); var indexExpr = new NumericLiteralExpression(1); var expr = new NumericListElementExpression(listExpr, indexExpr); A a = new A { Ints = new List <int> { 1, 2 } }; double value = expr.Evaluate(new Dictionary <string, object> { { "a", a } }); Assert.Equal(2.0, value); }