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}");
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        public static string ValidateBlock(AbstractExerciseBlock exBlock)
        {
            var valOut = new StringBuilder();
            var val    = BuildValidator(BuildSlide(exBlock), valOut);

            val.ValidateExercises();
            return(valOut.ToString());
        }