Exemple #1
0
        public async Task <OjResult> PendCode(string uuid, string code, OjTestCaseSet ojTestCaseSet)
        {
            try
            {
                var a = await _compiler.Compile(uuid, code);

                var instance = a.CreateInstanceByClassName("Solution");
                var method   = a.GetMethodByNames("Solution", ojTestCaseSet.MethodName);

                var successes = await _executor.Execute(new ExecutableData
                {
                    Instance        = instance,
                    Method          = method,
                    ExpectedResults = ojTestCaseSet.CastExpectedReturnValues(),
                    Params          = ojTestCaseSet.CastParamsToObjects(),
                });

                var cases       = ojTestCaseSet.Params.Length;
                var pass        = cases == successes;
                var successRate = 100 * successes * 1.0 / cases;
                return(new OjResult
                {
                    Pass = pass,
                    Pending = false,
                    SuccessRate = successRate,
                    Failed = false,
                });
            }
            catch (Exception e)
            {
                return(new OjResult
                {
                    Pass = false,
                    Failed = true,
                    Pending = false,
                    Info = e.Message
                });
            }
            finally
            {
                _compiler.UnloadAssembly(uuid);
            }
        }
Exemple #2
0
        public async Task <bool> UploadOj(OjTestCaseSet ojTestCaseSet)
        {
            if (!ojTestCaseSet.IsValidTestSet())
            {
                return(false);
            }

            var question = new OjQuestion
            {
                Content    = ojTestCaseSet.Content,
                CreateTime = DateTime.Now,
                Difficulty = ojTestCaseSet.Difficulty,
                Title      = ojTestCaseSet.Title,
                Code       = ojTestCaseSet.OjCode
            };
            var testCaseTable = new OjTestCaseTable
            {
                TestCaseSetJson = JsonConvert.SerializeObject(ojTestCaseSet)
            };
            await ojDao.UploadOj(question, testCaseTable);

            return(true);
        }
Exemple #3
0
 public async Task <bool> UploadOj([FromBody] OjTestCaseSet ojTestCaseSet)
 {
     return(await uploadService.UploadOj(ojTestCaseSet));
 }