protected sealed override async Task <bool> DoAssessmentAsync() { if (CodeRunner == null) { throw new InvalidOperationException("Attempt to run assessment without a code runner"); } if (CompiledCode == null || CompiledCode.HasValue == false) { throw new InvalidOperationException("Attempt to run assessment without any compiled code"); } StringBuilder console = new StringBuilder(); void OnConsoleWrite(object sender, ConsoleWriteEventArgs e) { if (ShowScriptRunning) { WriteToConsole(e.Message); } console.Append(e.Message); } CodeRunner.ConsoleWrite += OnConsoleWrite; try { await CodeRunner.RunAsync(CompiledCode.Value, new PreProgrammedTextReader(ConsoleInText)); } finally { CodeRunner.ConsoleWrite -= OnConsoleWrite; } return(CheckResult(console.ToString())); }