public void UpdateExpression() { var expression = ParseExpression <UpdateExpression>("x++"); var visitor = new AstVisitorEventSource(); UpdateExpression updateExpression = null; Identifier argument = null; visitor.VisitingUpdateExpression += (_, arg) => updateExpression = arg; visitor.VisitedIdentifier += (_, arg) => argument = arg; visitor.Visit(expression); Assert.Same(expression, updateExpression); Assert.Same(expression.Argument, argument); }
public void MemberExpression() { var expression = ParseExpression <MemberExpression>("foo.bar"); var visitor = new AstVisitorEventSource(); MemberExpression memberExpression = null; var identifiers = new System.Collections.Generic.List <Identifier>(); visitor.VisitingMemberExpression += (_, arg) => memberExpression = arg; visitor.VisitedIdentifier += (_, arg) => identifiers.Add(arg); visitor.Visit(expression); Assert.Same(expression, memberExpression); Assert.Equal(2, identifiers.Count); Assert.Same(expression.Object, identifiers[0]); Assert.Same(expression.Property, identifiers[1]); }
public void Property() { var expression = ParseExpression <ObjectExpression>("{ x: 42 }"); var visitor = new AstVisitorEventSource(); Property property = null; Identifier key = null; Literal value = null; visitor.VisitingProperty += (_, arg) => property = arg; visitor.VisitedIdentifier += (_, arg) => key = arg; visitor.VisitedLiteral += (_, arg) => value = arg; visitor.Visit(expression); var expectedProperty = expression.Properties.Single().As <Property>(); Assert.Same(expectedProperty, property); Assert.Same(expectedProperty.Key, key); Assert.Same(expectedProperty.Value, value); }