protected override ITestResult ExecuteTest(IContext ctx, string test) { var errors = new StringBuilder(); string score = null; ctx.SetFunction( "NotifyResult", new Action<string, string>((name, result) => { }) ); ctx.SetFunction( "NotifyError", new Action<string, object>((name, error) => errors.AppendLine(name + ": " + error.ToString())) ); ctx.SetFunction( "NotifyScore", new Action<string>(p => score = p) ); try { ctx.ExecuteFile(test); ctx.Execute(@" BenchmarkSuite.RunSuites({ NotifyResult: NotifyResult, NotifyError: NotifyError, NotifyScore: NotifyScore });"); } catch (Exception ex) { errors.AppendLine("Exception: " + ex.GetBaseException().Message); } if (errors.Length > 0) return new TestError(errors.ToString()); return new TestResult(Double.Parse(score, CultureInfo.InvariantCulture)); }