private bool IsRightAnswer(RunningResults result, string output, AbstractExerciseBlock exerciseBlock) { if (result.Verdict != Verdict.Ok) { return(false); } /* For sandbox runner */ if (exerciseBlock == null) { return(false); } if (exerciseBlock.ExerciseType == ExerciseType.CheckExitCode) { return(true); } if (exerciseBlock.ExerciseType == ExerciseType.CheckOutput) { var expectedOutput = exerciseBlock.ExpectedOutput.NormalizeEoln(); return(output.Equals(expectedOutput)); } throw new InvalidOperationException($"Unknown exercise type for checking: {exerciseBlock.ExerciseType}"); }
private static RunSolutionResult GetRunResult(AbstractExerciseBlock exercise, string code) { var buildResult = exercise.BuildSolution(code); if (buildResult.HasErrors) { return new RunSolutionResult { IsCompileError = true, ErrorMessage = buildResult.ErrorMessage, ExecutionServiceName = "uLearn" } } ; var result = SandboxRunner.Run(exercise.CreateSubmission(Utils.NewNormalizedGuid(), code)); var runSolutionResult = new RunSolutionResult { IsRightAnswer = exercise.IsCorrectRunResult(result), ActualOutput = result.GetOutput()?.NormalizeEoln() ?? "", ErrorMessage = result.CompilationOutput, ExecutionServiceName = "course.exe", IsCompileError = result.Verdict == Verdict.CompilationError, ExpectedOutput = exercise.ExpectedOutput?.NormalizeEoln() ?? "", SubmissionId = 0, }; if (buildResult.HasStyleErrors) { runSolutionResult.IsStyleViolation = true; runSolutionResult.StyleMessage = string.Join("\n", buildResult.StyleErrors.Select(e => e.GetMessageWithPositions())); } return(runSolutionResult); }
public static string ValidateBlock(AbstractExerciseBlock exBlock) { var valOut = new StringBuilder(); var val = BuildValidator(BuildSlide(exBlock), valOut); val.ValidateExercises(); return(valOut.ToString()); }