Esempio n. 1
0
        public List <String> TryToFixSubmission(Submission2 submission, List <String> testCasesList,
                                                List <Core.Transformation> transformationsList)
        {
            List <String> fixedCodesList = new List <String>();

            for (int i = 0; i < transformationsList.Count; i++)
            {
                try
                {
                    var transformation     = transformationsList[i];
                    var generatedCodesList = refazer.Apply(transformation, submission.Code).ToList();

                    if (generatedCodesList.Count > 15)
                    {
                        generatedCodesList = generatedCodesList.GetRange(0, 20);
                    }

                    foreach (var code in generatedCodesList)
                    {
                        Tuple <bool, List <String> > testResult = RunPythonTest.
                                                                  Execute(testCasesList, code);

                        if (testResult.Item1)
                        {
                            fixedCodesList.Add(code);
                            break;
                        }
                    }

                    if (!fixedCodesList.IsEmpty())
                    {
                        break;
                    }
                }
                catch (Exception e)
                {
                    Trace.TraceError("Could not apply transformations because " + e.Message);
                }
            }

            return(fixedCodesList);
        }
Esempio n. 2
0
        public IHttpActionResult FixSubmission(Submission2 submission)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Attempt attempt = new Attempt();

            attempt.EndPoint      = submission.EndPoint;
            attempt.SubmittedCode = submission.Code;

            List <String> testCasesList = db.Assignments.Find(
                submission.EndPoint).getTestCasesAsList();

            Tuple <bool, List <String> > testResult = RunPythonTest.
                                                      Execute(testCasesList, submission.Code);

            attempt.LogsList    = testResult.Item2;
            attempt.PassedTests = testResult.Item1;

            if (attempt.PassedTests)
            {
                return(Ok(attempt));
            }

            RefazerOnline refazerOnline = RefazerOnline.Instance;

            if (!refazerOnline.IsAvailableFor(submission.KeyPoint()))
            {
                attempt.FixedCodeList = WakeUpRefazerOnDemand(
                    refazerOnline, submission, testCasesList);
                return(Ok(attempt));
            }

            attempt.FixedCodeList = refazerOnline.
                                    TryToFixSubmission(submission, testCasesList);

            return(Ok(attempt));
        }
Esempio n. 3
0
        private void BtnTestPython_Click(object sender, RoutedEventArgs e)
        {
            RunPythonTest rptWindow = new RunPythonTest();

            rptWindow.Show();
        }