public ExpressionEvaluatorFacade() { compiler = new ReportingLanguageCompiler(); this.context = new ExpressionContext(null); context.ResolveUnknownVariable += VariableStore; context.ResolveMissingFunction += FunctionStore; }
public void Can_Compile_Uknown_Variable() { const string expression = "varName"; var compiler = new ReportingLanguageCompiler(); IExpression compiled = compiler.CompileExpression<string>(expression); var context = new ExpressionContext(null); context.ResolveUnknownVariable += (sender, args) => { Assert.That(args.VariableName, Is.EqualTo("varName")); args.VariableValue = 123.456; }; Assert.That(compiled.Evaluate(context), Is.EqualTo("123,456")); }
public void Can_Compile_Qualified_Name() { const string expression = "hello.goodbye.darlin.boy"; var compiler = new ReportingLanguageCompiler(); IExpression expr = compiler.CompileExpression<string>(expression); var context = new ExpressionContext(null); context.ResolveUnknownQualifiedName += (sender, args) => { Assert.That(args.QualifiedName.Length, Is.EqualTo(4)); Assert.That(args.QualifiedName[0], Is.EqualTo("hello")); Assert.That(args.QualifiedName[1], Is.EqualTo("goodbye")); Assert.That(args.QualifiedName[2], Is.EqualTo("darlin")); Assert.That(args.QualifiedName[3], Is.EqualTo("boy")); args.Value = "GitErDone"; }; Assert.That(expr.Evaluate(context), Is.EqualTo("GitErDone")); }