protected static string[] ApplyAstOpt(Parser AST, ChangeVisitor opt) { AST.root.Visit(opt); var pp = new PrettyPrintVisitor(); AST.root.Visit(pp); return(pp.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)); }
public override void AfterAct(ActBase act) { var visitor = new ChangeVisitor(); visitor.Visit(_After.Body); var newValue = Expression.Lambda(visitor.Result).Compile().DynamicInvoke(); if (!Equals(newValue, _FutureValue)) { throw new SmartTestException(string.Format(Resource.ChangeWrongly, _FutureValue, newValue)); } }
protected static string[] TestASTOptimization(string sourceCode, ChangeVisitor optimization) => ApplyAstOpt(BuildAST(sourceCode), optimization);