/// <summary> /// Executes a code job to grade the question. /// </summary> protected override async Task <CodeJobResult> ExecuteJobAsync(CodeQuestionSubmission submission) { return(await CodeRunnerService.ExecuteClassJobAsync ( new ClassJob() { ClassesToImport = Question.ImportedClasses ?.Select(importedClass => importedClass.ClassName) ?.ToList() ?? new List <string>(), ClassName = Question.ProgramClassName, FileContents = submission.Contents.Replace("%", "%%"), LineNumberOffset = 0, Tests = Question.Tests.Select ( (test, index) => new ClassTest() { TestName = GetCodeTestName(test), ReturnType = "void", MethodBody = $"{Question.ProgramClassName}.main(new String[] {{{string.Join(",", GetCommandLineArgs(test, includeQuotes: true))}}});" } ).ToList() } )); }
/// <summary> /// Executes a code job to grade the question. /// </summary> protected override async Task <CodeJobResult> ExecuteJobAsync(CodeQuestionSubmission submission) { return(await CodeRunnerService.ExecuteClassJobAsync ( new ClassJob() { ClassesToImport = Question.ImportedClasses ?.Select(importedClass => importedClass.ClassName) ?.ToList() ?? new List <string>(), ClassName = Question.ClassName, FileContents = GetFileTemplateWithSubmission(submission) .Replace("%", "%%"), LineNumberOffset = -GetLineNumberOffset(), Tests = Question.Tests.Select ( test => new ClassTest() { TestName = GetCodeTestName(test), ReturnType = test.ReturnType, MethodBody = test.MethodBody } ).ToList() } )); }