Esempio n. 1
0
        public CheckTaskResponse CheckCode(CheckTaskRequest request, ConfigurationPaths paths)
        {
            CheckTaskResponse answer = new CheckTaskResponse()
            {
                Id = request.Id, Result = true
            };

            if (request.Code == null)
            {
                answer.Message = "Please, enter your code";
                answer.Result  = false;
                return(answer);
            }

            Compiler = new CodeCompiler();

            try
            {
                Compiler.CreateCs(paths.CsFilePath, "test", request.Code);
                ProcessResultModel result = Compiler.CompileProgram(paths.CompilerPath, paths.CsFilePath);

                if (result.ExitCode != 0)
                {
                    answer.Result  = false;
                    answer.Message = result.Result.Substring(371, result.Result.Length - 371);
                    return(answer);
                }

                SetTests(request.Id, paths);
                //answer.Message = "Running tests: \n";

                for (int i = 0; i < TestValues.Length && i < TestResults.Length; i++)
                {
                    var res = RunTest(TestValues[i], TestResults[i], paths.CsFilePath);
                    answer.Message += "\nTest № " + (i + 1).ToString();
                    if (res.ExitCode != 0)
                    {
                        answer.Result = false;
                    }
                    answer.Message += res.Result;
                }

                Compiler.DeleteFiles(paths.CsFilePath);
            }
            catch (Exception e)
            {
                answer.Result  = false;
                answer.Message = e.Message;
                return(answer);
            }

            return(answer);
        }
Esempio n. 2
0
        // Running test on users code
        public ProcessResultModel RunTest(string testValues, string expectation, string programPath)
        {
            var runExe = Compiler.RunExe(programPath, testValues);

            ProcessResultModel result = new ProcessResultModel()
            {
                Result = runExe.Result.Trim()
            };

            if (result.Result.CompareTo(expectation) == 0)
            {
                result.ExitCode = 0;
                result.Result   = " Passed\nTest Values: " + testValues + "\nExpected Output: " + expectation + "\nOutput: " + runExe.Result + "\n";
            }
            else
            {
                result.ExitCode = 1;
                result.Result   = " Didn't Pass\nTest Values: " + testValues + "\nExpected Output: " + expectation + "\nOutput: " + runExe.Result + "\n";
            }

            return(result);
        }