コード例 #1
0
        public void EthalonSolutions_for_Exercises(ExerciseSlide slide)
        {
            var solution = slide.Exercise.Solution.BuildSolution(slide.Exercise.EthalonSolution);

            if (solution.HasErrors)
            {
                FailOnError(slide, solution);
            }
            else
            {
                var submission = new RunnerSubmition()
                {
                    Code    = solution.SourceCode,
                    Id      = slide.Id,
                    Input   = "",
                    NeedRun = true
                };
                var result        = SandboxRunner.Run(submission);
                var output        = result.GetOutput().NormalizeEoln();
                var isRightAnswer = output.NormalizeEoln().Equals(slide.Exercise.ExpectedOutput.NormalizeEoln());
                if (!isRightAnswer)
                {
                    Assert.Fail("mistake in: " + slide.Info.UnitName + " - " + slide.Title + "\n" +
                                "\tActualOutput: " + output + "\n" +
                                "\tExpectedOutput: " + slide.Exercise.ExpectedOutput.NormalizeEoln() + "\n" +
                                "\tCompilationError: " + result.CompilationOutput + "\n" +
                                "\tSourceCode: " + solution.SourceCode + "\n\n");
                }
            }
        }
コード例 #2
0
        private static RunningResults GetDetails(string code, string input)
        {
            var model = new RunnerSubmition
            {
                Id      = Guid.NewGuid().ToString(),
                Code    = code,
                Input   = input,
                NeedRun = true
            };

            var result = new SandboxRunner(model).Run();

            Assert.IsNotNull(result);
            return(result);
        }
コード例 #3
0
ファイル: SandboxRunner.cs プロジェクト: ALVirtualTech/uLearn
 public static RunningResults Run(RunnerSubmition submission)
 {
     try
     {
         return(new SandboxRunner(submission).Run());
     }
     catch (Exception ex)
     {
         return(new RunningResults
         {
             Id = submission.Id,
             Verdict = Verdict.SandboxError,
             Error = ex.ToString()
         });
     }
 }
コード例 #4
0
        private static RunSolutionResult GetRunResult(ExerciseBlock exercise, string code)
        {
            var buildResult = exercise.Solution.BuildSolution(code);

            if (buildResult.HasErrors)
            {
                return new RunSolutionResult {
                           IsCompileError = true, CompilationError = buildResult.ErrorMessage, ExecutionServiceName = "uLearn"
                }
            }
            ;
            if (buildResult.HasStyleIssues)
            {
                return new RunSolutionResult {
                           IsStyleViolation = true, CompilationError = buildResult.StyleMessage, ExecutionServiceName = "uLearn"
                }
            }
            ;
            var solution   = buildResult.SourceCode;
            var submission = new RunnerSubmition
            {
                Code    = solution,
                Id      = Utils.NewNormalizedGuid(),
                Input   = "",
                NeedRun = true
            };
            var result = SandboxRunner.Run(submission);

            return(new RunSolutionResult
            {
                IsRightAnswer = result.Verdict == Verdict.Ok && result.GetOutput().NormalizeEoln() == exercise.ExpectedOutput.NormalizeEoln(),
                ActualOutput = result.GetOutput().NormalizeEoln(),
                CompilationError = result.CompilationOutput,
                ExecutionServiceName = "this",
                IsCompileError = result.Verdict == Verdict.CompilationError,
                ExpectedOutput = exercise.ExpectedOutput.NormalizeEoln()
            });
        }
コード例 #5
0
ファイル: SandboxRunner.cs プロジェクト: ALVirtualTech/uLearn
 public SandboxRunner(RunnerSubmition submission)
 {
     _submission = submission;
     _result.Id  = submission.Id;
 }