Exemple #1
0
        public async Task <CodeEvaluationDTO> EvaluateCodeQualityAsync(string[] sourceCode)
        {
            var payload = new CodeSubmissionDTO {
                SourceCode = sourceCode, LearnerId = 1
            };
            var request = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");

            var response = await _httpClient.PostAsync(_baseUrl + "code-analysis/", request);

            var content = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <CodeEvaluationDTO>(content));
        }
Exemple #2
0
        public void Evaluates_code_quality(CodeSubmissionDTO submission, CodeEvaluationDTO expectedEvaluation)
        {
            using var scope = _factory.Services.CreateScope();
            var controller = new QualityAnalysisController(_factory.Services.GetRequiredService <IMapper>(), scope.ServiceProvider.GetRequiredService <ICodeQualityAnalyzer>());

            var evaluation = ((OkObjectResult)controller.Evaluate(submission).Result).Value as CodeEvaluationDTO;

            var actualLOs   = evaluation.LearningObjects.Select(lo => lo.Id);
            var expectedLOs = expectedEvaluation.LearningObjects.Select(lo => lo.Id);

            actualLOs.Count().ShouldBe(expectedLOs.Count());
            actualLOs.All(expectedLOs.Contains).ShouldBeTrue();
            var actualAffectedSnippets   = evaluation.CodeSnippetIssueAdvice.Keys.ToList();
            var expectedAffectedSnippets = expectedEvaluation.CodeSnippetIssueAdvice.Keys.ToList();

            actualAffectedSnippets.Count().ShouldBe(expectedAffectedSnippets.Count());
            actualAffectedSnippets.All(expectedAffectedSnippets.Contains).ShouldBeTrue();
        }
        public ActionResult <CodeEvaluationDTO> Evaluate([FromBody] CodeSubmissionDTO codeSubmission)
        {
            var evaluation = _qualityAnalyzerService.EvaluateCode(_mapper.Map <CodeSubmission>(codeSubmission));

            return(Ok(_mapper.Map <CodeEvaluationDTO>(evaluation)));
        }